Terraform ループと分岐
概要for
ことなるリスト型を(list, map, set)を異なるリスト型に変換する構文
データ型の詳細は→ Terraform で使用できるデータ型
他の構文のようなループ処理する構文ではないので注意
code:main.tf
for s in var.list : upper(s)
上記のコードは、var.listのリスト型の要素を大文字に変換するという構文になる
異なるデータ型へ変換する場合のサンプル
list, set → listに変換する場合
code:main.tf
variable "list" {
type = list(string)
default = "tanaka", "sato"
}
code:sh
for s in var.list : upper(s)
[
"TANAKA",
"SATO",
]
list,set→mapに変換する場合
code:main.tf
variable "list" {
type = list(string)
default = "tanaka", "sato"
}
code:sh
{ for s in var.list : s => upper(s) }
{
"sato" = "SATO"
"tanaka" = "TANAKA"
}
map→ listに変換する場合
code:main.tf
variable "map" {
type = map(string)
default = {
"High" = "m5.2xlarge"
"Mid" = "m5.large"
"Low" = "t2.micro"
}
}
code:main.sh
for k, v in var.map : upper(v)
[
"M5.2XLARGE",
"T2.MICRO",
"M5.LARGE",
]
map → mapに変換する場合
code:main.tf
variable "map" {
type = map(string)
default = {
"High" = "m5.2xlarge"
"Mid" = "m5.large"
"Low" = "t2.micro"
}
}
code:sh
{ for k, v in var.map : k => upper(v) }
{
"High" = "M5.2XLARGE"
"Low" = "T2.MICRO"
"Mid" = "M5.LARGE"
}
if
条件がTRUEだけ出力する
ELSEやTHENは使用できない
code:main.tf
for s in var.list : upper(s) if s != ""
TerraformではIF 文が存在しないので、三項演算子のIFを使って実装することになる