안녕하세요. 오늘에만 벌써 2번째 포스팅이네요.
사실 다음에 쓰려고 했는데, 공부하다 보니 Terraform Module이 있는 것을 확인하였습니다.
Module? 과연 얼마나 편리할까 의심했었는데요.
VPC Module을 이용하여 좀더 단순하고 간단하게 VPC 생성을 완료할 수 있었습니다.
VPC Module에 대한 레퍼런스는 아래 링크를 참조 부탁드립니다.
https://registry.terraform.io/modules/terraform-aws-modules/vpc/aws/2.15.0
이전 포스트에서 작성한 코드는 여기를 보시면 됩니다.
모듈을 사용하여 만든 코드를 볼까요?
module "vpc" {
source = "terraform-aws-modules/vpc/aws" #사용할 Module 지정
version = "2.15.0" #Module 버전 지정
name = "vpc" #VPC 이름 지정
cidr = "10.0.0.0/16" #IPv4 CIDR
azs = ["ap-northeast-2a", "ap-northeast-2c"] #가용영역 지정
public_subnets = ["10.0.10.0/24", "10.0.20.0/24"] #공개 서브넷
private_subnets = ["10.0.11.0/24", "10.0.21.0/24"] #비공개 서브넷
database_subnets = ["10.0.12", "10.0.22.0/24"] #데이터베이스 서브넷
enable_nat_gateway = true #NAT Gateway 활성
single_nat_gateway = true #단일 NAT Gateway 설정
one_nat_gateway_per_az = false #단일 NAT 설정 시 false로 비활성화
create_database_subnet_group = true #RDS용 서브넷 구성
create_database_subnet_route_table = true #RDS용 서브넷의 라우팅 테이블 구성
create_database_internet_gateway_route = true #RDS용 라우팅 테이블에 인터넷 게이트웨이 연결 설정 여부
enable_dns_hostnames = "true" #DNS Hostname Enable
enable_dns_support = "true" #DNS Support Enable
tags = { "TerraformManaged" = "true" } #태그 설정
}
모듈 설치에 필요한 코드부터 가용 영역, 서브넷 설정, 라우팅 테이블, 라우팅 테이블에 서브넷 연결까지 모든 작업이 26줄의 코드로 마무리됩니다.
또한 단일 NAT Gateway 구성과 데이터베이스 서브넷, RDS용 서브넷 구성 또한 포함되어 있습니다.
그 외 특징으로는 tags = { "TerraformManaged" = "true" }는 스마트하게 Tag 설정을 지원해줘서, 리소스를 확인할 때 편리합니다.
Module을 사용하고 보니 좀 허무할 정도로 쉽게 구성이 돼서, 많이 놀랐습니다.
다만 Module 관련된 정보들이 생각보다 적어서, 문법 때문에 고생을 좀 했습니다.
본 코드는 제 Github를 통해서도 공개되고 있습니다.
https://github.com/teichae/terraform/tree/network
저도 사용한 지 오래된 툴은 아니지만 궁금하신 점 남겨주시면 최대한 답변할 수 있도록 하겠습니다.
다음 포스팅에 만나요~