연재 시리즈

테라폼 시리즈 16편. route table 생성

악분 2022. 10. 26. 21:17
반응형

목표

테라폼으로 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개로 잘 설정되었습니다.

반응형