部署模板规格
创建并发布模板规格后,可以部署它。 在本单元中,你将了解部署模板规格的方法。
使用模板规格创建部署
若要将模板规格部署到资源组,请使用熟悉的同一 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
命令来显式进行转换。