使用 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 chinanorth2 \
  --template-file resourceGroup.bicep \
  --parameters resourceGroupName=demoResourceGroup resourceGroupLocation=chinanorth2

对于 PowerShell 部署命令,请使用 New-AzDeployment 或其别名 New-AzSubscriptionDeployment

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

创建资源组和资源

若要创建资源组并向其部署资源,请添加一个模块,用于定义要部署到资源组的资源。 将该模块的范围设置为你创建的资源组的符号名称。 最多可部署到 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=chinanorth

对于 PowerShell 部署命令,请使用 New-AzResourceGroupDeployment

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

后续步骤

若要了解其他范围,请参阅: