-
[TF]Terraform Variable & Local & OutputDevOps/Terraform 2021. 12. 19. 16:51
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