管理範本規格

已完成

範本規格提供一個便利的方式,可讓您在組織內發佈及共用範本。 隨著您更常使用範本規格,了解如何加以管理就變得很重要。

在此單元中,您將了解版本設定、如何修改及刪除範本規格,以及如何控制對範本規格的存取權。

注意

本單元中的命令僅用於示範概念。 請先不要執行命令。 您很快就會在此練習所學到的內容。

新增版本

您已了解單一範本規格可以有多個版本。 一個範本規格可來作為一或多個版本的容器,而每個版本都與一個範本檔案相關聯。 當您部署範本規格時,需指定要使用的版本,讓 Azure Resource Manager 知道要擷取哪一個範本檔案。

Azure CLI 與 Azure PowerShell 可讓您輕鬆使用多個版本。 事實上,當您在前一個練習中部署範本規格時,您已經使用過版本。

最好謹慎規劃您將如何針對範本規格進行版本設定。 您要制定的兩個重要決策就是要使用的「版本設定配置」與「版本設定原則」

版本設定配置

您的版本設定配置會決定產生版本號碼的方式。 常見的版本設定配置包括:

  • 「基本整數」可用來作為版本號碼。 例如,您的第一個版本可能稱為 1,您的第二個版本為 2,依此類推。
  • 「日期」也會產生良好的版本號碼。 例如,如果您在 2021 年 1 月 16 日發佈第一個版本的範本規格,您可以將版本命名為 2021-01-16 (使用 yyyy-mm-dd 格式)。 當您在 3 月 3 日發佈另一個版本時,則可將其命名為 2021-03-03
  • 「語意化版本控制系統」是軟體中經常使用的版本設定系統,其中的單一版本號碼包含多個部分。 每個部分都會顯示關於變更本質的不同資訊。

儘管您可以使用任何想要的版本設定配置,但最好選擇可依有意義順序排序的內容,例如編號與日期。

注意

Azure 會儲存建立每個版本的日期。 即使您未使用以日期為基礎的版本設定,還是可以看到此資訊。

版本設定原則

範本規格可讓您彈性地選擇建立新版本或更新現有版本的時機。 例如,您可以透過建立並發佈名為 latest 的單一版本,有效退出版本設定。 每當您需要變更範本規格時,只需更新該版本即可。 雖然這個原則可行,但這並不是個好方法。

相反地,如果您對現有範本進行較小變更,而不會影響其使用方式,則建立新版本可能不是個好主意。 您必須將新的版本號碼傳達給任何使用範本規格的人。

以下是通常可正常運作的版本設定原則:

  • 當您對範本規格進行重大變更時,請建立新版本。 範本規格的重大變更包括任何可能對部署範本使用者造成影響的任何項目。 範例包括將另一個資源新增至範本或變更資源的屬性。
  • 每當您對範本規格進行小幅變更時 (有時稱為 Hotfix),請更新現有的範本規格版本。
  • 當舊版本不再相關時,或當您不希望任何人使用時,請將其刪除。

提示

請考慮您範本規格的使用者,並確定您會考慮他們預期將發生什麼事。 如果使用者多次部署您的範本規格並獲得一個結果,然後在 Hotfix 之後再次部署並取得不同結果,則他們可能會感到很驚訝。 請嘗試將使用者獲得非預期結果的可能性降至最低。

版本描述

當您建立新版本的範本規格時,您可以選擇性地為它提供版本描述。 提供版本描述是很好的做法,即使不需要也一樣。 版本描述會摘要說明您所做的變更,以協助使用您範本規格的任何人員選取最符合其需求的版本。

對範本規格進行變更

範本規格是 Azure 資源,因此您可以像任何其他資源一樣加以管理。 這表示您可以像平常一樣檢視範本規格的詳細資料、進行更新,以及將其刪除。

例如,若要列出範本規格的版本,請使用 Get-AzTemplateSpec Cmdlet:

Get-AzTemplateSpec `
  -ResourceGroupName MyResourceGroup `
  -Name MyTemplateSpec

相同的 Cmdlet 可用來檢視範本規格版本。 新增 -Version 參數以取得版本的詳細資料:

Get-AzTemplateSpec `
  -ResourceGroupName MyResourceGroup `
  -Name MyTemplateSpec `
  -Version 1.0

您可以從 Versions 陣列讀取 MainTemplate 屬性,以存取 JSON 範本:

(Get-AzTemplateSpec `
  -ResourceGroupName MyResourceGroup `
  -Name MyTemplateSpec `
  -Version 1.0 `
).Versions[0].MainTemplate

例如,若要列出範本規格的版本,請使用 az ts show 命令:

az ts show \
  --resource-group MyResourceGroup \
  --name MyTemplateSpec

相同的命令可用來檢視範本規格版本。 新增 --version 引數以取得版本的詳細資料:

az ts show \
  --resource-group MyResourceGroup \
  --name MyTemplateSpec \
  --version 1.0

JSON 範本會包含於輸出中。

注意

當您將 Bicep 檔案發佈至範本規格時,系統會將其轉換成 JSON。 您看不到原始的 Bicep 檔案,因此最好將它保留在其他位置。

若要更新現有的範本規格,請使用 Set-AzTemplateSpec Cmdlet。 例如,您可以使用這個 Cmdlet,將 Hotfix 套用至您已發佈的版本:

Set-AzTemplateSpec `
  -ResourceGroupName MyResourceGroup `
  -Name MyTemplateSpec `
  -Version 1.0 `
  -TemplateFile azuredeploy.json

您可以使用 Remove-AzTemplateSpec Cmdlet 來刪除範本規格版本:

Remove-AzTemplateSpec `
  -ResourceGroupName MyResourceGroup `
  -Name MyTemplateSpec `
  -Version 1.0

若要更新現有的範本規格,請使用 az ts update 命令。 例如,您可以使用這個命令,將 Hotfix 套用至您已發佈的版本:

az ts update \
  --resource-group MyResourceGroup \
  --name MyTemplateSpec \
  --version 1.0 \
  --template-file azuredeploy.json

您可以使用 az ts delete 命令來刪除範本規格版本:

az ts delete \
  --resource-group MyResourceGroup \
  --name MyTemplateSpec \
  --version 1.0

匯出範本規格

在您將範本發佈為範本規格之後,就可以將其「匯出」。 匯出範本規格會將範本檔案下載至您的本機電腦。 您可以在那裡編輯範本檔案,或只加以檢查以了解其功能。

提示

如果您的範本規格包含連結的範本,則匯出範本規格也會下載連結的範本。 其甚至會維護資料夾結構。

重要

當您以範本規格形式發佈 Bicep 檔案時,您的 Bicep 程式碼就會轉換為 JSON 範本。 將 Bicep 程式碼轉換為 JSON 的流程會移除 Bicep 檔案中的部分資訊。 例如,您的註解、資源的符號名稱與您定義資源的順序可能會在 JSON 中遺漏或不同。 這表示您無法輕鬆地以範本規格形式發佈 Bicep 檔案,然後取回原始的 Bicep 檔案 (亦稱為「往返」)。 建議您在 Git 等程式碼存放庫中保留一份原始的 Bicep 程式碼複本,特別是當您使用範本規格時。

若要匯出範本規格,請使用 Export-AzTemplateSpec Cmdlet。 使用 -OutputFolder 值來指定您要儲存範本檔案的位置:

Export-AzTemplateSpec `
  -ResourceGroupName MyResourceGroup `
  -Name MyTemplateSpec `
  -Version 1.0 `
  -OutputFolder ./mytemplate

若要匯出範本規格,請使用 az ts export 命令。 使用 --output-folder 值來指定您要儲存範本檔案的位置:

az ts export \
  --resource-group MyResourceGroup \
  --name MyTemplateSpec \
  --version 1.0 \
  --output-folder ./mytemplate

控制對範本規格的存取

由於範本規格是 Azure 資源,因此其會使用 Azure 的身分識別與存取權管理 (IAM)。 當使用者部署範本規格時,Azure 會先檢查使用者是否具有讀取範本規格的存取權。

注意

若要部署範本規格,使用者需要:

  • 可讀取範本規格的存取權。
  • 可部署到其要求部署到其中的資源群組或其他範圍的存取權。

Azure 會在部署開始之前檢查這兩個條件。