什麼是 Azure Resource Manager?
您花了一些時間讓小組了解基礎結構即程式碼的優點,以及可用的不同方法。 公司正在快速成長,而您的小組知道公司會將大量資源部署到 Azure。 您與小組已決定宣告式基礎結構即程式碼是適合的資源佈建方法。 但小組不想要維護列出每個部署步驟的指令碼。 在開始建立第一個範本之前,您必須先了解 Azure Resource Manager 的運作方式。 調查可與 Azure 搭配使用的範本類型,將有助您決定基礎結構即程式碼策略中的後續步驟。
在此單元中,您會了解 Resource Manager,以及 Resource Manager 範本的兩種類型。
Azure Resource Manager 概念
Azure Resource Manager 是用來在 Azure 中部署和管理資源的服務。 您可以使用 Resource Manager 建立、更新和刪除 Azure 訂用帳戶中的資源。 您可以使用許多工具與 Resource Manager 互動,包括 Azure 入口網站。 Resource Manager 也提供一系列的其他功能 (例如存取控制、稽核及標記),以協助您在部署之後管理資源。
辭彙
當開始使用 Resource Manager 的雲端旅程時,請務必了解一些術語和概念:
資源:Azure 平台上提供的可管理項目。 虛擬網路、虛擬機器、儲存體帳戶、Web 應用程式和資料庫都是資源範例。
資源群組:保留 Azure 解決方案相關資源的邏輯容器。 資源群組包含想要以群組形式管理的資源。 大部分的 Azure 資源都會包含在資源群組中。 您可以根據最適合您解決方案的方式,決定哪些資源屬於資源群組。
注意
有一小部分的資源不會包含在資源群組中。 這些資源類型具有特定用途,例如管理存取控制和實施原則。 您會在稍後的課程模組中深入了解這些資源。
訂用帳戶:資源和資源群組的邏輯容器和計費界限。 每個 Azure 資源和資源群組只會與一個訂用帳戶建立關聯。
管理群組:用來管理多個訂用帳戶的邏輯容器。 您可以定義管理群組、訂用帳戶、資源群組和資源的階層,透過繼承來有效率地管理存取、原則和合規性。
Azure Resource Manager 範本 (ARM 範本):一種範本檔案,可定義一或多個要部署到資源群組、訂用帳戶、管理群組或租用戶的資源。 您可以使用此範本,以一致且可重複的方式部署資源。 ARM 範本檔案有兩種類型:JSON 和 Bicep。 本課程模組將著重於 Bicep。
優點
Resource Manager 提供與基礎結構即程式碼資源佈建相關的許多優點和功能:
- 您能以群組形式部署、管理和監視解決方案中的資源,而不是個別進行。
- 您可以在整個開發生命週期中重新部署解決方案,並確信資源會以一致的狀態部署。
- 您可以透過宣告式範本管理基礎結構,而不是使用指令碼。
- 您可以指定資源相依性,確保資源會依正確順序部署。
作業:控制平面和資料平面
您可以在 Azure 中執行兩種類型的作業:控制平面作業和資料平面作業。 控制平面可用來管理您訂用帳戶中的資源。 資料平面可用來存取資源所公開的功能。
例如,您會使用控制平面作業建立虛擬機器,但您會使用資料平面作業透過遠端桌面通訊協定 (RDP) 連線到虛擬機器。
控制平面
當從任何 Azure 工具、API 或軟體開發套件 (SDK) 傳送要求時,Resource Manager 會接收、驗證並授權要求。 然後會將要求傳送至 Azure 資源提供者,以執行要求的動作。 因為所有要求都是透過相同的 API 處理,所以您會在 Azure 可用的所有不同工具中看到一致結果和功能。
下圖顯示 Resource Manager 在處理 Azure 要求中扮演的角色:
所有控制平面作業要求都會傳送至 Resource Manager URL。 例如,虛擬機器的建立或更新作業是控制平面作業。 以下是此作業的要求 URL:
PUT https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/{virtualMachineName}?api-version=2022-08-01
控制平面了解需要建立哪些資源,以及哪些資源已經存在。 Resource Manager 了解這些要求之間的差異,而且不會建立相同資源或刪除現有資源,但有方法可以覆寫此行為。
資料平面
資料平面作業開始時,會將要求傳送至您 Azure 訂閱中的特定端點。 例如,Azure AI 服務中的偵測語言作業是資料平面作業,因為要求 URL 為:
POST https://eastus.api.cognitive.microsoft.com/text/analytics/v2.0/languages
Resource Manager 功能 (例如存取控制和鎖定) 不一定適用於資料平面作業。 例如,使用者可能無權使用控制平面管理虛擬機器,但使用者可以登入作業系統。
什麼是 ARM 範本?
Azure Resource Manager 範本是可定義部署基礎結構和設定的檔案。 當撰寫 ARM 範本時,您會採用宣告式方法佈建資源。 這些範本會描述部署中的每個資源,但不會描述如何部署資源。 當將範本提交至 Resource Manager 進行部署時,控制平面會以有組織且一致的方式部署所定義資源。 在上一個單元中,您已了解命令式程式碼與宣告式程式碼之間的差異。
為何使用 ARM 範本?
使用 ARM 範本 (JSON 或 Bicep) 佈建資源有許多優點。
可重複的結果:ARM 範本具有等冪性,這表示您可以重複部署相同的範本並取得相同結果。 此範本不會複製資源。
協調流程:當範本部署提交至 Resource Manager 之後,會以平行方式部署範本中的資源。 此程序可讓部署更快完成。 如果某個資源相依於另一個資源,則 Resource Manager 會依正確順序協調這些部署。
預覽:Azure PowerShell 和 Azure CLI 中提供的模擬工具可讓您在部署範本之前,預覽環境的變更。 此工具會詳細列出您的範本即將建立、修改和刪除的任何內容。
測試和驗證:您可以使用 Bicep linter 之類的工具,在部署之前先檢查範本的品質。 提交至 Resource Manager 的 ARM 範本會經過驗證,再進行部署程序。 這項驗證會在佈建資源之前警告您範本中的任何錯誤。
模組化:您可以將範本分成較小的元件,然後在部署時將其連結在一起。
CI/CD 整合:您的 ARM 範本可以整合到多項 CI/CD 工具中,例如 Azure DevOps 和 GitHub Actions。 您可以使用這些工具,透過原始檔控制和組建發行管線設定範本的版本。
擴充性:使用部署指令碼時,您可以從 ARM 範本內執行 Bash 或 PowerShell 指令碼。 這些指令碼會在部署時執行工作,例如資料平面作業。 透過擴充性,您可以使用單一 ARM 範本部署完整的解決方案。
JSON 和 Bicep 範本
現今有兩種類型的 ARM 範本可供使用:JSON 範本和 Bicep 範本。 JavaScript 物件標記法 (JSON) 是開放標準檔案格式,多種語言皆可使用。 Bicep 是最近開發的新領域特定語言,其使用更簡單的語法撰寫 ARM 範本。 您可以針對 ARM 範本和資源部署使用任一範本格式。