TerraformのRandom Providerの使い方をAzure ストレージアカウント作成を例に確認
Azureのストレージアカウントのリソース作成を例に、TerraformでのRandom Providerの使い方を確認します。
Terraform Randomは、Terraform上でランダムな値を生成し、それを扱えるようにするプロバイダーです。
Azureストレージアカウントなどのリソース名にランダムな値を付与する場合に利用できます。
今回は、Terraform Randomを使用してランダムな名前を付与したAzureストレージアカウントを作成してみました。
過去のTerraform関連の記事については、こちらで紹介しています。
TerraformのRandom Providerの概要
Terraform上でランダムな値を生成できるプロバイダー
Terraform上でランダムな値を生成し、それを利用できるようにするプロバイダーです。
Random Providerを使用すると、Terraform上でランダムな値を生成し、その値をリソース名などに利用することが可能になります。
※プロバイダーとは、各リソースを操作するためのプラグインのようなものだと思ってます。
Random Providerの種類
TerraformのRandom Providerには、生成する値の種類によっていくつかのバリエーションがあります。
実際に出力される値のイメージをわかりやすくするため、Output値のサンプルも併せて紹介しています。
項目 | 概要 | Output値 |
他のリソースと識別するための一意の乱数を生成します。さまざまなタイプの変数を生成することが可能です。 | ramdom_id = { “b64_std" = “4Wj831me760=" “b64_url" = “4Wj831me760" “byte_length" = 8 “dec" = “16242510092323188653" “hex" = “e168fcdf599eefad" “id" = “4Wj831me760" “keepers" = tomap(null) /* of string */ “prefix" = tostring(null) |
|
指定した範囲内でランダムな数値を生成します。 | random_integer = { “id" = “14172" “keepers" = tomap(null) /* of string */ “max" = 50000 “min" = 1 “result" = 14172 “seed" = tostring(null) } |
|
random_password | 使い方はRandom_stringと同じですが、コンソールに結果が表示されない仕様です。 主にパスワードなど、機密性の高い変数を生成する場合に使用します。 |
random_password = <sensitive> |
random_pet |
ランダムなペット名を生成します。 |
random_pet = { |
random_shuffle |
定義したリスト内の値からランダムに1つを選択して生成します。ランダムなリージョンを選択する場合などに活用できます。 |
random_shuffle = { |
random_string |
英数字(オプションを使用すると特殊文字を含む)のランダムな順列を生成します。 |
random_string = { |
random_uuid |
UUIDを生成します。 |
random_uuid = { |
Random Providerの使い方
TerraformのRandom Providerを使用するには、Terraform ブロック内のrequired_providersでRandom Providerを指定する必要があります。
ランダムな値を付与してリソースを作成する場合は、Resource ブロック内で呼び出して使用します。
※required_providersに項目を追加した後は、terraform initを実行する必要があります。
Random Providerのサンプル | ||
Random Providerのサンプルです。 必須項目や確認出来る項目はRandom Providerで各リソースに記載があります。 |
|
—広告—
TerraformのRandom Providerを使ってAzureストレージアカウントをデプロイ
random_idを使用してストレージアカウント名を生成
Terraformを使用してAzureのストレージアカウントを作成します。
random_idを利用してストレージアカウント名を生成します。
ストレージアカウントと同時に、リソースグループも作成しています。
ストレージアカウントを作成する | ||
random_idの変数を定義します。 resource “random_id" “id-test" { random_idではbyte_lengthが必須の項目となっています。 ストレージアカウントのリソースの名前の項目でrandom_idを利用しています。 resource “azurerm_storage_account" “test-sa" { 今回はdecを使用するため、random_id.id-test.decとなります。 |
|
random_idを使用して作成されたストレージアカウントのリソース名を確認
Terraformを使って作成した、ストレージアカウントのリソース名を確認します。
Random Providerで生成したランダム値をterraform apply -replaceで更新
TerraformのRandom Providerで生成された値は、意図的に再生成しない限り同じ値のまま保持されます。
値を再生成する方法はいくつかありますが、terraform apply -replace(Terraform v0.15.2以降。以前のバージョンではtaint)を使用して置き換えることができます。
※詳細は公式サイトを確認してください。実行にあたっては十分注意して下さい。
terraform apply -replaceを実行 | ||
terraform apply -replaceを実行します。 |
|
最後に
TerraformのRandom Providerにはさまざまなリソースがあり、多種多様なランダム値を簡単に生成できることが分かりました。
ストレージアカウント作成時にはrandom_idを利用していますが、random_stringを利用することでも作成が可能です。
引き続き、いろいろ試してみたいと思います。
Terraform関連の記事は、こちらで紹介しています。