How do I reliably partition and mount the file system of an Azure Managed Disk on a Linux VM using Ansible playbooks?
I can create an Azure Managed Disk with azure_rm_manageddisk
and assign it to a VM instance. My issue starts when I'm trying to take the disk into use. I just don't know how to reliably target the correct managed disk anymore for partitioning and file system mounting.
Neither azure_rm_manageddisk
nor azure_rm_manageddisk_info
seems to return a reliable, unambigious id for the disk that could be referred from the OS side.
I don't think the disk even shows up on blkid
before it has been partitioned.
Microsoft has documented that
By default when you create a VM, Azure provides you with an OS disk (/dev/sda) and a temporary disk (/dev/sdb). All additional disks you add show up as /dev/sdc, /dev/sdd, /dev/sde and so on.
(source: https://learn.microsoft.com/en-us/azure/virtual-machines/linux/optimization)
but this doesn't seem reliable. I think I saw my VM have a setup different from this right after creation and this is definitely going to change after reboot. So no trusting /dev/sdc
in my opinion. A rerun of a playbook could cause all kinds of havoc, if the block device files aren't stable. I actually managed already to make my root partition visible at /media/my_data_disk_mount
.
Is this just something I will have to handle manually? Seems odd. It's such a common thing to do.
There's also /dev/disk/azure/resource
for example, but that seemed to lead to messy results also.
Maybe something with the LUN numbers?