•
테라폼 HCL에서 선언하는 내용 중 변경될 수 있는 요소는 변수를 사용하는 것이 좋습니다.
•
변수를 정의하여 테라폼 파일을 손쉽게 재사용 가능합니다.
1. 테라폼 단순 변수 유형 (Terraform Simple Variable Type)
•
String
•
Number
•
Bool
variable "a-string" {
type = string
}
variabble "this-is-a-number" {
type = number
}
variable "true-or-false" {
type = bool
}
Shell
복사
•
변수 타입을 정의하지 않아도 테라폼이 유형을 결정할 수 있습니다.
•
할당한 값에 따라 테라폼이 변수 유형을 자동으로 인식합니다.
variable myvar {
type = string
default = "hello terraform"
}
variable mymap {
type = map(string)
default = {
mykey = "my value"
yourkey = "your value"
}
}
variable mylist {
type = list
default = [1,2,3]
}
Bash
복사
[Caption] variable 예시
terrform console
================= output =================
> var.myvar
"hello terraform"
> "${var.myvar}"
"hello terraform"
> var.mymap
tomap({
"mykey" = "my value"
"yourkey" = "your value"
})
> var.mymap["mykey"]
"my value"
> var.mylist
tolist([
1,
2,
3,
])
> var.mylist[0]
1
>
> element(var.mylist, 1)
2
> slice(var.mylist, 0, 2)
tolist([
1,
2,
])
Bash
복사
•
terraform console 명령어로 진입하여 변수 정보를 확인해 볼 수 있습니다.
•
변수 사용은 var.XXXX 또는 "${var.XXX}" 형태로 사용합니다.
•
element, slice 등의 함수를 활용하여 값을 표출할 수 있습니다.
2. 테라폼 복합 변수 유형 (Terraform Complex Variable Type)
•
List
◦
[0,1,5,2]
◦
List는 순서대로 나타냅니다.
◦
하나의 유형으로 정의 (예를 들어 String 유형이면 모두 String)
•
Set
◦
[1,2,5]
◦
List와 비슷하지만 순서를 유지하지 않고 고유한 값만 유지
◦
List가 [5,1,1,2]라면 Set은 [1,2,5]
•
Map
◦
{”key” = “value” …}
◦
key=value 형태로 쌍으로 존재
◦
하나의 유형으로 정의됩니다. (예를 들어 String 유형이면 모두 String)
•
Object
◦
{name = “John”, phone = “01044444444”}
◦
Object는 Map과 동일하지만 요소 별로 다른 유형을 가질 수 있음
▪
예를 들어 String 유형과 Number 유형을 정의할 수 있습니다.
•
Tuple
◦
[0, “string”, false]
◦
Tuple은 List와 동일하지만 요소 별로 다른 유형을 가질 수 있습니다.