【Bicep 入門 #4】モジュールにパラメーターを渡す
この記事の内容
- Bicep でリソース名をハードコーディングする問題点を解説します
paramキーワードを使ったパラメーターの定義方法を紹介します- ストレージアカウント名をパラメーター化してモジュールを柔軟にする手順を説明します
- モジュール呼び出し元からパラメーターを渡す方法を解説します
- 実際にデプロイして結果を確認するところまで紹介します
パラメーターを使う理由
前回まではリソースグループ名やストレージアカウント名をファイル内に直接書いていました。しかし、これではリソース名を変更するたびにファイルを直接編集しなければならず、使い勝手がよくありません。
そこで今回は、リソースグループ名とストレージアカウント名を自由に変更できるよう、パラメーター化する方法を学んでいきます。
ストレージモジュールのパラメーター定義
まずはストレージアカウントのモジュールファイルを編集します。ハードコーディングされていた名前を、外から受け取れるパラメーターに変更します。
パラメーターは param キーワードを使って次のように定義します。
param name string
これで name という名前の文字列型パラメーターが定義されました。
次に、このパラメーターをリソースのプロパティに適用します。たとえばストレージアカウントのリソース名として使う場合は次のようになります。
resource storageAccount 'Microsoft.Storage/storageAccounts@2021-02-01' = {
name: name
...
}
こうすることで、モジュールを呼び出す側からストレージアカウント名を渡せるようになります。
パラメーターを定義するとエラーが出る
モジュール側でパラメーターを必須にしたにもかかわらず、呼び出し元(メインの Bicep ファイル)でパラメーターを渡していないと、次のようなエラーが表示されます。
これは Bicep の補完・検証機能が、必須パラメーターが渡されていないことを検知してくれているためです。エラーの内容を確認すると、どのパラメーターが必要なのかを教えてくれます。
呼び出し元からパラメーターを渡す
メインの Bicep ファイルでモジュールを呼び出す際に、パラメーターを渡すよう修正します。
module storageModule './storage.bicep' = {
name: 'storageDeployment'
scope: resourceGroup('youtube4')
params: {
name: 'youtubeebisudan'
}
}
Bicep のエディター補完機能を使うと、そのモジュールで必須となっているパラメーターを自動で候補として表示してくれます。これにより、渡すべきパラメーターを簡単に確認できます。
デプロイして確認する
パラメーターを渡す設定が完了したら、実際にデプロイを実行します。メインの Bicep ファイルはサブスクリプションスコープで実行し、その中でリソースグループの作成とストレージアカウントのデプロイが順に行われます。
デプロイが完了したら、Azure ポータルでリソースグループを確認します。
- リソースグループ
youtube4が作成されていること - その中にストレージアカウント
youtubeebisudanが作成されていること
以上の2点を確認できれば成功です。指定したパラメーターの値どおりにリソースが作成されていることが分かります。
まとめ
今回は Bicep のモジュールにパラメーターを渡す方法を解説しました。
param 名前 型でパラメーターを定義することで、外部から値を受け取れるようになります- 必須パラメーターが渡されていない場合、Bicep の検証機能がエラーとして教えてくれます
- 呼び出し元の
paramsブロックにパラメーター名と値を指定することで、モジュールに値を渡せます
ハードコーディングをなくしてパラメーター化することで、同じモジュールをさまざまな名前のリソースに使い回せるようになります。Bicep でのインフラ管理がより柔軟で再利用しやすくなりますので、ぜひ活用してみてください。