terraform으로 인터넷 게이트웨이, 루트 테이블 만들기
마지막까지의 개요
terraform으로 VPC, 서브넷 만들기
htps : // 이 m/쌕시_이/있어 ms/f4f65에18923d856베256
환경
목표 아티팩트 (이 기사에서는 인터넷 게이트웨이와 라우팅 테이블 만들기)
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.tfresource "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
를 지정하는 것만으로 작성할 수 있습니다.
루트 테이블
루트 테이블을 작성할 때는 다음의 작성이 필요합니다.
아티팩트 코드는 아래 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.tfresource "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
를 지정하는 것만으로 작성할 수 있습니다.
루트 테이블
루트 테이블을 작성할 때는 다음의 작성이 필요합니다.
├─ 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 해설
vpc_id
를 지정하기만 하면 됩니다. 이름을 붙이고 싶으면 tags
로 Name
를 지정합니다.aws_route_table_association 해설
route_table_id
와 subnet_id
를 지정하여 라우팅 테이블과 서브넷을 연결합니다.자신이 기재한 프로그램에서는
count
를 지정해 루프로 작성하고 있습니다.element
는 terraform
가 준비하고 있는 함수로 문법은 아래와 같습니다.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
Reference
이 문제에 관하여(terraform으로 인터넷 게이트웨이, 루트 테이블 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sasshi_i/items/5edabca4fbaae7d4a833
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
terraform으로 VPC, 서브넷 만들기
htps : // 이 m/사시_이/있어 ms/f4f65에 18923d856베 256
tfenv를 이용한 terraform 설치 방법
htps : // 이 m/사시_이/있어 ms/b5117d51후 d800후6b09
Reference
이 문제에 관하여(terraform으로 인터넷 게이트웨이, 루트 테이블 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sasshi_i/items/5edabca4fbaae7d4a833텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)