Azure DevTest Labs: Changes in exporting custom image VHD files
Published date: May 31, 2017
When you select to create custom images from a virtual machine, Azure DevTest Labs now generates the following instead of VHD files:
- Managed images for Sysprep'ed (for Windows)/deprovisioned (for Linux) lab VMs
- Managed snapshots for non-Sysprep'ed/deprovisioned VMs
This allows Sysprep'ed/deprovisioned custom images to support data disks in addition to the OS disk through a single image. It also enables hundreds of new VMs by using your custom image without the need to copy or manage any storage accounts. The change also improves the performance and reliability of creating custom images from lab VMs.
When you need to export custom image VHD files for distribution, use these steps:
- Apply the Sysprep artifact (for a Windows VM) or deprovision the artifact (for a Linux VM) to your target lab VM. Skip this step if you need a non-Sysprep'ed/deprovisioned custom image.
- Export the VHD file directly from the VM OS disk.
You can export the VHD file from the Azure portal or through APIs.
To export the VHD file from the portal:
- Locate the Compute VM resource from the lab VM and open the Compute VM blade.
- Select Disks from the SETTINGS menu.
- Select the OS disk on the Disks blade.
- If it's a managed disk, select Export button on top of the disk blade. Otherwise, the VHD URI is shown at the bottom of the page.
To export the VHD file from a managed VM OS disk through automation, try the following sample in PowerShell:
$DTLVMID = "/subscriptions/" + $subscriptionID + "/resourcegroups/" + $labRgName + "/providers/microsoft.devtestlab/labs/" + $labName + "/virtualmachines/" + $labVmName
$DTLVM = Get-AzureRmResource -ResourceId $DTLVMID
$ComputeID = Get-AzureRmVM | Where-Object -FilterScript {$_.Id -eq $DTLVM.Properties.computeId}
$mdiskURL = (Grant-AzureRmDiskAccess -ResourceGroupName $ComputeID.ResourceGroupName -DiskName $ComputeID.StorageProfile.OsDisk.Name -Access Read -DurationInSecond 3600).AccessSAS
Grant-AzureRmDiskAccess is what gives you a valid URL for the VHD.