Type | 설명 |
String | 문자 시퀀스 |
Number | 숫자 값 |
Bool | 불리언 값(true 또는 false) |
Any | 모든 유형을 명시적으로 허용 |
List(<Type>) | 인덱스로 접근하는 순서가 있는 값의 집합 |
Map(<Type>) | Key-Value 쌍으로 구성된 집합, 키로 접근 가능, 키값 기준 정렬 |
Set(<Type>) | 중복이 없는 값의 집합, 순서 없음. |
Object | 각 속성이 고유한 유형(Object)를 가지는 속성의 집합 |
Tuple | 위치로 식별되는 일련의 요소, 각 요소는 고유한 유형을 가짐. |
# string
variable "string" {
type = string
description = "var String"
default = "myString"
}
# number
variable "number_example" {
description = "An example of a number variable in Terraform"
type = number
default = 42
}
# boolean
variable "boolean" {
default = true
}
# list(number)
variable "list_numeric_example" {
description = "An example of a numeric list in Terraform"
type = list(number)
default = [1, 2, 3]
}
# map(string)
variable "map_example" {
description = "An example of a map in Terraform"
type = map(string)
default = {
key1 = "value1"
key2 = "value2"
key3 = "value3"
}
}
# Object
variable "object_example" {
description = "An example of a structural type in Terraform"
type = object({
name = string
age = number
tags = list(string)
enabled = bool
})
default = {
name = "value1"
age = 42
tags = ["a", "b", "c"]
enabled = true
}
}
# tuple
variable "tuple" {
type = tuple([string, number, bool])
default = ["abc", 123, true]
}
variable "ingress_rules" { # optional ( >= terraform 1.3.0)
type = list(object({
port = number,
description = optional(string),
protocol = optional(string, "tcp"),
}))
default = [
{ port = 80, description = "web" },
{ port = 53, protocol = "udp" }]
}
변수 우선순위
C언어의 연산자 우선순위는 1번이 가장 먼저 적용되는 것과 다르게,
Terraform에서 변수 우선순위는 순위가 높을 수록 먼저 적용된다.
우선순위 | 선언 방식 | 예시 |
1 | [실행 후 입력] - Terraform apply 실행 시 직접 변수 입력 |
terraform apply -auto-approve |
2 | [variable 블록의 default 값] - Terraform 코드 파일에서 기본 값으로 설정 |
variable "my_var" { default = "var2" } |
3 | [환경 변수 (TF_VAR)] - 환경 변수로 설정된 값 |
export TF_VAR_my_var=var3 |
4 | [terraform.tfvars 파일] - Terraform tfvars 파일에 설정된 값 |
echo 'my_var="var4"' > terraform.tfvars |
5 | [*.auto.tfvars 파일] - 자동으로 읽히는 tfvars 파일에 설정된 값 |
echo 'my_var="var5_a"' > a.auto.tfvars |
6 | [*.auto.tfvars.json 파일] - 자동으로 읽히는 tfvars.json 파일에 설정된 값 |
cat <<EOF > a.auto.tfvars.json { "my_var" : "var6_a" } EOF |
7 | [CLI 실행 시 -var 인수 또는 -var-file 파일 지정] - Terraform apply 실행 시 -var 인수로 지정한 값 |
terraform apply -auto-approve -var=my_var=var7 |
변수관련 파일
파일 | |
[terraform.tfvars 파일] | - 테라폼에서 기본적으로 인식하고 읽는 파일 - 루트 모듈의 main.tf 파일과 같은 위치에 생성 - 명시적으로 지정하지 않아도 테라폼이 자동으로 로드함 |
[*.auto.tfvars 파일] |
- 파일 이름의 패턴이 *.auto.tfvars 인 파일들을 자동으로 읽고 로딩 - 파일명에 따라 우선순위가 결정 a.auto.tfvars b.auto.tfvars 위와 같이 두개의 파일이 존재할 경우, a가 먼저 로드되고, b가 덮어쓰는 방식 |
[*.auto.tfvars.json 파일] |
- *.auto.tfvars가 JSON 형식으로 작성된 형식 - *.auto.tfvars와 같이 파일명에 따라 우선순위가 결정됨 |