일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- AWS CodeDeploy
- aws기본
- aws terraform
- AWS 공격테스트
- cissp
- 직무분리
- 리눅스기초
- AWS배포자동화
- Cissp sdlc
- AWS구축
- AWS실습
- 쉘스크립트
- linux명령어
- terraform따라하기
- AWS CI/CD
- 리눅스명령어
- aws기초
- terraform with aws
- 최소권한
- 리눅스기초명령어
- aws따라하기
- 리눅스
- terraform기초
- aws
- 주피터노트북 설치
- GDPR
- opt/anaconda3/bin/jupyter_mac.command
- blue/green배포
- Linux
- terraform기본
ysuekkom의 IT study note
[terraform 기초] 라우팅테이블 설정하기 본문
지난 포스팅에서 생성한 VPC, Subnet(Public, Private), Internet Gateway, NAT Gateway을 도식화하면 아래와 같다.
*가상 네트워크인 VPC 내에 외부 연결을 허용하는 Public 서브넷과, 외부 노출 없이 내부적으로 통신하는 Private 서브넷은 보안 및 운영 효율/편의성의 이유로 반드시 나눠줘야 한다. Private Subnet의 경우, 외부에 IP가 노출되지않고 내부적으로 사용하기 때문에 외부 통신을 위해서는 별도 NAT 게이트웨이가 필요하다. Public Subnet에 위치하여 Private Subnet과 연결된 NAT 게이트 웨이(EIP가 반드시 필요함)를 통해 주소 변환을 해줘야하고, 외부로 나갈때는 Public Subnet과 연결된 IGW를 통해 나가게 된다!
테라폼을 사용한 코드로 작성된 인프라 구축1은 아래 포스팅을 참고하면 된다.
https://ysuekkom8915.tistory.com/25
이어서 이번 포스팅에서는 통신에 반드시 필요한 Route Table을 구성해보자
Route Table은 Source에서 Destination으로 가기위해 거쳐야할 경로를 담은 테이블이다. 고정 경로로 설정할 수 있고, 부하 분산을 적용한 경로 혹은 자원의 상태를 반영한 최적 경로 등 경로 설정방법은 다양하게 있다. 자세한 내용은 추후 반영하여 생성해보도록 하고
기초 내용을 담아 따라하는 포스팅이므로, 기본적으로 통신이 가능하게만 라우팅테이블을 생성해 보려고 한다.
**언급하지 않아도 실습이 종료된 상태에서 다시 시작 할 경우, 중지해뒀던 ec2인스턴스를 시작하고, 그 뒤 terminal 혹은 Mac사용자는 iterm2를 사용해 ssh 명령어로 ec2 인스턴스에 접속한 상태로 시작하는것을 전제로 한다.
기존에 작성했던 vpc.tf파일 편집을 통해 Route Table 생성을 작성해보자
resource "aws_route_table" "public"{
vpc_id = aws_vpc.main.id
tags = {
Name = "terraform-vpc-rt-public"
}
}
resource "aws_route_table" "private"{
vpc_id = aws_vpc.main.id
tags = {
Name = "terraform-vpc-rt-private"
}
}
AWS의 Route Table 리소스 명은 "aws_route_table"로 생성해주면 되고, public용과 private용 2개의 라우팅테이블을 생성해준다.
vpc.tf편집을 종료 한뒤, terraform plan으로 변경상태를 확인, terraform apply를 통해 리소스를 생성/적용 시켜준다.
aws console에서 확인한 각 public/private tags name별 라우팅테이브 확인
이렇게 생성한 라우팅테이블은 각 서브넷과 연결시켜주는 작업이 필요하다.
기존에 만들었던 Route Table에 맞춰서 서브넷 연결을 해준다.
서브넷 연결은 "aws_route_table_association" 리소스명을 사용하고, public subnet과 private subnet과 연결하기 위해 각각 선언해준다.
resource "aws_route_table" "public" {
vpc_id = aws_vpc.main.id
tags = {
Name = "terraform-vpc-rt-public"
}
}
resoure "aws_route_table_association" "route_table_association_public" {
subnet_id = aws_subnet.public_subnet.id
route_table_id = aws_route_table.public.id
}
resource "aws_route_table" "private" {
vpc_id = aws_vpc.main.id
tags = {
Name = "terraform-vpc-rt-private"
}
}
resoure "aws_route_table_association" "route_table_association_private" {
subnet_id = aws_subnet.private_subnet.id
route_table_id = aws_route_table.private.id
}
편집을 마치고, terraform plan / apply를 통해 자원 생성 완료하기
aws console에 접속하여 Subnet Association 생긴것 확인
라우팅 룰 연결하기
public과 private submet의 id에 맞춰서 라우팅 룰을 연결해준다
resource "aws_route_table" "public" {
vpc_id = aws_vpc.main.id
tags = {
Name = "terraform-vpc-rt-public"
}
}
resoure "aws_route_table_association" "route_table_association_public" {
subnet_id = aws_subnet.public_subnet.id
route_table_id = aws_route_table.public.id
}
resource "aws_route_table" "private" {
vpc_id = aws_vpc.main.id
tags = {
Name = "terraform-vpc-rt-private"
}
}
resource "aws_route" "public_igw" {
route_table_id = aws_route_table.public.id
destination_cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.igw.id
}
resoure "aws_route_table_association" "route_table_association_private" {
subnet_id = aws_subnet.private_subnet.id
route_table_id = aws_route_table.private.id
}
resource "aws_route" "private_nat" {
route_table_id = aws_route_table.private.id
destination_cidr_block = "0.0.0.0/0"
nat_gateway_id = aws_nat_gateway.nat_gateway.id
}
작성 후, terraform plan, terraform apply를 통해 리소스 적용해주기
라우팅 연결 apply 전
terraform apply
리소스에 룰 추가된 것 확인
라우팅 테이블을 생성하고, 라우팅 룰 연결까지 실습을 진행해보았다.
다음으로는 S3와 IAM에 대한 기본 이론과 실습셋팅을 해본 뒤 고도화까지 진행해보자!
'DevOps > terraform' 카테고리의 다른 글
[Terraform 따라하기] Terraform Backend 관리, remote state file & output으로 참조하기 (0) | 2023.04.27 |
---|---|
[Terraform 기초] S3 Bucket 및 IAM Role, Policy 생성하기 with AWS (0) | 2023.04.26 |
[terraform 따라하기] IaC로 AWS 인프라 구축하기 (0) | 2022.12.15 |