部署範本規格

已完成

建立並發佈範本規格之後,您可以加以部署。 在此單元中,您將了解部署範本規格的方式。

使用範本規格建立部署

若要將範本規格部署至資源群組,可以使用您熟悉的相同 New-AzResourceGroupDeployment Cmdlet。 您可以指定範本規格的資源識別碼,而不是指定範本檔案,如下列範例所示:

New-AzResourceGroupDeployment `
  -TemplateSpecId '/subscriptions/f0750bbe-ea75-4ae5-b24d-a92ca601da2c/resourceGroups/SharedTemplates/providers/Microsoft.Resources/templateSpecs/StorageWithoutSAS'

儘管您必須在資源群組內建立範本規格,但您可以使用下列 Cmdlet 將其部署到訂用帳戶、管理群組或甚至租用戶:

若要在此範圍進行部署: 使用此 PowerShell Cmdlet:
資源群組 New-AzResourceGroupDeployment
訂用帳戶 New-AzSubscriptionDeployment
管理群組 New-AzManagementGroupDeployment
租用戶 New-AzTenantDeployment

上述每個 Cmdlet 都接受 -TemplateSpecId 參數,可在這其中一個範圍內起始範本規格部署。

若要將範本規格部署至資源群組,可以使用您熟悉的相同 az deployment group create 命令。 您可以指定範本規格的資源識別碼,而不是指定範本檔案,如下列範例所示:

az deployment group create \
  --template-spec "/subscriptions/f0750bbe-ea75-4ae5-b24d-a92ca601da2c/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 Resource Manager 範本 (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'
}

請注意,模組路徑會使用特殊格式:

Diagram showing the components of the template spec path.

模組路徑有三個元件,並以冒號 (:) 字元分隔:

  • 配置:Bicep 支援數種稱為配置的模組類型。 當您使用範本規格作為模組時,您會使用 ts 作為配置。
  • 訂用帳戶識別碼、資源群組名稱和範本規格名稱:這些值應該指定您先前所發佈範本規格資源的位置。 您可以使用正斜線 (/) 來分隔訂用帳戶識別碼、資源群組名稱和範本規格名稱。 此模組路徑的區段不是範本規格的完整資源識別碼 - 這只是資源識別碼的一些元件。
  • 版本:必須包含範本規格版本。

注意

當您指定模組的路徑時,無法使用變數、參數或字串插補。 完整範本規格路徑必須儲存到 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 命令明確地轉譯這項操作。