VTRyo Blog

一歩ずつ前に進むブログ

Production, Stagingのような最初の文字だけ大文字にするTerraform - title Function

Terraformを使っていて、関数名が環境によって差があるときにvar.envで分岐することが多いと思う。

単純な環境名であれば、分岐はproduction, staging, developmentなどが多い例だろうが、関数名になると最初が大文字であるケースがある。

例えばhogeProductionClient, hogeStagingClientみたいな。

始め、これをvar.env_upcaseといった名前でterraform.tfvarsにわざわざProductionという別の変数を定義していたのだが、そんなことをしなくてもtitle Functionで解決するという話だった。(コードレビューで指摘して頂きました Thanks!)

developer.hashicorp.com

# わざわざ別の名前で定義していた
env       = "production"
env_short = "prod"
env_upcase = "Production"

$ terraform console
> title("production")
"Production"

こんな感じで名前を定義できるわけだね

function_name = "hoge${title(var.env)}Client"

他にもTerraformにはBuilt-in Functionがあるので、立ち止まって調べると案外リファクタリングチャンスがあるかもしれない

developer.hashicorp.com

developer.hashicorp.com

$ terraform console
> upper("production")
"PRODUCTION"
> lower("PRODUCTION")
"production"

developer.hashicorp.com