在 Azure Compute Gallery 中儲存和共用映像

適用於: ✔️ Linux VM ✔️ Windows VM ✔️ 彈性擴展集 ✔️ 統一擴展集

根據映像的建立方式,映像可能是完整 VM (包括任何連結的資料磁碟) 或僅含 OS 磁碟的複本。 當您從映像建立 VM 時,映像中的 VHD 複本用於為新的 VM 建立磁碟。 映像會保留在儲存體中,而且可以一再用來建立新的 VM。

如果您有大量映像需要維護,而且想要讓整個公司使用,您可以使用 Azure Compute Gallery 作為存放庫。

使用資源庫來儲存映像時會建立多種資源類型:

資源 描述
影像來源 此資源可用在資源庫中建立映像版本。 映像來源可以是一般化或特殊化的現有 Azure VM、受控映像、快照集、VHD 或另一個資源庫中的映像版本。
資源庫 與 Azure Marketplace 一樣,資源庫是用於管理和共用映像及其他資源的存放庫,但您可以控制誰能夠存取。
映像定義 映像定義在資源庫內建立,並提供映像的相關資訊及利用映像建立 VM 時的任何需求。 這包括映像是 Windows 還是 Linux、版本資訊以及最小和最大的記憶體需求。 這是映像類型的定義。
映像版本 映像版本是在使用資源庫時用來建立 VM 的項目。 您可以視需要針對您的環境擁有多個版本的映像。 和受控映像一樣,當您使用映像版本來建立 VM 時,系統會使用映像版本來建立 VM 的新磁碟。 映像版本可以使用數次。

顯示如何在資源庫中有多個映像版本的圖形

映像定義

映像定義是映像版本的邏輯分組。 映像定義會保存映像建立原因的相關資訊,也包含映像中繼資料,例如適用於什麼作業系統、支援的功能以及有關使用映像的其他資訊。 映像定義就像是所有關於建立特定映像詳細資料的計畫。 並非從映像定義部署 VM,而是從定義建立的映像版本部署 VM。

每個映像定義都有三個參數,組合使用:發行者供應項目SKU。 這些項目是用來尋找特定的映像定義。 不同的映像定義之間可以擁有一或兩個相同的值,但不能三個值都相同。 例如,以下為三個映像定義以及其值:

映像定義 發行者 供應項目 Sku
myImage1 Contoso Finance 後端
myImage2 Contoso Finance 前端
myImage3 測試 Finance 前端

這三全都有唯一的值組。 格式類似於您目前可以如何在 Azure PowerShell 中針對 Azure Marketplace 映像指定發行者、供應項目和 SKU,以取得最新版本的 Marketplace 映像。 每個映像定義都需要這些值的唯一值組。

下列參數會決定其可以包含哪些類型的映像版本:

  • 作業系統狀態 - 您可以將 OS 狀態設定為一般化或特殊化。 這是必要欄位。
  • 作業系統 - 可以是 Windows 或 Linux。 這是必要欄位。
  • Hyper-V 世代 - 指定映像是從第 1 代還是第 2 代 Hyper-V VHD 建立。 預設值為第 1 代。

映像定義包含映像的中繼資料,以允許群組支援相同功能、計劃、OS 狀態、OS 類型及其他的映像。 以下是可在映像定義上設定的其他參數,讓您可以更輕鬆地追蹤您的資源:

  • 描述 - 使用描述以提供有關映像定義為何存在的詳細資訊。 例如,您的前端伺服器可能會有預先安裝應用程式的映像定義。

  • EULA - 可用來指向映像定義特有的使用者授權合約。

  • 隱私權聲明和版本資訊 - 將版本資訊和隱私權聲明儲存在 Azure 儲存體中,並提供 URI 供您作為映像定義的一部分來存取這些聲明。

  • 生命週期結束日期 - 針對映像定義中的所有映像版本,建立之後不得使用映像的預設日期。 生命週期結束日期為參考性;使用者仍然可以從超過生命週期結束日期的映像和版本建立 VM。

  • 標記 - 您可以在建立映像定義時新增標記。 如需標記的詳細資訊,請參閱使用標記來組織您的資源

  • vCPU 和記憶體最小值和最大值建議 - 如果您的映像有 vCPU 和記憶體建議,您可以將該資訊附加至映像定義。

  • 不允許的磁碟類型 - 您可以提供 VM 儲存體需求的相關資訊。 例如,如果映像不適合標準 HDD 磁碟,您可以將其新增至不允許清單。

  • Marketplace 映像的購買方案資訊 - -PurchasePlanPublisher-PurchasePlanName-PurchasePlanProduct。 如需購買方案資訊的詳細資訊,請參閱在 Azure Marketplace 中尋找映像在建立映像時提供 Azure Marketplace 購買方案資訊

  • 架構

  • 功能可讓您根據資源庫類型,指定映像上支援的其他功能和 SecurityType:

    功能 接受的值 定義 支援於
    IsHibernateSupported True、False 建立支援休眠的 VM。 私人、直接共用、社群
    IsAcceleratedNetworkSupported True、False 建立已啟用加速網路的 VM。 在映像定義上設為 True 時,擷取不支援加速網路的 VM 是不受支援的。 私人、直接共用、社群
    DiskControllerType ["SCSI", "NVMe"],["SCSI"] 將此設定為使用 SCSI 或 NVMe 磁碟類型。 NVMe VM 和磁碟只能在標記為支援 NVMe 的映像定義中擷取。 私人、直接共用、社群

    當您使用 features 參數指定 SecurityType 時,它會限制在 VM 上啟用的安全性功能。 某些類型會根據其儲存的資源庫類型而受到限制:

    SecurityType 定義 支援於
    ConfidentialVMSupported 這是不包含 VMGS Blob 的一般 Gen2 映像。 您可以從此映像類型建立 Gen2 VM 或機密 VM 私人、直接共用、社群
    機密 VM 只有機密 VM 可以從此映像類型建立 私人
    TrustedLaunchSupported 這是不包含 VMGS Blob 的一般 Gen2 映像。 您可以從此映像類型建立 Gen2 VM 或 TrustedLaunch VM。 私人、直接共用、社群
    TrustedLaunch 只有 TrustedLaunch VM 可以從此映像類型建立 私人
    TrustedLaunchAndConfidentialVmSupported 這是不包含 VMGS Blob 的一般 Gen2 映像。 Gen2 VM、TrustedLaunch VM 或 ConfidentialVM 可以從此映像類型建立。 私人、直接共用、社群

    如需詳細資訊,請參閱新增映像定義功能和 SecurityType 的 CLI 範例或 PowerShell 範例

    **只有可用的區域才支援 ConfidentialVM,您可以在這裡找到支援的區域。

映像版本

映像版本是您用來建立 VM 的版本。 您可以視需要針對您的環境擁有多個版本的映像。 當您使用映像版本來建立 VM 時,系統會使用映像版本來建立 VM 的新磁碟。 映像版本可以使用數次。

映像版本的屬性如下:

  • 版本號碼。 這會用作映像版本的名稱。 格式一律為:MajorVersion.MinorVersion.Patch。 若您指定在建立 VM 時使用最新,系統會依序根據最高的 MajorVersion、MinorVersion、Patch 來選擇最新的映像。
  • 來源。 來源可以是 VM、受控磁碟、快照集、受控映像或其他映像版本。
  • 生命週期結束日期。 指出映像版本的生命週期結束日期。 生命週期結束日期為參考性;使用者仍然可以從超過生命週期結束日期的版本建立 VM。

一般化和特殊化映像

Azure Compute Gallery 支援兩種作業系統狀態。 映像通常需要用來建立映像的 VM 已一般化,然後才會接受映像。 一般化是從 VM 中移除電腦和使用者特定資訊的程序。 針對 Linux,您可以使用 waagent-deprovision-deprovision+user 參數。 針對 Windows,會使用 Sysprep 工具。

特殊化 VM 尚未經過移除電腦特定資訊和帳戶的程序。 此外,從特殊化映像建立的 VM 沒有相關聯的 osProfile。 這表示除了一些優點以外,特殊化映像也會有一些限制。

  • 從特殊化映像建立的 VM 和擴展集,可以更快速地啟動並執行。 因為是從已通過第一次開機的來源所建立,所以從這些映像建立的 VM 開機更快速。
  • 可以用來登入 VM 的帳戶也可用於使用從該 VM 建立特殊化映像所建立的任何 VM。
  • VM 將會擁有從中取得映像的 VM 電腦名稱。 您應該變更電腦名稱以避免發生衝突。
  • osProfile 是使用 secrets 將一些敏感性資訊傳遞至 VM 的方式。 這可能會導致使用 KeyVault、WinRM 和其他使用 osProfilesecrets 功能的問題。 在某些情況下,您可以使用受管理的服務識別 (MSI) 來解決這些限制。

更新資源

建立資源庫資源之後,您可以做一些變更。 這些項目限制為:

Azure Compute Gallery:

  • 描述

映像定義:

  • 建議的 vCPU
  • 建議的記憶體
  • 描述
  • 生命週期結束日期
  • ReleaseNotes

映像版本:

  • 區域複本計數
  • 目標區域
  • 從最新項目中排除
  • 生命週期結束日期

共用

有三種主要的方式可在 Azure Compute Gallery 中共用映像,實際適用方式取決於您的共用對象:

共用對象: 人員 群組 Service Principal 特定訂用帳戶 (或) 租使用者中的所有使用者 與 Azure 中的所有使用者全體
RBAC 共用 Yes .是 .是 No
RBAC + 直接共用資源庫 Yes .是 .是 .是 No
RBAC + 社群資源庫 Yes .是 .是 Yes

建立 ACG 映射所需的 RBAC 權限:

ACG 映像可由來自各種來源的使用者建立,包括虛擬機、磁碟/快照集和 VHD。 本節概述建立 Azure 計算資源庫映像所需的各種用戶權力。 識別不需要許可權的識別將無法建立 ACG 映像。

來源類型 所需的權限
虛擬機器 寫入
磁碟/快照集 寫入
VHD 寫入 (listKeys)
受控映像 參閱
資源庫影像 參閱

如需有關 Azure 內建角色的其他資訊,請參閱我們的檔,以 授與 RBAC 許可權

淺層複寫

當您建立映像版本時,可以將複寫模式設定為淺層以進行開發和測試。 淺層複寫會略過複製影像,因此映像版本會更快就緒。 但是,這也表示您無法從該映像版本部署大量 VM。 這類似於舊版受控映像的運作方式。

如果您有不常部署的大型映像 (最多 32TB),則淺層複寫也很有用。 因為未複製來源映像,所以可使用較大的磁碟。 但是,它們無法同時用於部署大量 VM。

若要設定淺層複寫的映像,請使用 --replication-mode Shallow 搭配 Azure CLI。

SDK 支援

下列 SDK 支援建立 Azure Compute Gallery:

範本

您可以使用範本建立 Azure Compute Gallery 資源。 有數個快速入門範本可以使用:

常見問題集

若要在 Azure 入口網站上跨您可存取的訂用帳戶列出所有 Azure Compute Gallery 資源,請遵循下列步驟:

  1. 開啟 Azure 入口網站
  2. 向下捲動頁面,然後選取 [所有資源]
  3. 選取所有要列出其內含全部資源的訂用帳戶。
  4. 尋找 Azure Compute Gallery 類型的資源。

若要跨您具有權限的訂用帳戶列出所有 Azure Compute Gallery 資源,請在 Azure CLI 中使用下列命令:

   az account list -otsv --query "[].id" | xargs -n 1 az sig list --subscription