Terraformでランダムな文字列を生成したい

今日は小ネタ。

Terraformで何かのリソースを作ろうとしたとき、ランダムな文字列を生成したいということがよくあります。例えばAzureのストレージアカウント名はグローバルで一意である必要があるのですが、それを生成するのはちょっと面倒くさいです。

docs.microsoft.com

何かいい方法ないかなと思ったら、random providerのrandom_stringリソースを見つけました。

registry.terraform.io

使い方は上記のページを参照すれば概ね理解できるかなと思います。

lengthで文字数を設定し、大文字・小文字・記号などを使うか使わないかを設定します。こんな感じで記述します(4文字で小文字を使う設定。デフォルトで数字(numeric)も使う)。

resource "random_string" "name" {
  length  = 4
  upper   = false
  lower   = true
  special = false
}

生成された値は、random_string.name.resultで得られます。

同様にランダムなパスワードを生成するrandom_passwordやランダムな数値を取得するrandom_integerなどがあるようです。

registry.terraform.io random_passwordのマニュアル

registry.terraform.io random_integerのマニュアル