반응형
목표
테라폼으로 subnet route table을 생성합니다.
요구사항
- route table을 생성할 때, 첫 번째 단계(https://malwareanalysis.tistory.com/438)에서 생성한 vpc, subnet을 사용합니다.
- route table 규칙은 0.0.0.0/0으로 가는 트래픽은 Internet gateway로 가게 설정합니다. 첫 번째 단계에서 생성한 internet gateway를 사용합니다.
상세내용
테라폼은 aws route을 aws_route_table로 간단히 생성할 수 있습니다. route table을 생성하기 위해 vpc가 필요합니다.
resource "aws_route_table" "myrt" {
vpc_id = aws_vpc.myvpc.id
tags = {
Name = "t101-rt"
}
}
route table 생성은 테라폼 코드 한개로 되지만, 설정은 상황에 따라 코드가 여러 개 일 수 있습니다. 예를 들어 route table을 subnet에 연결하려면, route table 생성하는 코드와 subnet에 연결하는 코드가 필요합니다.
# 1. route table 생성
resource "aws_route_table" "myrt" {
vpc_id = aws_vpc.myvpc.id
tags = {
Name = "t101-rt"
}
}
# 2. route table을 subnet에 연결
resource "aws_route_table_association" "myrtassociation1" {
subnet_id = aws_subnet.mysubnet1.id
route_table_id = aws_route_table.myrt.id
}
route 규칙을 추가하려면 aws_route block을 사용하면 됩니다.
resource "aws_route" "mydefaultroute" {
route_table_id = aws_route_table.myrt.id
destination_cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.akbun-igw.id
}
결과적으로 route table의 테라폼 코드는 총 2종류입다.
- route table을 생성하는 코드
- route table을 설정하는 코드
코드 실행
전체 코드는 아래와 같습니다.
github 링크: https://github.com/sungwook-practice/terraform-study/blob/main/week2/route_table/vpc.tf
cat <<EOT > vpc.tf
provider "aws" {
region = "ap-northeast-2"
}
resource "aws_vpc" "akbun-vpc" {
cidr_block = "10.10.0.0/16"
enable_dns_support = true
enable_dns_hostnames = true
tags = {
Name = "t101-study"
}
}
resource "aws_subnet" "akbun-subnet1" {
vpc_id = aws_vpc.akbun-vpc.id
cidr_block = "10.10.1.0/24"
availability_zone = "ap-northeast-2a"
tags = {
Name = "t101-subnet1"
}
}
resource "aws_subnet" "akbun-subnet2" {
vpc_id = aws_vpc.akbun-vpc.id
cidr_block = "10.10.2.0/24"
availability_zone = "ap-northeast-2c"
tags = {
Name = "t101-subnet2"
}
}
resource "aws_internet_gateway" "akbun-igw" {
vpc_id = aws_vpc.akbun-vpc.id
tags = {
Name = "t101-igw"
}
}
# route table 생성
resource "aws_route_table" "akbun-rt" {
vpc_id = aws_vpc.akbun-vpc.id
tags = {
Name = "t101-rt"
}
}
# route table과 subnet 연결
resource "aws_route_table_association" "akubun-rt-association1" {
subnet_id = aws_subnet.akbun-subnet1.id
route_table_id = aws_route_table.akbun-rt.id
}
# route table과 subnet 연결
resource "aws_route_table_association" "akubun-rt-association2" {
subnet_id = aws_subnet.akbun-subnet2.id
route_table_id = aws_route_table.akbun-rt.id
}
# route 규칙 추가
resource "aws_route" "mydefaultroute" {
route_table_id = aws_route_table.akbun-rt.id
destination_cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.akbun-igw.id
}
EOT
terraform plan명령어로 틀린부분이 있는지 확인합니다. 그리고 terraform apply명령어로 테라폼 코드를 인프라에 반영합니다.
terraform plan && terraform apply -auto-approve
aws 대시보드에서 route tabe이 잘 생성되었는지 확인합니다.
route규칙을 확인하면 local route규칙과 internet gateway route규칙이 잘 설정되었습니다.
route table과 연결된 subnet도 총 2개로 잘 설정되었습니다.
반응형
'연재 시리즈' 카테고리의 다른 글
테라폼 시리즈 18편. auto scaling group생성 (0) | 2022.10.28 |
---|---|
테라폼 시리즈 17편. security group 생성 (0) | 2022.10.28 |
테라폼 시리즈 14편. Data block (0) | 2022.10.25 |
테라폼 시리즈 13편. 역할별로 tf파일 분리 (0) | 2022.10.25 |
테라폼 시리즈 15편. vpc, subnet, internetgateway 생성 (0) | 2022.10.25 |