Terraform Randomの使い方をAzure ストレージアカウント作成しながら学ぶ
Terraform RandomはTerraform上でランダムな値を発生させて扱えるようにするプロバイダーになります。
Random Provider(HashiCorp公式サイト)
Azureストレージアカウント等のリソース名にランダムな値を付与した場合に利用可能です。
今回はをTerraform Random使ってランダムな名前を付与したAzureストレージアカウントを作成してみました。
過去のTerraform関連の記事はこちらに記載しております。
Terraform Randomとは
Terraform上でランダム値を発生させ扱えるようにするプロバイダーになります。
Terraform Randomを使うとTerraform上でランダムな値を発生させそれをリソース名に使ったりと言う事が出来ます。
※勝手にプロバイダー=モジュールみたいなもんと理解しています。
Terraform Randomの種類
Terraform Randomにも発生させたい値により色々な種類があります。
実際に出力値のイメージを分かりやすくするために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 |
定義したリストの値の中から任意の値を生成します。 |
random_shuffle = { |
random_string |
英数字(オプションを使うと特殊文字)のランダム順列を生成します。一意のIDの場合はrandom_id、機密性が必要な場合はrandom_passwordを使用して下さいとの案内があります。 |
random_string = { |
random_uuid |
uuidを生成します。 |
random_uuid = { |
Terraform Randomの使い方
Terraform Randomを使う為には、Terraform Blockのrequired_providersでrandom providerを呼び出す必要があります。
ランダム値を付与してリソースを作成する場合は、Resource Block内でrandomリソースを呼び出して使います。
※required_providersに項目を追加しています。最初にterraform initを実行しておく必要があります。
Random Resourceサンプル | ||
random_idを例に確認してみます。 random = { でRandom Providerを読み込んでいます。 resource “random_id" “id-test" { で8バイトのrandom_idを生成するという定義を行っています。 output “ramdom_id" { Outputで実際の値を確認しています。 必須項目や確認出来る項目はRandom Providerで各リソースに記載があります。 |
|
Terraform Randomを使ってAzureストレージアカウントをデプロイ
Terraform Randomを使ってAzureストレージアカウントデプロイ
random_idを使用してストレージアカウント名を生成しています。
ストレージアカウントを作成する | ||
ストレージアカウント作成用のtfファイルを作成しました。 random_idの変数を定義しています。
resource “random_id" “id-test" { random_idではbyte_lengthが必須の項目になっています。(1-8で指定) ストレージアカウントのリソースの名前の項目でrandom_id(id-test)を呼び出しています。 resource “azurerm_storage_account" “test-sa" { 今回はdecを使用するのでrandom_id.id-test.decとなります。 |
|
※Outputを確認した時とrequired_providersのVerはが違いますのでご注意下さい。
作成されたストレージアカウント名を確認
作成されたストレージアカウントを確認してみます。
Terraform Randomで生成した値をterraform apply -replaceを使って更新
Terraform Randomで生成した値リソースは意図的に再生成しない限り同じ値のままになります。
いくつか方法がありますが、terraform apply -replace(Terraformv0.15.2以降(それ以前はtaint))で置き換える事が出来ます。
※コマンドの解説は公式サイトを参照ください。コマンドの実行にあたっては十分注意して下さい。
terraform apply -replaceを実行してみる | ||
terraform apply -replaceを実行してみます。 結果を確認するとid=c721bf56-6364-79f8-9626-3e0445ac95a1が削除され、id=fb48e05a-665b-945c-2db1-1d7d8fdddc91が新規に生成されている事が分かりました。 |
|
最後に
Terraform Randomには色々なリソースがあり、多種多様なランダム値を簡単に生成できる事が分かりました。
ストレージアカウント作成時にrandom_idを利用していますが、random_stringを利用しても作成(オプションの指定が必要)が可能です。
引き続き色々試して勉強したいと思います。Terraform関連の記事一覧はこちらになります。