terraform module 사용법(route table)

2021. 6. 1. 01:37Terraform

라우트테이블을 만들어보자.

 

라우트테이블에는 인터넷 게이트웨이를 연결시킬꺼고 cidr 을 0.0.0.0/0을 줄꺼다.

그리고 퍼블릭 서브넷을 연결시켜보자.

 

라우트테이블 모듈을 만들기 위해 모듈내에 라우트테이블 디렉터리를 만들어주자.

mkdir ~/test/module/rt

 

이렇게 디렉터리가 만들어졌으면 main.tf 을 작성해보자..

 

# ~/test/module/rt/main.tf
resource "aws_route_table" "public" {          #라우팅테이블 지정
  vpc_id = var.vpc_id                          #vpc id 지정
  route { 
    cidr_block = "0.0.0.0/0"                  #대상 cidr 지정
    gateway_id = var.internet_gateway_id      #대상 igw 지정
  } 
} 
  
resource "aws_route_table_association" "public" {    #서브넷연결 지정
  subnet_id      = var.subnet_public_id              #연결할 서브넷 지정
  route_table_id = aws_route_table.public.id         #연결시켜줄 라우팅테이블 지정
} 

 

여기에도 변수가 들어갔으니 변수파일도 생성해주자.

# ~/test/module/rt/variables.tf

variable "vpc_id" {}                  #vpc id 변수 지정

variable "internet_gateway_id" {}     #인터넷게이트웨이 변수 지정

variable "subnet_public_id" {}        #서브넷 변수 지정

 

마지막으로 output.tf 파일을 만들어주자

# ~/test/module/rt/output.tf

output "route_table_public_id"{              #라우팅테이블 아우풋 ID
    value = aws_route_table.public.id
}

 

 

이러면 모듈을 완성됬다. 이제 루트모듈에서 값들을 입력해주자.

provider "aws" {                          #사용자정보 지정
  region     = "ap-northeast-2"           #사용할 리전 지정
  access_key = "access_key"               #IAM 사용자 만들때 생성한 엑세스키 정보
  secret_key = "secret_key"               #IAM 사용자 만들때 생성한 시크릿키 정보
}

module "vpc" {                                 #사용할 모듈
  source                      = "./module/vpc" #모듈 위치

  vpc_cidr_block              = "10.1.0.0/16"  #vpc 모듈에서 지정한 변수의 값 / vpc의 cidr 값
  vpc_name                    = "test_vpc"     #vpc 모듈에서 지정한 변수의 값 / vpc의 이름
}

module "subnet" {                                 #사용할 모듈
  source                      = "./module/subnet" #모듈 위치

  vpc_id = module.vpc.vpc_id                     #vpc id 지정

  public_subnet_cidr_block = "10.1.1.0/24"      #퍼블릭 서브넷 CIDR 블록 지정
  public_subnet_AZ         = "ap-northeast-2a"  #퍼블릭 서브넷 가용영역 지정

  publicsb_name = "Pubilc_sb"                   #퍼블릭 서브넷 이름 지정

  private_subnet_cidr_block = "10.1.2.0/24"     #프라이빗 서브넷 CIDR 지정
  private_subnet_AZ         = "ap-northeast-2a" #프라이빗 서브넷 가용영역 지정

  privatesb_name = "Private_sb"                 #프라이빗 서브넷 이름 지정

}

module "igw"{                                   #사용할 모듈
  source       = "./module/igw"                 #모듈 위치
  
  vpc_id       = module.vpc.vpc_id              #igw 에 사용할 vpc id 지정
}

module "route_table"{                                       # 사용할 모듈
  source                 = "./module/rt"                    # 모듈 위치
  
  vpc_id                 = module.vpc.vpc_id                #vpc id 지정
  
  internet_gateway_id    = module.igw.internet_gateway_id   # 인터넷 게이트웨이 지정

  subnet_public_id       = module.subnet.public_subnet_id   # 서브넷 아이디 지정
}

 

이제 이러면 완성이다. terraform init , plan , apply 을 통해서 올려보자.

 

 

 

라우팅테이블이 만들어진것을 확인할수있다. 

인터넷게이트웨이도 연결이되고 

서브넷은 프라이빗은 설정을 안했으니까 연결이 안되있고 퍼블릭만 연결된것을 확인할수 있다.

'Terraform' 카테고리의 다른 글

terraform vpc peering  (0) 2021.06.06
terraform module 사용법(ec2)  (0) 2021.06.02
terraform module 사용법(internet gateway)  (0) 2021.05.31
terraform module 사용법(subnet)  (0) 2021.05.30
terraform module 사용법(vpc)  (1) 2021.05.29