AWS/Terraform / / 2023. 7. 13. 22:20

[AWS Terraform 기초]17. Launch Template(시작 템플릿) 생성

반응형

Auto Scaling에 사용될 시작 템플릿 생성

 

1. Terraform Docs 예시

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/launch_template

 

Terraform Registry

 

registry.terraform.io

 

 

예시:

 

 

인수 등:

 

 

2. Terraform 코드 작성

 

# 16_lantemp.tf
resource "aws_launch_template" "pmh_lantemp" {
  name = "pmh-lantemp"
  block_device_mappings {
    device_name = "/dev/sdf"
    ebs {
      volume_size = 10
      volume_type = "gp2"
    }
  }
  image_id = aws_ami_from_instance.pmh_ami.id
  instance_type = "t2.micro"
  key_name = "pmh-key"
  vpc_security_group_ids = [aws_security_group.pmh_sg.id]
  tag_specifications {
    resource_type = "instance"
    tags = {
        Name = "pmh-temp"
    }
  }
}

 

resource "aws_ami_from_instance" "pmh_ami"

pmh_ami 라는 이름의 이미지 생성

 

resource "aws_launch_template" "pmh_lantemp"

pmh_lantemp라는 이름의 시작 템플릿 생성


name = "pmh-lantemp"

생성될 시작 템플릿의 이름 설정

 

block_device_mappings

AMI에서 지정한 볼륨 외에 인스턴스에 연결할 볼륨을 지정

-> /dev/sdf 장치에 EBS(Elastic Block Store)를 연결

1. EBS가 연결될 장치 이름을 /dev/sdf로 설정
2. EBS 볼륨의 크기를 10GB로 설정
3. EBS 볼륨의 유형을 "gp2"로 설정


image_id = aws_ami_from_instance.pmh_ami.id

시작 템플릿에 사용할 AMI의 ID를 지정

(앞서 만들었던 AMI의 id)

 

instance_type = "t2.micro"

인스턴스의 유형을 "t2.micro"로 설정


key_name = "pmh-key"

SSH 키 페어의 이름 설정


vpc_security_group_ids = [aws_security_group.pmh_sg.id]

인스턴스에 할당할 보안 그룹의 ID를 지정

(앞서 만들었던 보안 그룹의 id)

 

tag_specifications

인스턴스에 대한 태그를 지정

1. 리소스 유형을 "instance"로 설정
2. "Name" 태그를 "pmh-temp:로 설정

 

 

3. Terraform 분석 및 적용

 

terraform 파일이 있는 위치에서 아래 명령어 실행

 

# 변경 사항 검토 및 확인
terraform plan

# (대화형 승인 없이)변경 사용항 적용
terraform apply -auto-approve

 

4. 결과

 

+ 변수처리하는 방법

 

tag 변수 파일 생성

# var.tf
variable "tag" {
  type        = string
  default     = "pmh"
}

 

# 16_lantemp.tf
resource "aws_launch_template" "pmh_lantemp" {
  name = "${var.tag}-lantemp"
  block_device_mappings {
    device_name = "/dev/sdf"
    ebs {
      volume_size = 10
      volume_type = "gp2"
    }
  }
  image_id = aws_ami_from_instance.pmh_ami.id
  instance_type = "t2.micro"
  key_name = "${var.tag}-key"
  vpc_security_group_ids = [aws_security_group.pmh_sg.id]
  tag_specifications {
    resource_type = "instance"
    tags = {
        Name = "${var.tag}-temp"
    }
  }
}

 

 

 

 
반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유