在各种范围部署模板
现在,你已了解可在其中部署资源的各种范围。 本单元将介绍如何开始编写 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
、resourceGroup
、subscription
、managementGroup
或者tenant
。 如果未指定目标范围,Bicep 将假定范围 resourceGroup
。
创建资源组
了解如何在各种范围内创建部署后,请尝试应用此理解来创建资源组,即订阅范围的资源:
targetScope = 'subscription'
resource resourceGroup 'Microsoft.Resources/resourceGroups@2024-07-01' = {
name: 'example-resource-group'
location: 'westus'
}
请注意,此示例中的 Bicep 文件的 targetScope
为 subscription
,这意味着 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
的部署,则会覆盖现有部署。