教學課程:使用 Azure CLI 建立 Azure VM 的自訂映像

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

自訂映像類似 Marketplace 映像,但您要自行建立它們。 自訂映像可用於啟動程序設定,例如,預先載入應用程式、應用程式設定和其他 OS 設定。 在本教學課程中,您將建立自己的 Azure 虛擬機器自訂映像。 您將學習如何:

  • 建立 Azure Compute Gallery (先前稱為共用映像庫)
  • 建立映像定義
  • 建立映像版本
  • 從映像建立 VM
  • 共用資源庫

本教學課程會使用 Azure Cloud Shell 內的 CLI,這會不斷更新至最新版本。 若要開啟 Cloud Shell,請選取任何程式碼區塊頂端的 [試試看]

如果您選擇在本機安裝和使用 CLI,本教學課程會要求您執行 Azure CLI 2.35.0 版或更新版本。 執行 az --version 以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI

概觀

Azure Compute Gallery 可簡化跨組織共用自訂映像。 自訂映像類似 Marketplace 映像,但您要自行建立它們。 自訂映像可用於啟動程序設定,例如,預先載入應用程式、應用程式設定和其他 OS 設定。

Azure Compute Gallery 可讓您與其他人共用您的自訂 VM 映像。 選擇您要共用的映像、您要開放使用的區域,以及您要共用的對象。

Azure Compute Gallery 功能有多個資源類型:

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

開始之前

下列步驟將示範如何將現有 VM 轉換成可重複使用的自訂映像,以便讓您用來建立新的 VM 執行個體。

若要完成本教學課程中的範例,您目前必須具有虛擬機器。 如有需要,您可以查看 CLI 快速入門來建立要用於本教學課程的 VM。 逐步完成教學課程之後,請視需要取代資源名稱。

啟動 Azure Cloud Shell

Azure Cloud Shell 是免費的互動式 Shell,可讓您用來執行本文中的步驟。 它具有預先安裝和設定的共用 Azure 工具,可與您的帳戶搭配使用。

若要開啟 Cloud Shell,只要選取程式碼區塊右上角的 [試試看] 即可。 您也可以移至 https://shell.azure.com/powershell ,從另一個瀏覽器索引標籤啟動 Cloud Shell。 選取 [複製] 即可複製程式碼區塊,將它貼到 Cloud Shell 中,然後按 enter 鍵加以執行。

資源庫是用於啟用映像共用的主要資源。

資源庫名稱允許的字元為大寫或小寫字母、數字、點和句點。 資源庫名稱不能包含連字號。 資源庫名稱在您的訂用帳戶內必須是唯一的。

使用 az sig create 建立資源庫。 下列範例會在「美國東部」建立名為 myGalleryRG 的資源群組,以及名為 myGallery 的資源庫。

az group create --name myGalleryRG --location eastus
az sig create --resource-group myGalleryRG --gallery-name myGallery

取得 VM 的相關資訊

您可以使用 az vm list查看可用的 VM 清單。

az vm list --output table

當您知道 VM 名稱及其所在的資源群組後,請使用 az vm get-instance-view來取得 VM 的識別碼。

az vm get-instance-view -g MyResourceGroup -n MyVm --query id

複製 VM 的識別碼,以供稍後使用。

建立映像定義

映像定義會建立映像的邏輯群組。 並且可用來管理在其中建立的映像版本相關資訊。

映像定義名稱可以由大寫或小寫字母、數字、點、虛線和句點組成。

若要深入了解您可以為映像定義指定哪些值,請參閱映像定義

使用 az sig image-definition create,在資源庫中建立映像定義。

在此範例中,映像定義會命名為 myImageDefinition,而且適用於特製化的 Linux OS 映像。

az sig image-definition create \
   --resource-group myGalleryRG \
   --gallery-name myGallery \
   --gallery-image-definition myImageDefinition \
   --publisher myPublisher \
   --offer myOffer \
   --sku mySKU \
   --os-type Linux \
   --os-state specialized

從輸出複製映像定義的識別碼,以供稍後使用。

建立映像版本

請使用 az sig image-version create 從 VM 建立映像版本。

映像版本允許的字元是數字及句點。 數字必須在 32 位元整數的範圍內。 格式:MajorVersion.MinorVersion.Patch

在此範例中,我們的映像版本是 1.0.0,而我們將使用區域備援儲存體,在「美國中西部」區域中建立 2 個複本、在「美國中南部」區域中建立 1 個複本,以及在「美國東部 2」區域中建立 1 個複本。 複寫區域必須包含來源 VM 所在的區域。

將此範例中 --managed-image 的值取代為上一個步驟中的 VM 識別碼。

az sig image-version create \
   --resource-group myGalleryRG \
   --gallery-name myGallery \
   --gallery-image-definition myImageDefinition \
   --gallery-image-version 1.0.0 \
   --target-regions "westcentralus" "southcentralus=1" "eastus=1=standard_zrs" \
   --replica-count 2 \
   --managed-image "/subscriptions/<Subscription ID>/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM"

注意

您必須等候映像版本完全完成建立和複寫後,才能使用相同的受控映像來建立另一個映像版本。

建立映像版本時,您也可以藉由新增 --storage-account-type premium_lrs,將映像儲存在「進階」儲存體,或新增 --storage-account-type standard_zrs,將映像儲存在區域備援儲存體

建立 VM

使用 az vm create 建立 VM,並使用 --specialized 參數來指出映像是特製化映像。

使用 --image 的映像定義識別碼,從可用的最新映像版本建立 VM。 您也可以藉由提供 --image 的映像版本識別碼,從特定版本建立 VM。

在此範例中,我們會從最新版本的 myImageDefinition 映像建立 VM。

az group create --name myResourceGroup --location eastus
az vm create --resource-group myResourceGroup \
    --name myVM2 \
    --image "/subscriptions/<Subscription ID>/resourceGroups/myGalleryRG/providers/Microsoft.Compute/galleries/myGallery/images/myImageDefinition" \
    --specialized

您可以使用 Azure 角色型存取控制 (Azure RBAC) 來跨訂用帳戶共用映像。 您可以在資源庫、映像定義或映像版本層級上共用映像。 具有映像版本 (甚至可跨訂用帳戶) 讀取權限的使用者,都能夠使用映像版本來部署 VM。

我們建議您在資源庫層級上與其他使用者共用。 若要取得資源庫的物件識別碼,請使用 az sig show

az sig show \
   --resource-group myGalleryRG \
   --gallery-name myGallery \
   --query id

使用物件識別碼作為範圍,連同電子郵件地址和 az role assignment create,以授權使用者存取 Azure Compute Gallery。 將 <email-address><gallery iD> 取代為您的個人資訊。

az role assignment create \
   --role "Reader" \
   --assignee <email address> \
   --scope <gallery ID>

如需如何使用 Azure RBAC 來共用資源的詳細資訊,請參閱使用 Azure CLI 新增或移除 Azure 角色指派

Azure Image Builder

Azure 也提供以 Packer 為基礎的服務:Azure VM Image Builder。 在範本中描述您的自訂,其就會處理映像建立作業。

下一步

您在本教學課程中建立了自訂 VM 映像。 您已了解如何︰

  • 建立 Azure Compute Gallery
  • 建立映像定義
  • 建立映像版本
  • 從映像建立 VM
  • 共用資源庫

請前進到下一個教學課程,以了解虛擬機器擴展集。