Bicep を使ってリソース グループを作成する

Bicep を使って新しいリソース グループを作成できます。 この記事では、サブスクリプションまたは別のリソース グループにデプロイするときにリソース グループを作成する方法について説明します。

リソース グループを定義する

Bicep を使ってリソース グループを作成するには、リソース グループの名前と場所を指定して Microsoft.Resources/resourceGroups リソースを定義します。

次の例は、空のリソース グループを作成する Bicep ファイルを示しています。 ターゲット スコープが subscription であることに注目してください。

targetScope='subscription'

param resourceGroupName string
param resourceGroupLocation string

resource newRG 'Microsoft.Resources/resourceGroups@2022-09-01' = {
  name: resourceGroupName
  location: resourceGroupLocation
}

Bicep ファイルをサブスクリプションにデプロイするには、サブスクリプション レベルのデプロイ コマンドを使います。

Azure CLI の場合は、az deployment sub create を使用します。

az deployment sub create \
  --name demoSubDeployment \
  --location centralus \
  --template-file resourceGroup.bicep \
  --parameters resourceGroupName=demoResourceGroup resourceGroupLocation=centralus

PowerShell デプロイ コマンドについては、New-AzDeployment または別名 New-AzSubscriptionDeployment を使用します。

New-AzSubscriptionDeployment `
  -Name demoSubDeployment `
  -Location centralus `
  -TemplateFile resourceGroup.bicep `
  -resourceGroupName demoResourceGroup `
  -resourceGroupLocation centralus

リソース グループとリソースを作成する

リソース グループを作成し、そこにリソースをデプロイするには、デプロイするリソースを定義したモジュールをリソース グループに追加します。 モジュールのスコープを、作成するリソース グループのシンボリック名に設定します。 最大 800 のリソース グループにデプロイできます。

次の例は、リソース グループを作成し、ストレージ アカウントをリソース グループにデプロイする Bicep ファイルを示しています。 モジュールの scope プロパティが newRG に設定されていることに注意してください。これは、作成されているリソース グループのシンボリック名です。

targetScope='subscription'

param resourceGroupName string
param resourceGroupLocation string
param storageName string
param storageLocation string

resource newRG 'Microsoft.Resources/resourceGroups@2022-09-01' = {
  name: resourceGroupName
  location: resourceGroupLocation
}

module storageAcct 'storage.bicep' = {
  name: 'storageModule'
  scope: newRG
  params: {
    storageLocation: storageLocation
    storageName: storageName
  }
}

モジュールでは、次のような内容で storage.bicep という名前の Bicep ファイルを使用します。

param storageLocation string
param storageName string

resource storageAcct 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: storageName
  location: storageLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'Storage'
  properties: {}
}

リソース グループのデプロイ中にリソース グループを作成する

リソース グループ レベルのデプロイ中にリソース グループを作成することもできます。 そのシナリオの場合、既存のリソース グループにデプロイし、サブスクリプションのレベルに切り替えてリソース グループを作成します。 次の Bicep ファイルでは、指定したサブスクリプションに新しいリソース グループを作成します。 リソース グループを作成するモジュールは、リソース グループを作成する例と同じです。

param secondResourceGroup string
param secondSubscriptionID string = ''
param secondLocation string

// module deployed at subscription level
module newRG 'resourceGroup.bicep' = {
  name: 'newResourceGroup'
  scope: subscription(secondSubscriptionID)
  params: {
    resourceGroupName: secondResourceGroup
    resourceGroupLocation: secondLocation
  }
}

リソース グループにデプロイするには、リソース グループのデプロイ コマンドを使用します。

Azure CLI の場合は、az deployment group create を使用します。

az deployment group create \
  --name demoRGDeployment \
  --resource-group ExampleGroup \
  --template-file main.bicep \
  --parameters secondResourceGroup=newRG secondSubscriptionID={sub-id} secondLocation=westus

PowerShell デプロイ コマンドには、New-AzResourceGroupDeployment を使用します。

New-AzResourceGroupDeployment `
  -Name demoRGDeployment `
  -ResourceGroupName ExampleGroup `
  -TemplateFile main.bicep `
  -secondResourceGroup newRG `
  -secondSubscriptionID {sub-id} `
  -secondLocation westus

次の手順

他のスコープについて確認するには、以下を参照してください。