🎉
Terraform 1.3 の新機能
Terraform 1.3 がリリースされました 🎉
リリースノートの NEW FEATURES の内容についてさっくりまとめます。
object
type の optional()
でデフォルト値が設定できるようになった
object
type の省略可能な attribute を設定するときに使用する optional()
の第 2 引数にデフォルト値を設定できるようになりました。
main.tf
variable "hoge" {
type = object({
a = optional(string, "default value") # 省略された場合は `"default value"` が設定される
b = optional(string) # 省略された場合は null が設定される
})
}
output "hoge" {
value = var.hoge
}
# a も b も省略するパターン
$ terraform plan -var='hoge={}'
Changes to Outputs:
+ hoge = {
+ a = "default value"
+ b = null
}
# a だけ指定するパターン
$ terraform plan -var='hoge={"a" = "AAA"}'
Changes to Outputs:
+ hoge = {
+ a = "AAA"
+ b = null
}
# b だけ指定するパターン
$ terraform plan -var='hoge={"b" = "BBB"}'
Changes to Outputs:
+ hoge = {
+ a = "default value"
+ b = "BBB"
}
# a も b も指定するパターン
$ terraform plan -var='hoge={"a" = "AAA", "b" = "BBB"}'
Changes to Outputs:
+ hoge = {
+ a = "AAA"
+ b = "BBB"
}
このあたりについては HashCorp の中の人がわかりやすい記事を書いてくださっているので、詳しくはこちらをご参照ください。
startswith
・endswith
文字列の接頭辞をチェックする startswith
関数と、接尾辞をチェックする endswith
関数が追加されました。
terraform console
> startswith("hello world", "h")
true
> startswith("hello world", "hello")
true
> startswith("hello world", "Hello")
false
> startswith("hello world", "world")
false
terraform console
> endswith("hello world", "d")
true
> endswith("hello world", "world")
true
> endswith("hello world", "World")
false
> endswith("hello world", "hello")
false
まとめ
これで object
type の使い勝手がかなり良くなり、より型安全な Terraform コードが書きやすくなったのではないでしょうか。
startswith
・endswith
に関しても必要になるケースは結構ありそうです。
他にも様々な変更や改善があります。
詳細についてはリリースノートをご参照ください。
Discussion