Variable & Validation 선언
변수를 사용하면 코드를 더 쉽게 재사용할 수 있고, 다른 구성 간에 코드를 공유할 수 있다.
1. variable 파일 없이 직접 입력하는 방식
# vpc.tf
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
tags = {
Name = "main",
Environment = "development",
CostCenter = "23213"
}
}
2. variable.tf 파일을 이용해 데이터를 입력하는 방식
variable은 "vpc_cidr", "default_tags" 두 가지로 구분된다.
variable 내부는 type, description, default, validation로 구성되어 있다.
# variable.tf
variable "vpc_cidr" {
type = string
description = "The CIDR block for the VPC"
default = "10.0.0.0/16"
validation {
condition = can(regex("^([0-9]{1,3}\\.){3}[0-9]{1,3}($|/(16|24))$",var.vpc_cidr))
error_message = "Please ensure a valid CIDR has been entered with range /16 or /24."
}
}
variable default_tags {
type = object({
environment = string
owner = string
cost_centre = string
})
description = "Default set of tags to apply to resources"
default = {
environment = "development",
owner = "r&d",
cost_centre = "1234567890"
}
validation {
condition = length(var.default_tags.cost_centre) == 10
error_message = "Please ensure a valid 10 digit cost centre code has been entered."
}
}
- type: 변수의 데이터 유형 정의 (ex: string, list, map)
- description : 변수 용도 설명 (참고용)
- default : 사용자의 입력이 없을 경우 사용될 기본 값 지정
- validation : 입력된 변수 값 검증 규칙 설정
# vpc.tf
resource "aws_vpc" "main" {
cidr_block = var.vpc_cidr
tags = var.default_tags
}
3. variable.tf 파일의 변수 외에 별도 설정 값을 병합해서 사용하는 방식
cidr_block : variable.tf에 선언된 Default 값(10.0.0.0/16) 적용
tag : vpc.tf에 선언된 Name tag와 variable.tf의 Default 값이 함께 적용
resource "aws_vpc" "main" {
cidr_block = var.vpc_cidr
tags = merge(
var.default_tags,
{
"Name" = "Main"
}
)
}
tfvars 파일을 이용한 환경 별 다른 변수 값 적용
variable.tf 파일은 변수의 형식을 지정하는데 사용되고, .tfvars 파일은 실제 입력할 데이터를 지정한다. 배포하는 환경 별로 다른 입력값을 사용하기 위해서 dev.tfvars, prd.tfvars 형태로 파일을 구성해서 apply 단계에서 지정해서 사용할 수 있다.
1. 환경 구성
environments 디렉터리를 추가하고, 그 하위에 dev.tfvars 파일을 생성한다.
/root/terraform-starter/
├── backend.tf
├── environments
│ └── dev.tfvars
├── provider.tf
├── terraform.tfstate
├── terraform.tfstate.backup
├── tfplan
├── variables.tf
├── version.tf
└── vpc.tf
$ mkdir environments
$ cd environments
$ touch dev.tfvars
2. 입력 데이터 값 설정
# environments/dev.tfvars
vpc_cidr = "10.10.0.0/16"
default_tags = {
environment = "staging",
owner = "r&d",
cost_centre = "1234567890"
}
3. 배포 명령
$ terraform plan -var-file=environments/dev.tfvars --out tfplan
$ terraform apply tfplan반응형
'Programming > Terraform' 카테고리의 다른 글
| [Terraform] Data source & Terraform fucntion (0) | 2025.12.19 |
|---|---|
| [Terraform] Attribute & Output (0) | 2025.12.19 |
| [Terraform] Remote Backend 구성 (0) | 2025.12.18 |
| [Terraform] 주요 명령어 세 가지 (0) | 2025.12.18 |
| [Terraform] Terraform 개요 (0) | 2025.12.17 |