使用 PowerShell 匯入和匯出藍圖定義
重要
在 2026 年 7 月 11 日,藍圖 (預覽) 將會淘汰。 將現有的藍圖定義和指派移轉至範本規格和部署堆疊。 藍圖成品會轉換成用來定義部署堆疊的 ARM JSON 範本或 Bicep 檔案。 若要了解如何將成品撰寫為 ARM 資源,請參閱:
您可以透過 Azure 入口網站完全管理 Azure 藍圖。 隨著不斷使用 Azure 藍圖,組織應該開始思考藍圖定義即受控程式碼。 這個概念通常稱為基礎結構即程式碼 (IaC)。 將藍圖定義視為程式碼,可以提供超出 Azure 入口網站所提供的額外優點。 這些優點包括:
- 共用藍圖定義
- 備份藍圖定義
- 在不同租用戶或訂用帳戶中重複使用藍圖定義
- 將藍圖定義放入原始檔控制
- 在測試環境中自動化測試藍圖定義
- 支援持續整合和持續部署 (CI/CD) 管線
無論您的原因為何,將藍圖定義視為程式碼進行管理都能帶給您諸多優點。 本文說明如何在 Az.Blueprint 模組中使用 Import-AzBlueprintWithArtifact
和 Export-AzBlueprintWithArtifact
命令。
必要條件
本文以擁有中等程度的 Azure 藍圖運用知識為假設。 如果您尚未這麼做,請完成下列文章:
- 在入口網站中建立藍圖
- 閱讀部署階段和藍圖生命週期
- 使用 PowerShell 建立和指派藍圖定義和指派
如果尚未安裝 Az.Blueprint 模組,請依照新增 Az.Blueprint 模組中的指示,從 PowerShell 資源庫安裝並驗證它。
藍圖定義的資料夾結構
在查看匯出和匯入藍圖之前,讓我們先看看構成藍圖定義的檔案結構。 藍圖定義應儲存在自己的資料夾中。
重要
如果未將任何值傳遞至 Import-AzBlueprintWithArtifact
Cmdlet 的 Name 參數,則會使用儲存藍圖定義所在的資料夾名稱。
除了必須命名為 blueprint.json
的藍圖定義之外,還有構成藍圖定義的成品。 每個成品都必須位於名為 artifacts
的子資料夾中。
組合在一起後,藍圖定義的結構,即資料夾中的 JSON 檔案,應如下所示:
.
|
|- MyBlueprint/ _______________ # Root folder name becomes default name of blueprint definition
| |- blueprint.json __________ # The blueprint definition. Fixed name.
|
| |- artifacts/ ______________ # Subfolder for all blueprint artifacts. Fixed name.
| |- artifact.json ________ # Blueprint artifact as JSON file. Artifact named from file.
| |- ...
| |- more-artifacts.json
匯出藍圖定義
匯出藍圖定義的步驟很簡單。 匯出藍圖定義有助於共用、備份或放入原始檔控制。
- Blueprint [必要]
- 指定藍圖定義
- 使用
Get-AzBlueprint
取得參考物件
- OutputPath [必要]
- 指定儲存藍圖定義 JSON 檔案的路徑
- 輸出檔案位於具有藍圖定義名稱的子資料夾中
- Version (選用)
- 指定輸出的版本,若 Blueprint 參考物件包含的參考超過一個版本的話。
取得藍圖定義的參考,從表示為
{subId}
的訂用帳戶匯出:# Login first with Connect-AzAccount if not using Cloud Shell # Get version '1.1' of the blueprint definition in the specified subscription $bpDefinition = Get-AzBlueprint -SubscriptionId '{subId}' -Name 'MyBlueprint' -Version '1.1'
使用
Export-AzBlueprintWithArtifact
Cmdlet 匯出指定的藍圖定義:Export-AzBlueprintWithArtifact -Blueprint $bpDefinition -OutputPath 'C:\Blueprints'
匯入藍圖定義
一旦您擁有匯出的藍圖定義,或在必要資料夾結構中手動建立藍圖定義,您就能將該藍圖定義匯入至不同的管理群組或訂用帳戶。
如需內建藍圖定義的範例,請參閱 Azure Blueprints GitHub repo。
- Name [必要]
- 指定新藍圖定義的名稱
- InputPath [必要]
- 指定建立藍圖定義的來源路徑
- 必須符合必要資料夾結構
- ManagementGroupId (選用)
- 要儲存藍圖定義的管理群組識別碼,如果不是目前的內容預設值的話
- 必須指定 ManagementGroupId 或 SubscriptionId
- SubscriptionId (選用)
- 要儲存藍圖定義的訂用帳戶識別碼,如果不是目前的內容預設值的話
- 必須指定 ManagementGroupId 或 SubscriptionId
使用
Import-AzBlueprintWithArtifact
Cmdlet 匯入指定的藍圖定義:# Login first with Connect-AzAccount if not using Cloud Shell Import-AzBlueprintWithArtifact -Name 'MyBlueprint' -ManagementGroupId 'DevMG' -InputPath 'C:\Blueprints\MyBlueprint'
一旦匯入藍圖定義,請使用 PowerShell 加以指派。
如需建立進階藍圖定義的相關資訊,請參閱下列文章: