教學課程:使用 Azure CLI 建立 Azure VM 的自訂映像Tutorial: Create a custom image of an Azure VM with the Azure CLI

自訂映像類似 Marketplace 映像,但您要自行建立它們。Custom images are like marketplace images, but you create them yourself. 自訂映像可用於啟動程序設定,例如,預先載入應用程式、應用程式設定和其他 OS 設定。Custom images can be used to bootstrap configurations such as preloading applications, application configurations, and other OS configurations. 在本教學課程中,您將建立自己的 Azure 虛擬機器自訂映像。In this tutorial, you create your own custom image of an Azure virtual machine. 您會了解如何:You learn how to:

  • 取消佈建及一般化 VMDeprovision and generalize VMs
  • 建立自訂映像Create a custom image
  • 從自訂映像建立 VMCreate a VM from a custom image
  • 列出訂用帳戶中的所有映像List all the images in your subscription
  • 删除映像Delete an image

使用 Azure Cloud ShellUse Azure Cloud Shell

Azure Cloud Shell 是裝載於 Azure 中的互動式殼層環境,可在瀏覽器中使用。Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Cloud Shell 可讓您使用 bashPowerShell 以與 Azure 服務搭配使用。Cloud Shell lets you use either bash or PowerShell to work with Azure services. Azure Cloud Shell 已預先安裝一些命令,可讓您執行本文提到的程式碼,而不必在本機環境上安裝任何工具。You can use the Cloud Shell pre-installed commands to run the code in this article without having to install anything on your local environment.

若要啟動 Azure Cloud Shell:To launch Azure Cloud Shell:

選項Option 範例/連結Example/Link
選取程式碼區塊右上角的 [試試看] 。Select Try It in the upper-right corner of a code block. 選取 [試用] 並不會自動將程式碼複製到 Cloud Shell 中。Selecting Try It doesn't automatically copy the code to Cloud Shell. Azure Cloud Shell 的試試看範例
請前往 https://shell.azure.com 或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。Go to https://shell.azure.com or select the Launch Cloud Shell button to open Cloud Shell in your browser. 在新視窗中啟動 Cloud ShellLaunch Cloud Shell in a new window
選取 Azure 入口網站右上角功能表列中的 [Cloud Shell] 按鈕。Select the Cloud Shell button on the top-right menu bar in the Azure portal. Azure 入口網站中的 [Cloud Shell] 按鈕

若要在 Azure Cloud Shell 中執行本文中的程式碼:To run the code in this article in Azure Cloud Shell:

  1. 開啟 Cloud Shell。Open Cloud Shell.
  2. 選取程式碼區塊上的 [複製] 按鈕,複製程式碼。Select the Copy button on a code block to copy the code.
  3. 在 Windows 和 Linux 上按 Ctrl+Shift+V;或在 macOS 上按 Cmd+Shift+V,將程式碼貼到 Cloud Shell工作階段中。Paste the code into the Cloud Shell session with Ctrl+Shift+V on Windows and Linux, or Cmd+Shift+V on macOS.
  4. 按下 Enter 鍵執行程式碼。Press Enter to run the code.

如果您選擇在本機安裝和使用 CLI,本教學課程會要求您執行 Azure CLI 2.0.30 版或更新版本。If you choose to install and use the CLI locally, this tutorial requires that you are running the Azure CLI version 2.0.30 or later. 執行 az --version 以尋找版本。Run az --version to find the version. 如果您需要安裝或升級,請參閱安裝 Azure CLIIf you need to install or upgrade, see Install Azure CLI.

開始之前Before you begin

下列步驟將詳細說明如何將現有 VM 轉換成可重複使用的自訂映像,以便讓您用來建立新的 VM 執行個體。The steps below detail how to take an existing VM and turn it into a reusable custom image that you can use to create new VM instances.

若要完成本教學課程中的範例,您目前必須具有虛擬機器。To complete the example in this tutorial, you must have an existing virtual machine. 如有需要,這個指令碼範例可以為您建立一部虛擬機器。If needed, this script sample can create one for you. 逐步完成教學課程之後,請視需要取代資源群組和 VM 名稱。When working through the tutorial, replace the resource group and VM names where needed.

建立自訂映像Create a custom image

若要建立虛擬機器的映像,您需要藉由取消佈建、解除配置,然後將來源 VM 標示為一般化,來準備 VM。To create an image of a virtual machine, you need to prepare the VM by deprovisioning, deallocating, and then marking the source VM as generalized. 一旦已備妥 VM,便可以建立映像。Once the VM has been prepared, you can create an image.

取消佈建 VMDeprovision the VM

取消佈建會藉由移除電腦特定的資訊來將 VM 一般化。Deprovisioning generalizes the VM by removing machine-specific information. 這個一般化讓您能夠從單一映像部署多部 VM。This generalization makes it possible to deploy many VMs from a single image. 解除佈建期間,將主機名稱重設為 localhost.localdomain 。During deprovisioning, the host name is reset to localhost.localdomain. SSH 主機金鑰、名稱伺服器設定、根密碼及快取的 DHCP 租用也會一併刪除。SSH host keys, nameserver configurations, root password, and cached DHCP leases are also deleted.

警告

取消佈建並將 VM 標示為一般化會使來源 VM 變得無法使用,且無法重新開機。Deprovisioning and marking the VM as generalized will make source VM unusable, and it cannot be restarted.

若要取消佈建 VM,請使用 Azure VM 代理程式 (waagent)。To deprovision the VM, use the Azure VM agent (waagent). Azure VM 代理程式會安裝於 VM 上,並管理佈建以及與 Azure 網狀架構控制器進行互動。The Azure VM agent is installed on the VM and manages provisioning and interacting with the Azure Fabric Controller. 如需詳細資訊,請參閱 Azure Linux 代理程式使用者指南For more information, see the Azure Linux Agent user guide.

使用 SSH 連接到您的 VM,並執行命令以取消佈建 VM。Connect to your VM using SSH and run the command to deprovision the VM. 利用 +user 引數,同時刪除最後佈建的使用者帳戶及所有相關聯的資料。With the +user argument, the last provisioned user account and any associated data are also deleted. 以 VM 的公用 IP 位址取代範例 IP 位址。Replace the example IP address with the public IP address of your VM.

透過 SSH 連接到 VM。SSH to the VM.

ssh azureuser@52.174.34.95

取消佈建 VM。Deprovision the VM.

sudo waagent -deprovision+user -force

關閉 SSH 工作階段。Close the SSH session.

exit

解除配置並將 VM 標示為一般化Deallocate and mark the VM as generalized

若要建立映像,必須解除配置 VM。To create an image, the VM needs to be deallocated. 使用 az vm deallocate 解除配置 VM。Deallocate the VM using az vm deallocate.

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

最後,使用 az vm generalize 將 VM 的狀態設為一般化,如此一來,Azure 平台就會知道 VM 已一般化。Finally, set the state of the VM as generalized with az vm generalize so the Azure platform knows the VM has been generalized. 您只能從一般化的 VM 建立映像。You can only create an image from a generalized VM.

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

建立映像Create the image

現在,您可以使用 az image create 來建立 VM 的映像。Now you can create an image of the VM by using az image create. 下列範例會從名為 myVM 的 VM 建立名為 myImage 的映像。The following example creates an image named myImage from a VM named myVM.

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

從映像建立 VMCreate VMs from the image

現在您已有映像,您可以使用 az vm create 從映像建立一個或多個新的 VM。Now that you have an image, you can create one or more new VMs from the image using az vm create. 下列範例會從名為 myImage 的映像建立名為 myVMfromImage 的 VM。The following example creates a VM named myVMfromImage from the image named myImage.

az vm create \
    --resource-group myResourceGroup \
    --name myVMfromImage \
    --image myImage \
    --admin-username azureuser \
    --generate-ssh-keys

映像管理Image management

以下範例是一些常見的映像管理作業,以及如何使用 Azure CLI 完成這些作業。Here are some examples of common image management tasks and how to complete them using the Azure CLI.

以資料表格式依名稱列出所有映像。List all images by name in a table format.

az image list \
    --resource-group myResourceGroup

删除映像。Delete an image. 此範例會刪除 myResourceGroup 中名為 myOldImage 的映像。This example deletes the image named myOldImage from the myResourceGroup.

az image delete \
    --name myOldImage \
    --resource-group myResourceGroup

後續步驟Next steps

您在本教學課程中建立了自訂 VM 映像。In this tutorial, you created a custom VM image. 您已了解如何︰You learned how to:

  • 取消佈建及一般化 VMDeprovision and generalize VMs
  • 建立自訂映像Create a custom image
  • 從自訂映像建立 VMCreate a VM from a custom image
  • 列出訂用帳戶中的所有映像List all the images in your subscription
  • 删除映像Delete an image

請前進到下一個教學課程,了解高可用性的虛擬機器。Advance to the next tutorial to learn about highly available virtual machines.