Azure Bicep のより実践的な利用方法

この記事は更新から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)

まとめ

Bicep をより実践的に使うための方法を紹介しました。
実際にはDevOps等と組み合わせて継続的にデプロイしていくことになると思います。

いいね (この記事が参考になった人の数:6)
(↑参考になった場合はハートマークを押して評価お願いします)
読み込み中...

注意事項・免責事項

※技術情報につきましては投稿日時点の情報となります。投稿日以降に仕様等が変更されていることがありますのでご了承ください。

※公式な技術情報の紹介の他、当社による検証結果および経験に基づく独自の見解が含まれている場合がございます。

※これらの技術情報によって被ったいかなる損害についても、当社は一切責任を負わないものといたします。十分な確認・検証の上、ご活用お願いたします。

※当サイトはマイクロソフト社によるサポートページではございません。パーソルプロセス&テクノロジー株式会社が運営しているサイトのため、マイクロソフト社によるサポートを希望される方は適切な問い合わせ先にご確認ください。
 【重要】マイクロソフト社のサポートをお求めの方は、問い合わせ窓口をご確認ください