在各种范围部署模板
现在,你了解了可部署资源的各种范围。 本单元将介绍如何开始编写 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
的另一个部署,则会覆盖现有部署。