ネタが見つからなさすぎた。この記事は Terraform Advent Calendar 2023 16日目の記事です。
を眺めた。
title
いつ使うんだこれ...
> title("hello world")
"Hello World"
anytrue
これも使い所よくわからん...
> anytrue([true, false]) true > anytrue([false, false]) false
chunklist
これは使いどころあるかもしれない。
何らかの rule set 的なものをいくつかの chunk にわけて管理したい場合とか。わかりづらくはなる。
> chunklist(["a","b","c"], 2)
tolist([
tolist([
"a",
"b",
]),
tolist([
"c",
]),
])
lookup
これ面白い。
> lookup({a="hoge", b="fuga"}, "a", "hogehuga")
"hoge"
> lookup({a="hoge", b="fuga"}, "d", "hogehuga")
"hogehuga"
環境3つぐらいなら3項演算子でいいだろうが、独自の何かしらの key/value に対して分岐させたい時とか。
そもそも普段から terraform であんまりロジック書きたくない派なので使わんが(この記事全否定)
one
何のために使うのこれ...
コレクションを受け取って、空なら null を返す、そうでなければ最初の要素を返す、引数に2つ以上与えるとエラーになる。
2値を扱いたい時に使うやつっぽい。
module の output の際に、instance が作られていた場合は private ip を返し、なければ null を返す、みたいな例が書いてあった。
setproduct
掛け合わせるのか。面白い。
大量にブツ作るときに便利かも。
> setproduct(["development", "staging", "production"], ["app1", "app2"])
tolist([
[
"development",
"app1",
],
[
"development",
"app2",
],
[
"staging",
"app1",
],
[
"staging",
"app2",
],
[
"production",
"app1",
],
[
"production",
"app2",
],
])
base64encode/decode
base64 も扱える。
> base64encode("chaspy")
"Y2hhc3B5"
> base64decode("Y2hhc3B5")
"chaspy"
yamlencode/decode
yaml も扱えるんだ。
> yamldecode("hello: [hoge,huga]")
{
"hello" = [
"hoge",
"huga",
]
}
formatdate
これは便利そう。リソース名にユニーク性を持たせたい時とか...あんまないか
> formatdate("YYYY-MM-DD-hh-mm", timestamp())
"2023-12-28-08-38"
uuid
そういうのもあるのか
> uuid() "ff045942-704f-371d-b540-97e0f149d0e0"
cidrsubnet
計算むずいので便利ね
おしまい
なんかしたいなーってときに探してみると良さそうです 意外と何でもできる
でもやっぱ terraform であんまり複雑なことしたくないが...