了解 Azure 藍圖中的部署順序
重要
在 2026 年 7 月 11 日,藍圖 (預覽) 將會淘汰。 將現有的藍圖定義和指派移轉至範本規格和部署堆疊。 藍圖成品會轉換成用來定義部署堆疊的 ARM JSON 範本或 Bicep 檔案。 若要了解如何將成品撰寫為 ARM 資源,請參閱:
Azure 藍圖會在處理藍圖定義指派時使用排序順序來判斷資源的建立順序。 本文說明下列概念:
- 使用的預設排序順序
- 如何自訂順序
- 如何處理自訂的順序
在 JSON 範例中有一些變數。您需要使用自己的值取代它們:
{YourMG}
- 以您的管理群組名稱取代
預設排序順序
若藍圖定義沒有包含用於部署成品的順序指示詞,或是指示詞為 Null,則會使用下列順序:
- 訂用帳戶層級角色指派成品,依成品名稱排序
- 訂用帳戶層級原則指派成品,依成品名稱排序
- 訂閱層級 Azure Resource Manager 範本 (ARM 範本) 成品,依成品名稱排序
- 資源群組成品 (包含子成品),依預留位置名稱排序
在每個資源群組成品中,下列排序順序會適用於要在該資源群組內建立的成品:
- 資源群組子角色指派成品,依成品名稱排序
- 資源群組子原則指派成品,依成品名稱排序
- 資源群組子系 Azure Resource Manager 範本 (ARM 範本) 成品,依成品名稱排序
注意
使用 artifacts() 會在參考的成品上建立隱含相依性。
自訂排序順序
撰寫大型藍圖定義時,可能需要依照特定順序建立資源。 此情節最常見的使用模式是藍圖定義包含數個 ARM 範本時。 Azure 藍圖會藉由允許定義排序順序來處理此模式。
排序可透過在 JSON 中定義 dependsOn
屬性來完成。 適用於資源群組的藍圖定義及成品物件支援此屬性。 dependsOn
為成品名稱字串陣列,代表在其建立前必須建立的特定成品。
注意
建立藍圖物件時,如果使用 PowerShell,則每個成品資源的名稱都會來自檔案名稱;若使用 REST API,則成品資源名稱會來自 URL 端點。 成品中的 resourceGroup 參考必須符合藍圖定義中定義的參考。
範例:已排序的資源群組
此範例藍圖定義具備透過宣告 dependsOn
值來定義自訂排序順序的資源群組,以及一個標準資源群組。 在此範例中,名為 assignPolicyTags 的成品會在 ordered-rg 資源群組之前進行處理。
standard-rg 會根據預設排序順序進行處理。
{
"properties": {
"description": "Example blueprint with custom sequencing order",
"resourceGroups": {
"ordered-rg": {
"dependsOn": [
"assignPolicyTags"
],
"metadata": {
"description": "Resource Group that waits for 'assignPolicyTags' creation"
}
},
"standard-rg": {
"metadata": {
"description": "Resource Group that follows the standard sequence ordering"
}
}
},
"targetScope": "subscription"
},
"type": "Microsoft.Blueprint/blueprints"
}
範例 - 使用自訂順序的成品
此範例是相依於 ARM 範本的原則成品。 根據預設順序,原則成品會在 ARM 範本之前建立。 這順序可讓原則成品等待建立 ARM 範本。
{
"properties": {
"displayName": "Assigns an identifying tag",
"policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/2a0e14a6-b0a6-4fab-991a-187a4f81c498",
"resourceGroup": "standard-rg",
"dependsOn": [
"customTemplate"
]
},
"kind": "policyAssignment",
"type": "Microsoft.Blueprint/artifacts"
}
範例:依存於資源群組的訂閱層級範本成品
此範例適用於部署在訂閱層級的 ARM 範本,以依存於資源群組。 在預設順序中,訂閱層級成品會在這些資源群組中任何資源群組和子成品之前建立。 資源群組是在藍圖定義中定義,如下所示:
"resourceGroups": {
"wait-for-me": {
"metadata": {
"description": "Resource Group that is deployed prior to the subscription level template artifact"
}
}
}
依存於 wait-for-me 資源群組的訂閱層級範本成品定義如下:
{
"properties": {
"template": {
...
},
"parameters": {
...
},
"dependsOn": ["wait-for-me"],
"displayName": "SubLevelTemplate",
"description": ""
},
"kind": "template",
"type": "Microsoft.Blueprint/blueprints/artifacts"
}
處理自訂順序
在建立過程期間,會使用拓撲排序來建立藍圖成品的相依性關係圖。 此檢查可確保支援資源群組與成品之間的每個相依性層級。
如果成品相依性宣告為不會改變預設順序,則不會進行任何變更。
有個範例是相依於訂用帳戶層級原則的資源群組。 另一個範例則是相依於資源群組 ’standard-rg’ 子角色指派的資源群組 ’standard-rg’ 子原則指派。 在這兩個案例中,dependsOn
皆不會改變預設排序順序,因此不會產生任何變更。