部署模板规格

已完成

创建并发布模板规格后,可以部署它。 在本单元中,你将了解部署模板规格的方法。

使用模板规格创建部署

若要将模板规格部署到资源组,请使用熟悉的同一 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 命令来显式进行转换。