
Terraform variable, module를 이용하여 VPC 생성해 보기
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 Terraform variable, module를 이용하여 VPC를 생성해 보는 방법 대해서 정리해 봤습니다.
디렉토리 구성
$ tree ├── provider.tf ├── main_vpc.tf └── module └── vpc_folder ├── vpc.tf └── variables.tf
먼저 디렉토리 구성은 다음과 같습니다.
module->vpc_folder 폴더 내에 vpc 변수를 정의하는 파일을 생성하고, main_vpc.tf 파일에서 module을 통해 vpc를 생성합니다.
variable, module를 이용해 VPC 생성
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 4.0"
    }
  }
}
provider "aws" {
  region = "ap-northeast-1"
}먼저 provider.tf 에서는 버전과 리전을 정의 합니다.
module "network" {
  source   = "./module/vpc"
  cidr_vpc = "10.0.0.0/16"
  cidr_public1 = "10.0.1.0/24"
  cidr_public2 = "10.0.2.0/24"
  cidr_private1 = "10.0.11.0/24"
  cidr_private2 = "10.0.12.0/24"
  az1 = "ap-northeast-1a"
  az2 = "ap-northeast-1c"
}이어서 main_vpc.tf 입니다.
이 소스코드에서 module을 정의 합니다.
source의 경우 불러올 module의 경로를 의미합니다.
variable "cidr_vpc" {}
variable "cidr_public1" {}
variable "cidr_public2" {}
variable "cidr_private1" {}
variable "cidr_private2" {}
variable "az1" {}
variable "az2" {}variables.tf 에서는 각각의 변수 값들을 정의합니다.
resource "aws_vpc" "vpc" {
  cidr_block           = var.cidr_vpc
  instance_tenancy     = "default"
  enable_dns_hostnames = true
}
resource "aws_subnet" "public1" {
  vpc_id            = aws_vpc.vpc.id
  cidr_block        = var.cidr_public1
  availability_zone = var.az1
}
resource "aws_subnet" "public2" {
  vpc_id            = aws_vpc.vpc.id
  cidr_block        = var.cidr_public2
  availability_zone = var.az2
}
resource "aws_subnet" "private1" {
  vpc_id            = aws_vpc.vpc.id
  cidr_block        = var.cidr_private1
  availability_zone = var.az1
}
resource "aws_subnet" "private2" {
  vpc_id            = aws_vpc.vpc.id
  cidr_block        = var.cidr_private2
  availability_zone = var.az2
}vpc.tf 에서는 variables.tf 에서 정의한 변수 이름을 바탕으로 리소스를 생성합니다.
variable을 사용할 때는 var 를 이용해서 사용합니다.
- terraform init
 - terraform plan
 - terraform apply
 
이제 다음 명령어로 리소스를 생성합니다.
  # module.network.aws_vpc.vpc will be created
  + resource "aws_vpc" "vpc" {
      + arn                                  = (known after apply)
      + cidr_block                           = "10.0.0.0/16"
      + default_network_acl_id               = (known after apply)
      + default_route_table_id               = (known after apply)
      + default_security_group_id            = (known after apply)
      + dhcp_options_id                      = (known after apply)
      + enable_classiclink                   = (known after apply)
      + enable_classiclink_dns_support       = (known after apply)
      + enable_dns_hostnames                 = true
      + enable_dns_support                   = true
      + id                                   = (known after apply)
      + instance_tenancy                     = "default"
      + ipv6_association_id                  = (known after apply)
      + ipv6_cidr_block                      = (known after apply)
      + ipv6_cidr_block_network_border_group = (known after apply)
      + main_route_table_id                  = (known after apply)
      + owner_id                             = (known after apply)
      + tags_all                             = (known after apply)
    }
Plan: 5 to add, 0 to change, 0 to destroy.커맨드 라인에서는 문제없이 리소스가 생성된 것을 확인할 수 있습니다.

Consol에 들어가서 확인해 보면 문제 없이 생성된 것을 확인할 수 있습니다.
본 블로그 게시글을 읽고 궁금한 사항이 있으신 분들은 jaewookkim533@yahoo.com로 보내주시면 감사하겠습니다.







