How to capture a classic Linux virtual machine as an image
Azure has two different deployment models for creating and working with resources: Resource Manager and Classic. This article covers using the Classic deployment model. Microsoft recommends that most new deployments use the Resource Manager model. Learn how to perform these steps using the Resource Manager model.
Starting November 15, 2017, virtual machines will be available only in the Azure portal.
This article shows you how to capture a classic Azure virtual machine (VM) running Linux as an image to create other virtual machines. This image includes the OS disk and data disks attached to the VM. It doesn't include networking configuration, so you need to configure that when you create the other VM from the image.
Azure stores the image under Images, along with any images you've uploaded. For more information about images, see About Virtual Machine Images in Azure.
Before you begin
These steps assume that you've already created an Azure VM using the Classic deployment model and configured the operating system, including attaching any data disks. If you need to create a VM, read How to Create a Linux Virtual Machine.
Capture the virtual machine
Connect to the VM using an SSH client of your choice.
In the SSH window, type the following command. The output from
waagentmay vary slightly depending on the version of this utility:
sudo waagent -deprovision+user
The preceding command attempts to clean the system and make it suitable for reprovisioning. This operation performs the following tasks:
Removes SSH host keys (if Provisioning.RegenerateSshHostKeyPair is 'y' in the configuration file)
Clears nameserver configuration in /etc/resolv.conf
rootuser password from /etc/shadow (if Provisioning.DeleteRootPassword is 'y' in the configuration file)
Removes cached DHCP client leases
Resets host name to localhost.localdomain
Deletes the last provisioned user account (obtained from /var/lib/waagent) and associated data.
Deprovisioning deletes files and data to "generalize" the image. Only run this command on a VM that you intend to capture as a new image template. It does not guarantee that the image is cleared of all sensitive information or is suitable for redistribution to third parties.
Type y to continue. You can add the
-forceparameter to avoid this confirmation step.
Type Exit to close the SSH client.
From your client computer, open Azure CLI and login to your Azure subscription. For details, read Connect to an Azure subscription from the Azure CLI.
In the Azure portal, log in to the portal.
Make sure you are in Service Management mode:
azure config mode asm
Shut down the VM that is already deprovisioned. The following example shuts down the VM named
azure vm shutdown myVM
If needed, you can view a list all the VMs created in your subscription by using
azure vm list
If you're using the Azure portal, select the VM and click Stop to shut down the VM.
When the VM is stopped, capture the image. The following example captures the VM named
myVMand creates a generalized image named
azure vm capture -t myVM myNewVM
-tsubcommand deletes the original virtual machine.
In the Azure portal, you can capture an image by selecting Image from the hub menu. You need to supply the following information for the image: name, resource group, location, operating system type, and storage blob path.
The new image is now available in the list of images that can be used to configure any new VM. You can view it with the command:
azure vm image list
On the Azure portal, the new image appears in the VM images (classic) that belongs to the Compute services. You can access VM images (classic) by clicking All services at the top of the Azure service list, and then looking in the Compute services.
The image is ready to be used to create VMs. You can use the Azure CLI command
azure vm create and supply the image name you created. For more information, see Using the Azure CLI with Classic deployment model.
See also: Azure Linux Agent User Guide