在各种范围部署模板

已完成

现在,你了解了可部署资源的各种范围。 本单元将介绍如何开始编写 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 提供参数来指定此信息。

你可以将文件的 targetScope 设置为 resourceGroupsubscriptionmanagementGrouptenant。 如果未指定目标范围,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 的另一个部署,则会覆盖现有部署。