terraform으로 인터넷 게이트웨이, 루트 테이블 만들기

마지막까지의 개요



terraform으로 VPC, 서브넷 만들기
htps : // 이 m/쌕시_이/있어 ms/f4f65에18923d856베256

환경


  • macOS Mojave 10.14.5
  • MacBook Pro, 13-inch, Early 2015
  • terraform v0.12.0
  • direnv 2.20.1

  • 목표 아티팩트 (이 기사에서는 인터넷 게이트웨이와 라우팅 테이블 만들기)





    github 저장 위치



    아티팩트 코드는 아래 github의 리포지토리에 저장됩니다.
    htps : // 기주 b. 코 m / 사시이 / 테라 후 rm_에 c2_rds

    # 디렉토리 구성


    ├─ envs
    │    ├─ prod
    │    │   ├─ backend.tf
    │    │   ├─ main.tf
    │    │   └─ variables.tf
    │    │
    │    └─ staging
    │        ├─ backend.tf
    │        ├─ main.tf
    │        └─ variables.tf
    ├─ modules
    │    ├─ provider
    │    │   └─ main.tf
    │    └─ vpc
    │        └─ main.tf
    ├─ .envrc
    ├─ .gigtgnore
    └─READNE.md
    

    이번에 추가한 프로그램



    /modules/vpc/main.tf
    resource "aws_internet_gateway" "qiita_igw" {
      vpc_id = aws_vpc.qiita_vpc.id
      tags = {
        Name = "igw-${var.stage}"
      }
    }
    
    resource "aws_route_table" "qiita_rtb_public" {
      vpc_id = aws_vpc.qiita_vpc.id
      tags = {
        Name = "rtb-${var.stage}-public"
      }
    }
    
    resource "aws_route_table_association" "qiita_rtb_assoc_pblic" {
      count          = 2
      route_table_id = aws_route_table.qiita_rtb_public.id
      subnet_id      = element([aws_subnet.qiita_subnet_1a[0].id, aws_subnet.qiita_subnet_1b[0].id], count.index)
    }
    
    resource "aws_route" "qiita_route_igw" {
      route_table_id         = aws_route_table.qiita_rtb_public.id
      destination_cidr_block = "0.0.0.0/0"
      gateway_id             = aws_internet_gateway.qiita_igw.id
      depends_on             = [aws_route_table.qiita_rtb_public]
    }
    
    resource "aws_route_table" "qiita_rtb_private" {
      vpc_id = aws_vpc.qiita_vpc.id
      tags = {
        Name = "rtb-${var.stage}-private"
      }
    }
    
    resource "aws_route_table_association" "qiita_rtb_assoc_private" {
      count          = 2
      route_table_id = aws_route_table.qiita_rtb_private.id
      subnet_id      = element([aws_subnet.qiita_subnet_1a[1].id, aws_subnet.qiita_subnet_1b[1].id], count.index)
    }
    

    프로그램 해설



    인터넷 게이트웨이(IGW)



    AWS의 리소스를 인터넷에 연결하려면 인터넷 게이트웨이가 필요합니다.vpc_id 를 지정하는 것만으로 작성할 수 있습니다.

    루트 테이블



    루트 테이블을 작성할 때는 다음의 작성이 필요합니다.
  • 루트 테이블->aws_route_table
  • 라우팅 테이블과 서브넷 연결 -> aws_route_table_association
  • IGW로의 라우팅 (서브넷을 인터넷에 연결하고 싶은 경우) -> aws_route

  • aws_route_table 해설


    vpc_id 를 지정하기만 하면 됩니다. 이름을 붙이고 싶으면 tagsName 를 지정합니다.

    aws_route_table_association 해설


    route_table_idsubnet_id 를 지정하여 라우팅 테이블과 서브넷을 연결합니다.
    자신이 기재한 프로그램에서는 count 를 지정해 루프로 작성하고 있습니다.elementterraform 가 준비하고 있는 함수로 문법은 아래와 같습니다.
    element(list, index)
    

    list로부터 index 번째의 요소를 취득합니다.

    aws_route 해설


    destination_cidr_block 에서 대상을 지정합니다. 이번에는 모든 IP 주소 범위를 인터넷에 연결하기 위해 0.0.0.0/0를 지정하고 있습니다.
    또한 depends_on 에서 종속성을 만들 수 있습니다. aws_route_table 가 존재하지 않는 경우는 aws_route 는 존재할 수 없기 때문에, aws_route 를 지정하고 있습니다.

    이상! terraform apply 그러면 AWS에 리소스가 생성됩니다.

    결과



    안전한 루트 테이블이 생성되었습니다.

    qiita_rtb_public




    qiita_rtb_private




    관련 기사



    terraform으로 VPC, 서브넷 만들기
    htps : // 이 m/사시_이/있어 ms/f4f65에 18923d856베 256

    tfenv를 이용한 terraform 설치 방법
    htps : // 이 m/사시_이/있어 ms/b5117d51후 d800후6b09

    좋은 웹페이지 즐겨찾기