什麼是 ARM 範本?

隨著移至雲端,許多團隊都採用敏捷式開發方法。 這些小組能夠快速完成反覆項目。 他們必須反覆將解決方案部署至雲端,並了解自身的基礎結構處於可靠狀態。 當基礎結構已成為反復程式的一部分時,作業與開發之間的劃分已消失。 Teams 需要透過統一的程式來管理基礎結構和應用程式程式碼。

為了克服這些挑戰,您可以將部署自動化並使用基礎結構即程式碼的做法。 在程式碼中,您可以定義需要部署的基礎結構。 基礎結構程式碼會成為專案的一部分。 就像應用程式程式碼一樣,您會將基礎結構程式碼儲存在來源存放庫中,並將其版本。 您小組中的任何人都可以執行程式碼並部署類似的環境。

若要為您的 Azure 解決方案執行基礎結構即程式碼,請使用 (ARM 範本的 Azure Resource Manager 範本) 。 範本是一個 JavaScript 物件標記法 (JSON) 檔案,會定義專案的基礎結構和設定。 範本會使用宣告式語法,可讓您陳述您要部署的項目,而不需要撰寫一連串程式設計命令來加以建立。 在該範本中,您可以指定要部署的資源和這些資源的屬性。

我們引進了一個名為 Bicep 的新語言,可用來開發 ARM 範本 JSON。 Bicep 檔案和 JSON 範本提供相同的功能。 您可以在這兩種語言之間轉換範本。 Bicep 提供一種語法,可讓您更容易用來建立範本。 如需詳細資訊,請參閱 什麼是 Bicep?

若要瞭解如何開始使用 ARM 範本,請參閱下列影片。

為何選擇 ARM 範本?

如果您嘗試決定使用 ARM 範本和其中一個其他基礎結構作為程式碼服務,請考慮使用範本的下列優點:

  • 宣告式語法: ARM 範本可讓您以宣告方式建立和部署整個 Azure 基礎結構。 例如,您不僅可以部署虛擬機器,也可以部署網路基礎結構、儲存體系統,以及您可能需要的任何其他資源。

  • 重複的結果:在整個開發生命週期中重複部署您的基礎結構,並確信您的資源會以一致的方式部署。 範本具有等冪性,這表示您可以部署相同的範本多次,並取得相同狀態的相同資源類型。 您可以開發一個代表所需狀態的範本,而不是開發許多不同的範本來表示更新。

  • 協調流程:您不必擔心訂購作業的複雜性。 Resource Manager 會協調相互依存資源的部署,使其以正確的順序建立。 可能的話,Resource Manager 會以平行方式部署資源,讓您的部署比序列部署更快完成。 您可以透過單一命令來部署範本,而不是透過多個命令式命令。

    範本部署比較

  • 模組化 檔案:您可以將範本分成較小、可重複使用的元件,並在部署時將它們連結在一起。 您也可以在另一個範本中嵌套一個範本。

  • 建立任何 azure 資源:您可以立即在範本中使用新的 azure 服務和功能。 一旦資源提供者引進新資源,您就可以透過範本部署這些資源。 使用新服務之前,您不需要等待工具或模組更新。

  • 擴充 性:透過部署腳本,您可以將 PowerShell 或 Bash 腳本新增至您的範本。 部署腳本會擴充您在部署期間設定資源的能力。 腳本可以包含在範本中,也可以儲存在外部來源中,並在範本中參考。 部署腳本讓您能夠在單一 ARM 範本中完成端對端環境設定。

  • 測試:您可以使用 arm 範本工具套件 (arm ttk) 來測試,以確定您的範本遵循建議的指導方針。 此測試套件是您可以從GitHub下載的 PowerShell 腳本。 此工具套件可讓您更輕鬆地使用範本語言開發專業知識。

  • 預覽變更:在部署範本之前,您可以使用「 假設 」作業來取得變更的預覽。 有了假設之後,您會看到將建立、更新或刪除哪些資源,以及將變更的任何資源屬性。 「假設」作業會檢查您環境的目前狀態,並免除管理狀態的需求。

  • 內建驗證:只有在通過驗證之後,才會部署您的範本。 Resource Manager 會先檢查範本,再開始部署,以確保部署將會成功。 您的部署較不可能在半完成狀態中停止。

  • 追蹤的部署:在 Azure 入口網站中,您可以查看部署歷程記錄,並取得範本部署的相關資訊。 您可以看到已部署的範本、傳入的參數值,以及任何輸出值。 其他基礎結構即程式碼服務則不會透過入口網站來追蹤。

    部署歷程記錄

  • 原則即程式碼Azure 原則 是將治理自動化的程式碼架構原則。 如果您使用的是 Azure 原則,則透過範本部署時,會在不符合規範的資源上進行原則補救。

  • 部署藍圖:您可以利用 Microsoft 提供的 藍圖 ,以符合法規和合規性標準。 這些藍圖包含適用于各種架構的預先建立範本。

  • Ci/cd 整合:您可以將範本整合至持續整合和持續部署 (CI/cd) 工具,這可將您的發行管線自動化,以進行快速且可靠的應用程式和基礎結構更新。 藉由使用 Azure DevOps 和 Resource Manager 範本工作,您可以使用 Azure Pipelines 持續建立和部署 ARM 範本專案。 若要深入瞭解,請參閱VS project with Pipeline and教學課程: Azure Resource Manager 範本與 Azure Pipelines 的持續整合

  • 可匯出的程式 代碼:您可以藉由匯出資源群組的目前狀態,或查看用於特定部署的範本,來取得現有資源群組的範本。 查看 匯出的範本 是瞭解範本語法的實用方法。

  • 撰寫工具:您可以使用 Visual Studio Code和範本工具延伸模組來撰寫範本。 您可以取得 intellisense、語法反白顯示、內嵌說明,以及許多其他語言函數。 除了 Visual Studio Code 之外,您也可以使用Visual Studio

範本檔案

在您的範本內,您可以撰寫擴充 JSON 功能的 範本運算式 。 這些運算式會利用 Resource Manager 所提供的 函數

範本包含下列各節:

  • 參數 -在部署期間提供值,以允許在不同的環境中使用相同的範本。

  • 變數 -定義在範本中重複使用的值。 您可以從參數值來建立它們。

  • 使用者定義函數 -建立可簡化範本的自訂函式。

  • 資源 -指定要部署的資源。

  • 輸出 -從已部署的資源傳回值。

範本部署進程

當您部署範本時,Resource Manager 會將範本轉換成 REST API 作業。 例如,當 Resource Manager 收到具有下列資源定義的範本︰

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2019-04-01",
    "name": "mystorageaccount",
    "location": "westus",
    "sku": {
      "name": "Standard_LRS"
    },
    "kind": "StorageV2",
    "properties": {}
  }
]

它會將定義轉換成下列 REST API 作業,該作業會再傳送給 Microsoft.Storage 資源提供者︰

PUT
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/mystorageaccount?api-version=2019-04-01
REQUEST BODY
{
  "location": "westus",
  "sku": {
    "name": "Standard_LRS"
  },
  "kind": "StorageV2",
  "properties": {}
}

請注意,您在此資源範本中設定的 apiVersion 會用來做為 REST 作業的 API 版本。 您可以重複部署範本,並讓它能夠繼續運作。 藉由使用相同的 API 版本,您不必擔心可能會在較新版本中引進的重大變更。

若要部署範本,請使用下列任何選項:

範本設計

範本和資源群組的定義方式全由您決定,方案的管理方式也是如此。 比方說,您可以透過單一範本在單一資源群組中部署三層式應用程式。

三層式範本

但您不需要在單一的範本中定義整個基礎結構。 通常的合理作法是將您的部署需求分成一組有目標及特定目的的範本。 您可以輕鬆地將這些範本重複使用於不同的方案。   若要部署特定解決方案,您可以建立一個連結所有必要範本的主要範本。 下圖顯示如何透過包含三個巢狀範本的父範本部署三層式方案。

巢狀階層範本

如果您想像的階層有不同的生命週期,您可以將這三個階層部署到不同的資源群組。 請注意,資源仍可連結至其他資源群組中的資源。

階層範本

如需巢狀範本的相關資訊,請參閱透過 Azure Resource Manager 使用連結的範本

共用範本

建立範本之後,您可能會想要與組織中的其他使用者共用它。 範本規格 可讓您將範本儲存為資源類型。 您可以使用以角色為基礎的存取控制來管理對範本規格的存取。具有範本規格之讀取權限的使用者可以進行部署,但不能變更範本。

這種方法表示您可以安全地共用符合組織標準的範本。

後續步驟