v0.11

v0.11以前の構文

便利構文

https://www.terraform.io/docs/configuration/interpolation.html

計算とか制御構文とか便利関数が有る。

element(list, index)

listの要素を取得。
最初の要素のindexは0.

file(path)

content = "${file(path/to/file)}" # ファイルの内容を取り込む

format(format, args, …)

url = "${format("https://%s/%s", var.fqdn, var.path)}"

formatlist(format, args, …)

formatのlist版。 args... としてlistを受け取り、list値を返す。

urls = "${formatlist("https://%s/", var.fqdn_list)}"

lookup(map, key [, default])

mapの key に対するvalueを参照する。第3引数に見つからなかったときの default 値を指定することもできる。

1階層のmapは stash["x"] で良いが、デフォルト値を設定したいときや、2階層のmapでは lookup を使う必要がある。

v = "${lookup(var.stash["x"], "y", "default-value")}"

keys(map)

mapのキーをソート済みのlistとして返す。See also values

map(key, value, …)

mapを作る。

output "result" {
  value = "${map(
      "key-1", "${value-1}",
      "key-2", "${value-2}",
      :
    )}"
}

split(delim, string)

文字列をデリミタ文字で分割してlistを返す。

Example:

"${element(split("/", "dir/file"), 1)}" #=> "file"

values(map)

mapの値をlistとして返す。得られる値の順序は、対応するキーのlistが keys で返される順序と同じになるようである。