💬
[Terraform小ネタ] 文字列をifしたい
タイトルの通りです。文字列でifできます。
以下の記事の実装後にifを使ったのですが
以下のループの中で、特定のケースで is_recovery の通知をしたくないケースが出てきました。しかし、ループでいい感じに共通化してしまったので何とか「特定の条件の時は」ができないか調べました。
hcl
%{ for app in var.apps ~}
{{#is_match "service" "${app}"}}
{{#is_alert}} @pagerduty-${app} {{/is_alert}}
{{#is_recovery}} @pagerduty-${app} {{/is_recovery}}
{{/is_match}}
%{ endfor ~}
ありました。 var.is_recovery
が true
だったら {{#is_recovery}} @pagerduty-${app} {{/is_recovery}}
を挿入。 true 以外だったら 何も入れない
という表現をしています。
%
で区切っているのがミソみたいです。
hcl
%{ for app in var.apps ~}
{{#is_match "service" "${app}"}}
{{#is_alert}} @pagerduty-${app} {{/is_alert}}
%{ if var.is_recovery == true }{{#is_recovery}} @pagerduty-${app} {{/is_recovery}}%{ else }%{ endif }
{{/is_match}}
%{ endfor ~}
特定の変数がnullの場合は以下のように書くことも可能です(以下公式サンプル)
"Hello, %{ if var.name != "" }${var.name}%{ else }unnamed%{ endif }!"
以上、文字列でifする方法でした。
Discussion