build_library: vm_image_util: create fixed-size VHDs for Azure

Azure requires disks to be fixed-size VHD files when uploading to blob storage
in order to create image/gallery objects from them. This is documented here[1].
To prevent mistakes from happening create disks in that format directly so that
any azure compatible tool can upload them, though azcopy is recommend because
it handles their sparseness best.

This has not been an issue for us so far because kola uses code from an older
utility that transparently handled the dynamic-to-fixed-size conversion for VHD
files (azure-vhd-utils). But people working with these things for the first
time fall into this trap.

[1]: https://docs.microsoft.com/en-us/azure/virtual-machines/linux/create-upload-generic#resizing-vhds.

Signed-off-by: Jeremi Piotrowski <jpiotrowski@microsoft.com>
This commit is contained in:
Jeremi Piotrowski 2022-02-01 17:50:42 +00:00
parent 98d964d689
commit 07568fb418

View File

@ -283,12 +283,12 @@ IMG_exoscale_DISK_FORMAT=qcow2
IMG_exoscale_OEM_PACKAGE=oem-exoscale
## azure
IMG_azure_DISK_FORMAT=vhd
IMG_azure_DISK_FORMAT=vhd_fixed
IMG_azure_DISK_LAYOUT=azure
IMG_azure_OEM_PACKAGE=oem-azure
## azure pro
IMG_azure_pro_DISK_FORMAT=vhd
IMG_azure_pro_DISK_FORMAT=vhd_fixed
IMG_azure_pro_DISK_LAYOUT=azure
IMG_azure_pro_OEM_PACKAGE=oem-azure-pro
@ -429,6 +429,7 @@ _disk_ext() {
vmdk_scsi) echo vmdk;;
vmdk_stream) echo vmdk;;
hdd) echo hdd;;
vhd*) echo vhd;;
*) echo "${disk_format}";;
esac
}
@ -579,6 +580,11 @@ _write_vhd_disk() {
assert_image_size "$2" vpc
}
_write_vhd_fixed_disk() {
qemu-img convert -f raw "$1" -O vpc -o subformat=fixed,force_size "$2"
assert_image_size "$2" vpc
}
_write_vmdk_ide_disk() {
qemu-img convert -f raw "$1" -O vmdk -o adapter_type=ide "$2"
assert_image_size "$2" vmdk