ネタが見つからなさすぎた。この記事は 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 であんまり複雑なことしたくないが...