CloudNet@ 팀의 가시다님께서 Leading 하시는 Terraform T101 Study 내용 요약
해당 Terraform Study 는 Terraform Up and Running 책을 기반으로 진행 중입니다.
이번에는 Default VPC 가 아닌 원하는 VPC 생성해보자.
이후 생성한 VPC 에 리소스를 배포할 예정이다.
1. Architecture
2. VPC를 위한 vpc.tf 파일 생성
이처럼 특정 리소스만을 위한 tf 파일을 분리할 수 있다.
- 아래의 리소스는 모두 같은 vpc.tf 파일 안에 있는 코드지만 블로그에서는 가독성을 위해 구분해놓았다.
2.1. vpc 생성
provider "aws" {
region = "ap-northeast-2"
}
resource "aws_vpc" "scott_vpc" {
// 생성할 VPC의 범위 지정
cidr_block = "10.10.0.0/16"
enable_dns_support = true
enable_dns_hostnames = true
tags = {
Name = "terraform-study"
}
}
2.2. Internet Gateway 생성
resource "aws_internet_gateway" "scott_igw" {
vpc_id = aws_vpc.scott_vpc.id
tags = {
Name = "terraform-igw"
}
}
2.3. Subnet 생성
resource "aws_subnet" "scott_subnet_01" {
vpc_id = aws_vpc.scott_vpc.id
cidr_block = "10.10.1.0/24"
availability_zone = "ap-northeast-2a"
map_public_ip_on_launch = true
tags = {
Name = "terraform-subnet-01"
}
}
resource "aws_subnet" "scott_subnet_02" {
vpc_id = aws_vpc.scott_vpc.id
cidr_block = "10.10.2.0/24"
availability_zone = "ap-northeast-2c"
map_public_ip_on_launch = true
tags = {
Name = "terraform-subnet-02"
}
}
2.4. Route Table 생성
resource "aws_route_table" "scott_rt" {
vpc_id = aws_vpc.scott_vpc.id
tags = {
Name = "terraform-rt"
}
}
resource "aws_route_table_association" "scott_rt_association_01" {
subnet_id = aws_subnet.scott_subnet_01.id
route_table_id = aws_route_table.scott_rt.id
}
resource "aws_route_table_association" "scott_rt_association_02" {
subnet_id = aws_subnet.scott_subnet_02.id
route_table_id = aws_route_table.scott_rt.id
}
resource "aws_route" "scott_default_route" {
route_table_id = aws_route_table.scott_rt.id
destination_cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.scott_igw.id
}
2.5. vpc.tf 배포
terraform init && terraform plan && terraform apply -auto-approve
3. 리소스 생성 확인
- terraform.tfstate 파일을 참조하여 현재 배포된 리소스 확인 가능
terraform state list
실습 진행 후에는 반드시 리소스를 삭제하자!
terraform destroy -auto-approve
다음 글에서는 이번에 생성한 VPC에 Auto Scaling Group 과 Load Balancer 를 배포해보겠다.