この記事は更新から24ヶ月以上経過しているため、最新の情報を別途確認することを推奨いたします。
はじめに
この記事では、前回の記事に引き続いて Azure Bicep のより実践的な利用方法を紹介します。
モジュール化
Bicepファイルをモジュール化でき、他ファイルから再利用可能です。
・利用元ファイル
「module」宣言を使用し、storagePrefix・locationのパラメータを指定します。
@minLength(3)
@maxLength(11)
param namePrefix string
param location string = resourceGroup().location
module stgModule ‘./stac.bicep’ = {
name: ‘storageDeploy’
params: {
storagePrefix: namePrefix
location: location
}
}
output storageEndpoint object = stgModule.outputs.storageEndpoint
・モジュール化ファイル(stac.bicep)
@minLength(3)
@maxLength(11)
param storagePrefix string
@allowed([
‘Standard_LRS’
‘Standard_GRS’
‘Standard_RAGRS’
‘Standard_ZRS’
‘Premium_LRS’
‘Premium_ZRS’
‘Standard_GZRS’
‘Standard_RAGZRS’
])
param storageSKU string = ‘Standard_LRS’
param location string
var uniqueStorageName = ‘${storagePrefix}${uniqueString(resourceGroup().id)}’
resource stg ‘Microsoft.Storage/storageAccounts@2021-04-01’ = {
name: uniqueStorageName
location: location
sku: {
name: storageSKU
}
kind: ‘StorageV2’
properties: {
supportsHttpsTrafficOnly: true
}
}
output storageEndpoint object = stg.properties.primaryEndpoints
モジュール化・ループ化
複数のリソースを作成したい場合等、for文でループ化することも可能です。
param location string = resourceGroup().location
var stacs = [
{
prefix: ‘ppt4g1’
location: location
}
{
prefix: ‘ppt4g2’
location: ‘japanwest’
}
]
module stgModule ‘./3-stac.bicep’ = [for st in stacs: {
name: ‘${st.prefix}storageDeploy’
scope: resourceGroup()
params: {
storagePrefix: st.prefix
location: st.location
}
}]
リソースグループごとデプロイしたいとき
これまでのサンプルは、CLIでリソースグループを指定してそこにリソースをデプロイする形でした。
リソースグループごとデプロイしたいときは、スコープを設定します。
デフォルトはリソースグループであるため、「targetScope=’subscription’」を指定し、後のリソースデプロイ時はスコープをリソースグループに戻します。
下記のCLIコマンドでデプロイします。
az deployment sub create -f .\webapp-deploy.bicep -l japaneast
Bicepは以下のようになります。
targetScope=’subscription’
var resourceGroupName = ‘myBicep01’
var resourceGroupLocation = ‘japaneast’
resource rg ‘Microsoft.Resources/resourceGroups@2021-01-01’ = {
name: ‘rg-${resourceGroupName}’
location: resourceGroupLocation
}
module webappmod ‘5-webapp.bicep’ ={
name:’webappdeploy’
scope: resourceGroup(rg.name)
params:{
webAppName:’nkjmbicep-webapp’
}
}
参考になるサイト
- Bicep Playground (遊び場)
有志によるサイト(MS社員もデモで利用している)。
BicepからARMへライブ変換したり、ARMテンプレートファイルからBicepへデコンパイルできる。
多様なサンプルがある。
Bicep Playground 0.4.1-ge2387595c9 (windows.net)
- 参考:ARM テンプレートファイルクイックスタート
ARM と同じディレクトリに Bicep ファイルが存在するものもある。
azure-quickstart-templates/quickstarts at master · Azure/azure-quickstart-templates · GitHub
まとめ
Bicep をより実践的に使うための方法を紹介しました。
実際にはDevOps等と組み合わせて継続的にデプロイしていくことになると思います。