部署模板规格
创建并发布模板规格后,就可以部署它。 本单元将介绍部署模板规格的方法。
使用模板规格创建部署
若要将模板规格部署到资源组,可使用你熟悉的同一 New-AzResourceGroupDeployment
cmdlet。 无需指定模板文件,而是指定模板规格的资源 ID,如以下示例所示:
New-AzResourceGroupDeployment `
-TemplateSpecId '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/SharedTemplates/providers/Microsoft.Resources/templateSpecs/StorageWithoutSAS'
尽管必须在资源组中创建模板规格,但可以使用以下 cmdlet 将模板规格部署至订阅、管理组甚至租户:
若要在此范围部署,请执行以下操作: | 使用此 PowerShell cmdlet: |
---|---|
资源组 | New-AzResourceGroupDeployment |
订阅 | New-AzSubscriptionDeployment |
管理组 | New-AzManagementGroupDeployment |
租户 | New-AzTenantDeployment |
其中每个 cmdlet 都接受 -TemplateSpecId
参数,以在这些范围之一启动模板规格部署。
若要将模板规格部署到资源组,可使用你熟悉的同一 az deployment group create
命令。 无需指定模板文件,而是指定模板规格的资源 ID,如以下示例所示:
az deployment group create \
--template-spec "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/SharedTemplates/providers/Microsoft.Resources/templateSpecs/StorageWithoutSAS"
尽管必须在资源组中创建模板规格,但可以使用以下命令将模板规格部署至订阅、管理组甚至租户:
若要在此范围部署,请执行以下操作: | 运行此 Azure CLI 命令: |
---|---|
资源组 | az deployment group create |
订阅 | az deployment sub create |
管理组 | az deployment mg create |
租户 | az deployment tenant create |
其中每个命令都接受 --template-spec
参数,以在这些范围之一启动模板规格部署。
将模板规格用作链接部署
若要在另一个 Azure 资源管理器模板(ARM 模板)中使用模板规格,需创建一个使用该模板规格的部署。这种类型的部署称为“链接部署”,因为要链接到在外部指定的部署模板。
在 Azure 中,部署是资源类型为 Microsoft.Resources/deployments
的资源。 部署 ARM 模板时,会创建部署资源。 同样的概念也适用于部署模板规格的情况,如下所示:
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "createStorage",
"properties": {
"mode": "Incremental",
"templateLink": {
"id": "[resourceId('Microsoft.Resources/templateSpecs/versions', variables('templateSpecName'), variables('templateSpecVersion'))]"
}
}
}
如果要向模板规格部署提供参数,请使用 parameters
属性:
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2020-10-01",
"name": "createStorage",
"properties": {
"mode": "Incremental",
"templateLink": {
"id": "[resourceId('Microsoft.Resources/templateSpecs/versions', variables('templateSpecName'), variables('templateSpecVersion'))]"
},
"parameters": {
"storageAccountName": {
"value": "[parameters('storageAccountName')]"
}
}
}
}
将模板规格用作 Bicep 模块
可以将模板规格用作 Bicep 文件中的模块:
module storageAccountTemplateSpec 'ts:f0750bbe-ea75-4ae5-b24d-a92ca601da2c/sharedTemplates/StorageWithoutSAS:1.0' = {
name: 'storageAccountTemplateSpec'
}
请注意,模块路径使用特殊格式:
模块路径包含三个组件,由冒号 (:
) 字符分隔:
- 方案:Bicep 支持多种类型的模块,称为方案。 将模板规格用作模块时,使用
ts
作为方案。 - 订阅 ID、资源组名称,以及模板规格名称:这些值应指定你之前发布的模板规格资源的位置。 使用正斜杠 (
/
) 分隔订阅 ID、资源组名称和模板规格名称。 模块路径的此部分不是模板规格的完整资源 ID - 它只是资源 ID 的几个组件。 - 版本:需要包括模板规格版本。
备注
指定模块的路径时,不能使用变量、参数或字符串内插。 需要将完整的模板规格路径保存到 Bicep 文件中。
如果要向模板规格提供参数,请使用 params
属性:
module storageAccountTemplateSpec 'ts:f0750bbe-ea75-4ae5-b24d-a92ca601da2c/sharedTemplates/StorageWithoutSAS:1.0' = {
name: 'storageAccountTemplateSpec'
params: {
storageAccountName: storageAccountName
}
}
生成 Bicep 文件时,会将模板规格文件下载并复制(转译)到 JSON ARM 模板中。 通常,此操作在部署 Bicep 文件时进行,但你也可以使用 Bicep 工具通过运行 bicep build
命令来显式进行转换。