Terraformでは、変数の値を決める部分(default句)で変数を展開することはできない。つまり、変数の値を、他の変数を使った計算によって決めることはできない。
計算された値を複数の箇所で使うためには、null_resourceのtriggers属性を値のマッピングとして使うことで、変数の代用とすることができる。cf. issue #4084 / Github hashicorp/terraform
variable "msg" { type = "string" } resource "null_resource" "computed" { triggers { startup_script = <<EOS echo Hello! echo '${msg}' EOS } } resource "google_compute_instance" "web" { metadata_startup_script = "${null_resource.computed.triggers.startup_script}" ... } resource "google_compute_instance" "app" { metadata_startup_script = "${null_resource.computed.triggers.startup_script}" ... }
とはいえ、あまり調子に乗って複雑なことをしない方が良い気はする。