【Bicep入門 #2】リソースグループをBicepで展開する

この記事の内容

  • BicepでAzureリソースグループを作成する方法を解説します
  • リソースグループ展開には「スコープ」の設定が重要であることを説明します
  • targetScope = 'subscription' の指定が必要な理由を解説します
  • az deployment sub create コマンドを使ったデプロイ手順を紹介します
  • Azureポータルでデプロイ結果を確認する方法を解説します

Bicepファイルの作成

BicepでAzureリソースグループを作成するには、まず専用のBicepファイルを用意します。

リソースグループを定義する場合、Bicepファイルには以下のようにリソースを記述します。

resource rg 'Microsoft.Resources/resourceGroups@<APIバージョン>' = {
  name: 't2miya-rg'
  location: 'japaneast'
}

名前(name)と場所(location)が必須パラメーターになります。


スコープの設定が重要

リソースグループは、通常のリソースとスコープが異なる点に注意が必要です。

Bicepファイルにリソースグループを定義しただけでデプロイしようとすると、以下のようなエラーが表示されます。

'resourceGroup'

これは、リソースグループ自体を作成するためにはサブスクリプションレベルのスコープで操作する必要があるためです。デフォルトのスコープはリソースグループになっているため、そのままでは展開できません。


targetScope の設定

この問題を解決するには、Bicepファイルの先頭に targetScope を指定します。

targetScope = 'subscription'

resource rg 'Microsoft.Resources/resourceGroups@<APIバージョン>' = {
  name: 't2miya-rg'
  location: 'japaneast'
}

targetScope には以下のいずれかを指定できます。

説明
resourceGroupリソースグループスコープ(デフォルト)
subscriptionサブスクリプションスコープ
managementGroup管理グループスコープ
tenantテナントスコープ

リソースグループを作成するには subscription を指定します。これによりエラーが解消され、サブスクリプションを対象にリソースグループを作成するという意図が正しく伝わります。


デプロイコマンドの実行

テンプレートファイルが準備できたら、デプロイを実行します。リソースグループの展開はサブスクリプションレベルの操作になるため、az deployment group create ではなく az deployment sub create を使用します。

az deployment sub create \
  --location japaneast \
  --template-file <Bicepファイル名>.bicep

サブスクリプションレベルのデプロイでは --location パラメーターが必須です。指定しない場合はエラーになりますので注意してください。

コマンドを実行するとデプロイが開始されます。


デプロイ結果の確認

デプロイが完了したら、Azureポータルで確認できます。サブスクリプションのデプロイ一覧を確認すると、実行したデプロイが表示されています。

また、リソースグループの一覧を確認すると、Microsoft.Resources/resourceGroups として新しいリソースグループが作成されていることが確認できます。


まとめ

BicepでAzureリソースグループを作成する場合は、通常のリソース展開と異なりスコープの設定が重要なポイントになります。Bicepファイルの先頭に targetScope = 'subscription' を記述することで、サブスクリプションレベルの展開が可能になります。また、デプロイコマンドも az deployment sub create を使用し、--location パラメーターを忘れずに指定することが必要です。この仕組みを理解してしまえば、Bicepでのリソースグループ管理はとてもシンプルに進められます。