Terraform 정의
variable "vpc_name" {}
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "0.24.0"
name = "var.vpc_name"
cidr_block = "10.0.0.0/16"
}
Variable를 통한 정의
variable 통해 vpc_name의 값을 입력 받는다.
terraform apply를 하고 생성된 리소스를 AWS Console에서 보면 입력받은 값이 name이 된다.
환경변수를 통한 정의
운영체제 상에 환경 변수를 추가
export TF_WAR_vpc_name="test_vpc"
위와 같이 vpc name이 test_vpc가 된다.
파일을 통한 정의
terraform.tfvars 사용
vpc_name="test_vpc"
파일 이름이 terraform.tfvars가 아닌 test.tfvars의 경우 apply 할 때 따로 선언해주면 된다.
terraform apply -var-file=test.tfvars
.auto.tfvars 사용
자동으로 테라폼에서 tfvars를 인식하게 된다.
명령어를 통한 정의
-var
를 통한 정의
terraform apply -var="vpc_name=test_vpc"
위의 코드처럼 apply 뒤에 -var를 통해 선언해줄 수 있다.
variable "vpc_name" {
description = "Created VPC Name"
type = string
default = "default"
}
description : 생성되는 VPC 이름
type : 문자 유형
default : vpc_name 정의가 안됐을 때의 기본값
Local Values
locals 블록을 사용하여 지역 변수 선언
locals {
common_tags = {
Project = "Network"
Owner = "posquite"
}
tags 수정
tags = local.common_tags
모든 tags에 대하여 loacl Block의 common_tags 정의
AWS Console 확인

정상적으로 입력된걸 볼 수 있다.
이와 같이 Local Values는 코드 여러곳에서 사용되는 공통 태그를 한 곳에서 관리하기 위해서 사용한다.
Output Values
output "vpc_name" {
value =module.vpc.name
}
output "vpc_id" {
value =module.vpc.id
}
output "vpc_cidr" {
value =module.vpc.cidr_block
}
apply를 하면 아래와 같이 output 값을 출력하게 된다.
더보기
더보기
public_private_group = {
"arns" = [
"arn:aws:ec2:ap-northeast-2:714546234903:subnet/subnet-05349fcd8b3b4288e",
"arn:aws:ec2:ap-northeast-2:714546234903:subnet/subnet-096eef54c8f953415",
]
"availability_zone_ids" = tolist([
"apne2-az1",
"apne2-az2",
])
"availability_zones" = tolist([
"ap-northeast-2a",
"ap-northeast-2b",
])
"cache_subnet_group_id" = null
"cidr_blocks" = [
"10.0.10.0/24",
"10.0.11.0/24",
]
"dax_subnet_group_id" = null
"db_subnet_group_arn" = null
"db_subnet_group_id" = null
"dms_replication_subnet_group_id" = null
"docdb_subnet_group_arn" = null
"docdb_subnet_group_id" = null
"ids" = [
"subnet-05349fcd8b3b4288e",
"subnet-096eef54c8f953415",
]
"ipv6_cidr_blocks" = tolist([])
"name" = "test_file_vpc-private"
"neptune_subnet_group_arn" = null
"neptune_subnet_group_id" = null
"redshift_subnet_group_arn" = null
"redshift_subnet_group_id" = null
"subnets" = [
{
"arn" = "arn:aws:ec2:ap-northeast-2:714546234903:subnet/subnet-05349fcd8b3b4288e"
"assign_ipv6_address_on_creation" = false
"availability_zone" = "ap-northeast-2a"
"availability_zone_id" = "apne2-az1"
"cidr_block" = "10.0.10.0/24"
"customer_owned_ipv4_pool" = ""
"id" = "subnet-05349fcd8b3b4288e"
"ipv6_cidr_block" = ""
"ipv6_cidr_block_association_id" = ""
"map_customer_owned_ip_on_launch" = false
"map_public_ip_on_launch" = false
"outpost_arn" = ""
"owner_id" = "714546234903"
"tags" = tomap({
"Name" = "test_file_vpc-private-001/az1"
"Owner" = "posquite"
"Project" = "Network"
"module.terraform.io/full-name" = "terraform-aws-network/subnet-group"
"module.terraform.io/instance" = "test_file_vpc-private"
"module.terraform.io/name" = "subnet-group"
"module.terraform.io/package" = "terraform-aws-network"
"module.terraform.io/version" = "0.24.0"
})
"tags_all" = tomap({
"Name" = "test_file_vpc-private-001/az1"
"Owner" = "posquite"
"Project" = "Network"
"module.terraform.io/full-name" = "terraform-aws-network/subnet-group"
"module.terraform.io/instance" = "test_file_vpc-private"
"module.terraform.io/name" = "subnet-group"
"module.terraform.io/package" = "terraform-aws-network"
"module.terraform.io/version" = "0.24.0"
})
"timeouts" = null /* object */
"vpc_id" = "vpc-0c434901441bbc2f0"
},
{
"arn" = "arn:aws:ec2:ap-northeast-2:714546234903:subnet/subnet-096eef54c8f953415"
"assign_ipv6_address_on_creation" = false
"availability_zone" = "ap-northeast-2b"
"availability_zone_id" = "apne2-az2"
"cidr_block" = "10.0.11.0/24"
"customer_owned_ipv4_pool" = ""
"id" = "subnet-096eef54c8f953415"
"ipv6_cidr_block" = ""
"ipv6_cidr_block_association_id" = ""
"map_customer_owned_ip_on_launch" = false
"map_public_ip_on_launch" = false
"outpost_arn" = ""
"owner_id" = "714546234903"
"tags" = tomap({
"Name" = "test_file_vpc-private-002/az2"
"Owner" = "posquite"
"Project" = "Network"
"module.terraform.io/full-name" = "terraform-aws-network/subnet-group"
"module.terraform.io/instance" = "test_file_vpc-private"
"module.terraform.io/name" = "subnet-group"
"module.terraform.io/package" = "terraform-aws-network"
"module.terraform.io/version" = "0.24.0"
})
"tags_all" = tomap({
"Name" = "test_file_vpc-private-002/az2"
"Owner" = "posquite"
"Project" = "Network"
"module.terraform.io/full-name" = "terraform-aws-network/subnet-group"
"module.terraform.io/instance" = "test_file_vpc-private"
"module.terraform.io/name" = "subnet-group"
"module.terraform.io/package" = "terraform-aws-network"
"module.terraform.io/version" = "0.24.0"
})
"timeouts" = null /* object */
"vpc_id" = "vpc-0c434901441bbc2f0"
},
]
"vpc_id" = "vpc-0c434901441bbc2f0"
}
public_subnet_group = {
"arns" = [
"arn:aws:ec2:ap-northeast-2:714546234903:subnet/subnet-0314462f106805abd",
"arn:aws:ec2:ap-northeast-2:714546234903:subnet/subnet-0dac1ad333aeeb594",
]
"availability_zone_ids" = tolist([
"apne2-az1",
"apne2-az2",
])
"availability_zones" = tolist([
"ap-northeast-2a",
"ap-northeast-2b",
])
"cache_subnet_group_id" = null
"cidr_blocks" = [
"10.0.0.0/24",
"10.0.1.0/24",
]
"dax_subnet_group_id" = null
"db_subnet_group_arn" = null
"db_subnet_group_id" = null
"dms_replication_subnet_group_id" = null
"docdb_subnet_group_arn" = null
"docdb_subnet_group_id" = null
"ids" = [
"subnet-0314462f106805abd",
"subnet-0dac1ad333aeeb594",
]
"ipv6_cidr_blocks" = tolist([])
"name" = "test_file_vpc-public"
"neptune_subnet_group_arn" = null
"neptune_subnet_group_id" = null
"redshift_subnet_group_arn" = null
"redshift_subnet_group_id" = null
"subnets" = [
{
"arn" = "arn:aws:ec2:ap-northeast-2:714546234903:subnet/subnet-0314462f106805abd"
"assign_ipv6_address_on_creation" = false
"availability_zone" = "ap-northeast-2a"
"availability_zone_id" = "apne2-az1"
"cidr_block" = "10.0.0.0/24"
"customer_owned_ipv4_pool" = ""
"id" = "subnet-0314462f106805abd"
"ipv6_cidr_block" = ""
"ipv6_cidr_block_association_id" = ""
"map_customer_owned_ip_on_launch" = false
"map_public_ip_on_launch" = true
"outpost_arn" = ""
"owner_id" = "714546234903"
"tags" = tomap({
"Name" = "test_file_vpc-public-001/az1"
"Owner" = "posquite"
"Project" = "Network"
"module.terraform.io/full-name" = "terraform-aws-network/subnet-group"
"module.terraform.io/instance" = "test_file_vpc-public"
"module.terraform.io/name" = "subnet-group"
"module.terraform.io/package" = "terraform-aws-network"
"module.terraform.io/version" = "0.24.0"
})
"tags_all" = tomap({
"Name" = "test_file_vpc-public-001/az1"
"Owner" = "posquite"
"Project" = "Network"
"module.terraform.io/full-name" = "terraform-aws-network/subnet-group"
"module.terraform.io/instance" = "test_file_vpc-public"
"module.terraform.io/name" = "subnet-group"
"module.terraform.io/package" = "terraform-aws-network"
"module.terraform.io/version" = "0.24.0"
})
"timeouts" = null /* object */
"vpc_id" = "vpc-0c434901441bbc2f0"
},
{
"arn" = "arn:aws:ec2:ap-northeast-2:714546234903:subnet/subnet-0dac1ad333aeeb594"
"assign_ipv6_address_on_creation" = false
"availability_zone" = "ap-northeast-2b"
"availability_zone_id" = "apne2-az2"
"cidr_block" = "10.0.1.0/24"
"customer_owned_ipv4_pool" = ""
"id" = "subnet-0dac1ad333aeeb594"
"ipv6_cidr_block" = ""
"ipv6_cidr_block_association_id" = ""
"map_customer_owned_ip_on_launch" = false
"map_public_ip_on_launch" = true
"outpost_arn" = ""
"owner_id" = "714546234903"
"tags" = tomap({
"Name" = "test_file_vpc-public-002/az2"
"Owner" = "posquite"
"Project" = "Network"
"module.terraform.io/full-name" = "terraform-aws-network/subnet-group"
"module.terraform.io/instance" = "test_file_vpc-public"
"module.terraform.io/name" = "subnet-group"
"module.terraform.io/package" = "terraform-aws-network"
"module.terraform.io/version" = "0.24.0"
})
"tags_all" = tomap({
"Name" = "test_file_vpc-public-002/az2"
"Owner" = "posquite"
"Project" = "Network"
"module.terraform.io/full-name" = "terraform-aws-network/subnet-group"
"module.terraform.io/instance" = "test_file_vpc-public"
"module.terraform.io/name" = "subnet-group"
"module.terraform.io/package" = "terraform-aws-network"
"module.terraform.io/version" = "0.24.0"
})
"timeouts" = null /* object */
"vpc_id" = "vpc-0c434901441bbc2f0"
},
]
"vpc_id" = "vpc-0c434901441bbc2f0"
}
Subnet_grops 하나로 public/subnet output 출력
output "subnet_groups" {
value ={
public = module.subnet_group__public
private = module.subnet_group__private
}
}
더보기
더보기
Outputs:
subnet_groups = {
"private" = {
"arns" = [
"arn:aws:ec2:ap-northeast-2:714546234903:subnet/subnet-05349fcd8b3b4288e",
"arn:aws:ec2:ap-northeast-2:714546234903:subnet/subnet-096eef54c8f953415",
]
"availability_zone_ids" = tolist([
"apne2-az1",
"apne2-az2",
])
"availability_zones" = tolist([
"ap-northeast-2a",
"ap-northeast-2b",
])
"cache_subnet_group_id" = null
"cidr_blocks" = [
"10.0.10.0/24",
"10.0.11.0/24",
]
"dax_subnet_group_id" = null
"db_subnet_group_arn" = null
"db_subnet_group_id" = null
"dms_replication_subnet_group_id" = null
"docdb_subnet_group_arn" = null
"docdb_subnet_group_id" = null
"ids" = [
"subnet-05349fcd8b3b4288e",
"subnet-096eef54c8f953415",
]
"ipv6_cidr_blocks" = tolist([])
"name" = "test_file_vpc-private"
"neptune_subnet_group_arn" = null
"neptune_subnet_group_id" = null
"redshift_subnet_group_arn" = null
"redshift_subnet_group_id" = null
"subnets" = [
{
"arn" = "arn:aws:ec2:ap-northeast-2:714546234903:subnet/subnet-05349fcd8b3b4288e"
"assign_ipv6_address_on_creation" = false
"availability_zone" = "ap-northeast-2a"
"availability_zone_id" = "apne2-az1"
"cidr_block" = "10.0.10.0/24"
"customer_owned_ipv4_pool" = ""
"id" = "subnet-05349fcd8b3b4288e"
"ipv6_cidr_block" = ""
"ipv6_cidr_block_association_id" = ""
"map_customer_owned_ip_on_launch" = false
"map_public_ip_on_launch" = false
"outpost_arn" = ""
"owner_id" = "714546234903"
"tags" = tomap({
"Name" = "test_file_vpc-private-001/az1"
"Owner" = "posquite"
"Project" = "Network"
"module.terraform.io/full-name" = "terraform-aws-network/subnet-group"
"module.terraform.io/instance" = "test_file_vpc-private"
"module.terraform.io/name" = "subnet-group"
"module.terraform.io/package" = "terraform-aws-network"
"module.terraform.io/version" = "0.24.0"
})
"tags_all" = tomap({
"Name" = "test_file_vpc-private-001/az1"
"Owner" = "posquite"
"Project" = "Network"
"module.terraform.io/full-name" = "terraform-aws-network/subnet-group"
"module.terraform.io/instance" = "test_file_vpc-private"
"module.terraform.io/name" = "subnet-group"
"module.terraform.io/package" = "terraform-aws-network"
"module.terraform.io/version" = "0.24.0"
})
"timeouts" = null /* object */
"vpc_id" = "vpc-0c434901441bbc2f0"
},
{
"arn" = "arn:aws:ec2:ap-northeast-2:714546234903:subnet/subnet-096eef54c8f953415"
"assign_ipv6_address_on_creation" = false
"availability_zone" = "ap-northeast-2b"
"availability_zone_id" = "apne2-az2"
"cidr_block" = "10.0.11.0/24"
"customer_owned_ipv4_pool" = ""
"id" = "subnet-096eef54c8f953415"
"ipv6_cidr_block" = ""
"ipv6_cidr_block_association_id" = ""
"map_customer_owned_ip_on_launch" = false
"map_public_ip_on_launch" = false
"outpost_arn" = ""
"owner_id" = "714546234903"
"tags" = tomap({
"Name" = "test_file_vpc-private-002/az2"
"Owner" = "posquite"
"Project" = "Network"
"module.terraform.io/full-name" = "terraform-aws-network/subnet-group"
"module.terraform.io/instance" = "test_file_vpc-private"
"module.terraform.io/name" = "subnet-group"
"module.terraform.io/package" = "terraform-aws-network"
"module.terraform.io/version" = "0.24.0"
})
"tags_all" = tomap({
"Name" = "test_file_vpc-private-002/az2"
"Owner" = "posquite"
"Project" = "Network"
"module.terraform.io/full-name" = "terraform-aws-network/subnet-group"
"module.terraform.io/instance" = "test_file_vpc-private"
"module.terraform.io/name" = "subnet-group"
"module.terraform.io/package" = "terraform-aws-network"
"module.terraform.io/version" = "0.24.0"
})
"timeouts" = null /* object */
"vpc_id" = "vpc-0c434901441bbc2f0"
},
]
"vpc_id" = "vpc-0c434901441bbc2f0"
}
"public" = {
"arns" = [
"arn:aws:ec2:ap-northeast-2:714546234903:subnet/subnet-0314462f106805abd",
"arn:aws:ec2:ap-northeast-2:714546234903:subnet/subnet-0dac1ad333aeeb594",
]
"availability_zone_ids" = tolist([
"apne2-az1",
"apne2-az2",
])
"availability_zones" = tolist([
"ap-northeast-2a",
"ap-northeast-2b",
])
"cache_subnet_group_id" = null
"cidr_blocks" = [
"10.0.0.0/24",
"10.0.1.0/24",
]
"dax_subnet_group_id" = null
"db_subnet_group_arn" = null
"db_subnet_group_id" = null
"dms_replication_subnet_group_id" = null
"docdb_subnet_group_arn" = null
"docdb_subnet_group_id" = null
"ids" = [
"subnet-0314462f106805abd",
"subnet-0dac1ad333aeeb594",
]
"ipv6_cidr_blocks" = tolist([])
"name" = "test_file_vpc-public"
"neptune_subnet_group_arn" = null
"neptune_subnet_group_id" = null
"redshift_subnet_group_arn" = null
"redshift_subnet_group_id" = null
"subnets" = [
{
"arn" = "arn:aws:ec2:ap-northeast-2:714546234903:subnet/subnet-0314462f106805abd"
"assign_ipv6_address_on_creation" = false
"availability_zone" = "ap-northeast-2a"
"availability_zone_id" = "apne2-az1"
"cidr_block" = "10.0.0.0/24"
"customer_owned_ipv4_pool" = ""
"id" = "subnet-0314462f106805abd"
"ipv6_cidr_block" = ""
"ipv6_cidr_block_association_id" = ""
"map_customer_owned_ip_on_launch" = false
"map_public_ip_on_launch" = true
"outpost_arn" = ""
"owner_id" = "714546234903"
"tags" = tomap({
"Name" = "test_file_vpc-public-001/az1"
"Owner" = "posquite"
"Project" = "Network"
"module.terraform.io/full-name" = "terraform-aws-network/subnet-group"
"module.terraform.io/instance" = "test_file_vpc-public"
"module.terraform.io/name" = "subnet-group"
"module.terraform.io/package" = "terraform-aws-network"
"module.terraform.io/version" = "0.24.0"
})
"tags_all" = tomap({
"Name" = "test_file_vpc-public-001/az1"
"Owner" = "posquite"
"Project" = "Network"
"module.terraform.io/full-name" = "terraform-aws-network/subnet-group"
"module.terraform.io/instance" = "test_file_vpc-public"
"module.terraform.io/name" = "subnet-group"
"module.terraform.io/package" = "terraform-aws-network"
"module.terraform.io/version" = "0.24.0"
})
"timeouts" = null /* object */
"vpc_id" = "vpc-0c434901441bbc2f0"
},
{
"arn" = "arn:aws:ec2:ap-northeast-2:714546234903:subnet/subnet-0dac1ad333aeeb594"
"assign_ipv6_address_on_creation" = false
"availability_zone" = "ap-northeast-2b"
"availability_zone_id" = "apne2-az2"
"cidr_block" = "10.0.1.0/24"
"customer_owned_ipv4_pool" = ""
"id" = "subnet-0dac1ad333aeeb594"
"ipv6_cidr_block" = ""
"ipv6_cidr_block_association_id" = ""
"map_customer_owned_ip_on_launch" = false
"map_public_ip_on_launch" = true
"outpost_arn" = ""
"owner_id" = "714546234903"
"tags" = tomap({
"Name" = "test_file_vpc-public-002/az2"
"Owner" = "posquite"
"Project" = "Network"
"module.terraform.io/full-name" = "terraform-aws-network/subnet-group"
"module.terraform.io/instance" = "test_file_vpc-public"
"module.terraform.io/name" = "subnet-group"
"module.terraform.io/package" = "terraform-aws-network"
"module.terraform.io/version" = "0.24.0"
})
"tags_all" = tomap({
"Name" = "test_file_vpc-public-002/az2"
"Owner" = "posquite"
"Project" = "Network"
"module.terraform.io/full-name" = "terraform-aws-network/subnet-group"
"module.terraform.io/instance" = "test_file_vpc-public"
"module.terraform.io/name" = "subnet-group"
"module.terraform.io/package" = "terraform-aws-network"
"module.terraform.io/version" = "0.24.0"
})
"timeouts" = null /* object */
"vpc_id" = "vpc-0c434901441bbc2f0"
},
]
"vpc_id" = "vpc-0c434901441bbc2f0"
}
}
'DevOps > Terraform' 카테고리의 다른 글
[TF]Terraform 조건문 (0) | 2021.12.21 |
---|---|
[TF]Terraform Count, Foreach (0) | 2021.12.19 |
[TF] AWS Resource 생성 (0) | 2021.12.19 |
[TF]HCL 기초문법 (0) | 2021.12.19 |
[TF]Terraform 기초 및 설치 (0) | 2021.12.15 |