教學課程:使用 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
- 共用資源庫
請前進到下一個教學課程,以了解虛擬機器擴展集。