Terraform

[Terraform] Auto Scaling

KK_Ryong 2022. 3. 16. 09:52

provider "aws_ASG" {
    region = "ap-northeast-2" #사용 리전
}

## ASG 생성에 사용되는 launch configuration 생성 ##
resource "aws_launch_configuration" "launch_config" {
    name = "terraform-config"    # 지정하지 않을 경우 날짜로 입력
    image_id = "ami 넣기"      # EC2 OS image AMI
    instance_type = "instance_type 넣기" #타입
    security_groups = [aws_security_group.instance.id]  # 해당 SG 


lifecycle {
    create_before_destroy = true # 수명 주기 설정
    }
}

## 위 생성한 launch configuratio로 ASG 생성 ##
resource "aws_autoscaling_group" "ASG" {
    name = "terraform-asg"    
    launch_configuration = aws_launch_configuration.launch_config.name #위에 생성한 launch_configuration
    vpc_zone_identifier = Subnet.ID 적기  #적용 VPC_Subnet
    ###
    min_size = 1 #최소 생성
    max_size = 4 #최대 생성
    ###
    tag {
        key                 = "Name"
        value               = "terraform-asg-ec2" #ASG 태그
        propagate_at_launch = "true"
    }
}
###################  적용 VPC / subnet으로 적용 ################################# 

#aws_vpc 소스를 사용 하여 조회
data "aws_subnet_ids" "selected" {
    vpc_id = var.vpc_id #해당 VPC의 Subnet
}

data "aws_vpc" "selected" {
    id = var.vpc_id​  #VPC 
}
####################################################

##SG 적용##
resource "aws_security_group" "instance" {
    name = "ASG-SG"

    ingress {
    from_port      = var.server_port
    to_port        = var.server_port
    protocol       = "tcp"
    cidr_blocks    = ["0.0.0.0/0"]
    }

    tags = {
        Name = "ASG-sg"
    }
}