如何建立虛擬機器或 VHD 的受控映像

適用于: : Heavy_check_mark: Linux vm: Heavy_check_mark:彈性的擴展集

若要建立虛擬機器 (VM) 的多個複本以在 Azure 中用於開發和測試,請擷取 VM 或 OS VHD 的受控映像。 若要大規模建立、儲存和共用映像,請參閱共用映像資源庫

一個受控映像最多可支援 20 個同時部署。 嘗試從相同的受控映像同時建立 20 個以上的虛擬機器時,因為單一 VHD 的儲存體效能限制之故,可能會導致佈建逾時。 若要同時建立 20 個以上的 VM,請使用共用映像資源庫中設定為每 20 個並行虛擬機器部署 1 個複本的映像。

若要建立受控映像,您必須移除個人帳戶資訊。 在下列步驟中,您將取消佈建現有的 VM、將它解除配置,然後建立映像。 您可以使用此映像,在您訂用帳戶的任何資源群組中建立 VM。

若要建立現有 Linux vm 的複本以進行備份或偵錯工具,或從內部部署 VM 上傳 linux VHD,請參閱Upload,並從自訂磁片建立 linux vm

您可以使用 AZURE VM 映射 產生器來建立自訂映射,而不需要學習任何工具或設定組建管線,只要提供映射設定,映射產生器就會建立映射。 如需詳細資訊,請參閱開始使用 Azure VM Image Builder

建立映像之前,您需要下列項目:

偏好使用教學課程?

如需本文的簡化版本,以進行測試、評估或深入了解 Azure 中的 VM,請參閱使用 CLI 建立 Azure VM 的自訂映像。 否則,請繼續參閱這裡以瞭解整體情況。

步驟 1:取消佈建 VM

首先使用 Azure VM 代理程式來取消佈建 VM,以將電腦特定的檔案和資料刪除。 在來源 Linux VM 上使用 waagent 命令搭配 -deprovision+user 參數。 如需詳細資訊,請參閱 Azure Linux 代理程式使用者指南。 無法反轉此進程。

  1. 使用 SSH 用戶端連線到 Linux VM。

  2. 在 SSH 視窗中,輸入下列命令:

    sudo waagent -deprovision+user
    

    注意

    只在您要擷取作為映像的 VM 上執行這個命令。 此命令不能保證映像檔中的所有機密資訊都會清除完畢或適合轉散發。 +user 參數也會移除最後一個佈建的使用者帳戶。 若要在 VM 中保留使用者帳戶認證,僅使用 -deprovision

  3. 輸入 y 繼續。 您可以新增 -force 參數,便不用進行此確認步驟。

  4. 在命令完成之後,請輸入 exit 關閉 SSH 用戶端。 此時 VM 仍會在執行中。

步驟 2:建立 VM 映像

使用 Azure CLI 將 VM 標記為一般化,並擷取映像。 在下列範例中,請以您自己的值取代範例參數名稱。 範例參數名稱包含 myResourceGroupmyVnetmyVM

  1. 使用 az vm deallocate 解除配置已取消佈建的 VM。 下列範例會解除配置名為 myResourceGroup 資源群組中名為 myVM 的 VM。

    az vm deallocate \
        --resource-group myResourceGroup \
        --name myVM
    

    等到 VM 完全解除配置,再繼續進行。 這可能需要幾分鐘才能完成。 VM 會在解除配置期間關閉。

  2. 使用 az vm generalize,將 VM 標記為一般化。 下列範例會將名為 myResourceGroup 的資源群組中名為 myVM 的 VM 標記為一般化。

    az vm generalize \
        --resource-group myResourceGroup \
        --name myVM
    

    已一般化的 VM 無法再重新啟動。

  3. 使用 az image create 建立 VM 資源的映像。 下列範例會使用名為 myVM 的 VM 資源,在 myResourceGroup 資源群組中建立名為 myImage 的映像。

    az image create \
        --resource-group myResourceGroup \
    --name myImage --source myVM
    

    注意

    此映像與來源 VM 建立於相同的資源群組中。 您可以從此映像,在您訂用帳戶的任何資源群組中建立 VM。 從管理觀點來看,您可能想為您的 VM 資源和映像建立特定的資源群組。

    如果您要捕獲第2代 VM 的映射,也請使用 --hyper-v-generation V2 參數。 如需詳細資訊,請參閱 第2代 vm

    如果您想要將映像儲存於區域復原的儲存體中,則需要在支援可用性區域且包含 --zone-resilient true 參數的區域中建立它。

此命令會傳回描述 VM 映像的 JSON。 儲存此輸出以供日後參考。

步驟 3:從擷取的映像建立 VM

使用您以 az vm create 建立的映像來建立 VM。 下列範例會從名為 myImage 的映像建立名為 myVMDeployed 的 VM。

az vm create \
   --resource-group myResourceGroup \
   --name myVMDeployed \
   --image myImage\
   --admin-username azureuser \
   --ssh-key-value ~/.ssh/id_rsa.pub

在另一個資源群組中建立 VM

您可以從某個映像,在您訂用帳戶的任何資源群組中建立 VM。 若要在與映像不同的資源群組中建立 VM,請指定您映像的完整資源識別碼。 使用 az image list 來檢視映像清單。 輸出類似於下列範例:

"id": "/subscriptions/guid/resourceGroups/MYRESOURCEGROUP/providers/Microsoft.Compute/images/myImage",
   "location": "westus",
   "name": "myImage",

下列範例藉由指定映像資源識別碼,進而使用 az vm create 在與來源映像不同的資源群組中建立 VM。

az vm create \
   --resource-group myOtherResourceGroup \
   --name myOtherVMDeployed \
   --image "/subscriptions/guid/resourceGroups/MYRESOURCEGROUP/providers/Microsoft.Compute/images/myImage" \
   --admin-username azureuser \
   --ssh-key-value ~/.ssh/id_rsa.pub

步驟 4:驗證部署

透過 SSH 連線到您建立的虛擬機器,以驗證部署並開始使用新的 VM。 若要透過 SSH 連接,請利用 az vm show 尋找您 VM 的 IP 位址或 FQDN。

az vm show \
   --resource-group myResourceGroup \
   --name myVMDeployed \
   --show-details

後續步驟

若要大規模建立、儲存和共用映像,請參閱共用映像資源庫