이 내용은 CloudNet@ 에서 진행하는 테라폼 기초 입문 스터디에 대한 연재글입니다.
스터디에서 사용하는 교재는 Terraform Up & Running 2nd Edition 입니다.
아래에서 2주차 스터디 내용을 공유합니다.
교재의 2장 중, 코드내용 중 VPC 환경을 만들고 ASG/ELB 구축을 테라폼으로 진행합니다. 이와 함께 상태관리에 대해 다룹니다.
아래 도식의 환경을 코드로 구성합니다:
예시코드는 아래 경로를 참고해 주세요.
코드에 대한 설명은 다음과 같습니다:
required01_vpc.tf
required01_sg.tf
required01_ec.tf
aws_instance
선언 시, ami
config을 수정하며 상기 데이터 소스 블록의 값을 사용했습니다.예시코드에 있는 내용 중, data
로 시작하는 구문은, 데이터 소스 블록을 의미합니다. 이는 아래와 같습니다:
aws_ami
의 데이터 소스 블록은 이런 내용을 가지고 있습니다.data.<provider>.<name>.<attribute>
과 같은 방식으로 호출해올 수 있습니다.데이터 소스 블록을 사용하는 방법은 아래와 같습니다:
data "<PROVIDER>_<TYPE>" "<NAME>" {
[CONFIG …]
}
- PROVIDER :
aws
같은 공급자의 이름- TYPE :
vpc
같은 사용하려는 데이터 소스의 유형- NAME : 테라폼 코드에서 이 데이터 소스를 참조하는 데 사용할 수 있는 식별자
- CONFIG : 해당 데이터 소스에 고유한 하나 이상의 인수로 구성됩니다.
- 아래의 예시는
aws_vpc
데이터 소스를 사용하여 기본 VPC(default vpc)의 데이터를 사용하는 구문입니다.
이런 방식으로 호출할 수 있지요:
data "aws_ami" "s3ich4n-chapter02-ex01-amazonlinux2" {
most_recent = true
filter {
name = "owner-alias"
values = ["amazon"]
}
filter {
name = "name"
values = ["amzn2-ami-hvm-*-x86_64-ebs"]
}
owners = ["amazon"]
}
resource "aws_instance" "s3ich4n-chapter02-ex01-ec2" {
ami = data.aws_ami.s3ich4n-chapter02-ex01-amazonlinux2.id
(중략)
}
이제 VPC 환경에서 ALB, ASG를 추가한 환경을 구축해보겠습니다. 도식은 아래와 같습니다:
예시코드는 아래 경로를 참고해 주세요.
구축에 앞서 ALB와 ASG, 그리고 이 둘을 함께 사용하려면 어떻게 해야하는지에 대해 살펴보겠습니다.
AWS의 ASG(Auto Scaling Groups)를 의미합니다. EC2 인스턴스의 자동적인 스케일링, 관리를 위해 논리적인 그룹으로 묶는 기능을 수행합니다.
ASG는 시작 구성정보를 참고하여 인스턴스를 생성하는데, 재배포를 한다면 시작구성을 변경할 수 없습니다.
lifecycle
) 설정을 추가해야 합니다.
create_before_destroy
설정을 이 때 사용합니다.AWS ALB(Application Load Balancer)를 의미합니다. 둘 이상의 AZ(Availability Zone, 가용 영역)에서 EC2, 컨테이너, IP 주소 등에 대해 들어오는 트래픽을 자동으로 분산하는 역할을 수행합니다.
→ 트래픽을 분산시키고, 외부에 노출시키는 IP 주소를 단일화합니다.
ALB의 주요 구성에 대해 알아보겠습니다:
FYI, AWS에서는 로드 밸런싱을 위한 여러 서비스가 존재합니다.
ASG, ALB를 함께 사용하려면?
제 2장에서는 테라폼을 사용하여 기본적인 환경구축을 수행하는 방법에 대해 배웠습니다. 또한 데이터 소스 블록에 대한 내용을 학습했습니다. 아래 내용을 반드시 기억하셨으면 좋겠습니다.
이것으로 제 2장을 마칩니다. 긴 글 읽어주셔서 감사합니다.