在各种范围部署模板

已完成

现在,你已了解可在其中部署资源的各种范围。 本单元将介绍如何开始编写 Bicep 文件,以在这些范围内进行部署。

指定 Bicep 文件的目标范围

Bicep 需要知道文件的部署范围。 此信息很重要,因为 Bicep 需要确保要部署的资源对你使用的范围有效。 例如,如果尝试在不支持的范围内定义资源,Visual Studio Code 的 Bicep 扩展会发出警告。

使用 targetScope 关键字告知 Bicep 文件中的资源适用于特定范围。 下面是在管理组范围内部署资源的 Bicep 文件的示例:

targetScope = 'managementGroup'

resource policyDefinition 'Microsoft.Authorization/policyDefinitions@2024-05-01' = {
  // ...
}

请注意,你在告知 Bicep 在管理组范围内部署资源,但未指定是哪个管理组。 部署模板时,请准确告知 Bicep 要将资源部署到哪个管理组。 Azure CLI 和 Azure PowerShell cmdlet 提供用于指定此信息的参数。

可以将文件设置为targetScoperesourceGroupsubscriptionmanagementGroup或者tenant。 如果未指定目标范围,Bicep 将假定范围 resourceGroup

创建资源组

了解如何在各种范围内创建部署后,请尝试应用此理解来创建资源组,即订阅范围的资源:

targetScope = 'subscription'

resource resourceGroup 'Microsoft.Resources/resourceGroups@2024-07-01' = {
  name: 'example-resource-group'
  location: 'westus'
}

请注意,此示例中的 Bicep 文件的 targetScopesubscription,这意味着 Bicep 默认将文件的所有资源都视为订阅范围。

注释

你将了解如何使用 Bicep 在本模块的后面部分创建 Azure 订阅和管理组。

提交部署

启动部署时,需要告知 Azure 要部署它的范围。 这意味着对于每个部署范围使用不同的 Azure CLI 命令,如下所示:

若要在此范围部署,请执行以下操作: 运行此 Azure CLI 命令:
资源组 az deployment group create
订阅 az deployment sub create
管理组 az deployment mg create
租户 az deployment tenant create

启动部署时,需要告知 Azure 要部署它的范围。 这意味着对于每个部署范围使用不同的 PowerShell cmdlet,如下所示:

若要在此范围部署,请执行以下操作: 使用此 PowerShell cmdlet:
资源组 New-AzResourceGroupDeployment
订阅 New-AzSubscriptionDeployment
管理组 New-AzManagementGroupDeployment
租户 New-AzTenantDeployment

Azure 存储有关每个部署的元数据。 与资源组范围内的部署不同,在部署其他范围时需要提供一些信息,以便 Azure 可以正确存储元数据:

  • 位置:部署元数据必须存储在指定的位置。 无需为资源组范围部署指定位置,因为部署元数据使用与资源组相同的位置。 但是,在订阅、管理组或租户范围内创建部署时,需要指定部署元数据存储在的 Azure 区域。 这些范围中部署的资源并不总是在为元数据指定的相同位置创建。

  • 名称:Azure 中的所有部署都有一个名称。 可以使用 Azure 的名称请求 Azure 获取有关部署的信息。 使用 Azure CLI 或 Azure PowerShell 提交部署时,无需指定名称。 如果没有指定,模板文件的文件名将作为部署名称。

部署的范围、位置和名称的组合必须是唯一的。 例如,假设你创建了一个名为my-deployment的订阅部署,并使用美国东部位置来存储其元数据。 不能在同一个订阅中创建另一个同名为 my-deployment 的部署,即使它位于西欧等不同的位置。 如果在美国东部创建另一个名为 my-deployment 的部署,则会覆盖现有部署。