🛴
ネストしたオブジェクトを型指定で受け取る - Terraformのきほんと応用
Terraformコードを書く上での小さなTIPSです。
Terraform関連の他の記事は「Terraformのきほんと応用」からどうぞ。
概要
ネストしたオブジェクトをvariablesのtypeで受け取りたい場合はmap型を使います。
コード説明
Terraformを書いていると以下のようなネストしたn個のオブジェクトで設定を定義したくなることがあります。
terraform.tfvars
subnets = {
"application-subnet" = {
cidr = "192.168.10.0/24"
public = true
}
"database-subnet" = {
cidr = "192.168.100.0/24"
public = false
}
// サブネット設定が続く...
}
型なしで受け取ることもできるのですが、構造を定義しておいた方がソースの読みやすさが格段に変わってきます。
main.tf
// 型なしでうけとる
variables typeless-subnets {}
// 型を指定して受け取る
variable subnets {
type = map(object({
cidr = string
public = bool
}))
}
output print-all {
value = var.subnets
}
output print-keys {
value = [for k, v in var.subnets : k]
}
動かしてみる
上記のコードを動かしてみるとネストしたオブジェクトを受け取れていることがわかります。
サンプルコード
この記事で作成したコードはgithub上に公開しています。
Discussion