parted - azure managed disks - unrecognized disk label

Hi all,

I’m pretty certain someone has figured this out so any hints will be appreciated

I’ve attached an azure managed disk to a linux vm but noticed it doesn’t have any disk label i.e.

Error: /dev/sdc: unrecognised disk label
Model: Msft Virtual Disk (scsi)
Disk /dev/sdc: 18.3GB
Sector size (logical/physical): 512B/4096B
Partition Table: unknown
Disk Flags:

Consequently, the ansible parted module returns the below error when attempting to create a partition

TASK [role_azure_disk : Partition Azure Disk] ***********************************************************************************************************************************************************************************************
task path: /etc/ansible/roles/role_azure_disk/tasks/main.yml:7
fatal: [labserver]: FAILED! => {“changed”: false, “err”: “Error: Could not stat device /dev/sdc - No such file or directory.\n”, “msg”: “Error while getting device information with parted script: ‘/sbin/parted -s -m /dev/sdc – unit ‘KiB’ print’”, “out”: “”, “rc”: 1}

To achieve idempotence when re-running playbooks , I’m trying to avoid using fdisk passed to the shell module i.e. (echo n; echo p; echo 1; echo ; echo ; echo w) | sudo fdisk /dev/sdc

Will appreciate any ideas on how to get around this

Thanks

The disk label is the partition table, and will not be recognized for an unpartitioned disk. There is a parameter in the module called “label” with a default of “msdos” as the table format. So I guess you can pass it along your partition definitions. Just make sure it works idempotently, I haven’t tested it. Hugo G.

Thanks Hugo!

I gave this a go with the label explicitly specified and it returned the same error i.e.

`

  • name: Partition Disk
    parted:
    device: /dev/sdc
    number: 1
    state: present
    label: msdos
    `

TASK [role_azure_disk : Partition Azure Disk] *********************************************************************************************************************************************************************************************** task path: /etc/ansible/roles/role_azure_disk/tasks/main.yml:19 fatal: [dbbox8]: FAILED! => {"changed": false, "err": "Error: Could not stat device /dev/sdc - No such file or directory.\n", "msg": "Error while getting device information with parted script: '/sbin/parted -s -m /dev/sdc -- unit 'KiB' print'", "out": "", "rc": 1}

I suppose the issue is more related to the disk profile as opposed to the parted module in itself? The disk itself was created as recommended by azure (https://docs.microsoft.com/en-us/azure/virtual-machines/linux/add-disk)

Regards

I got to the bottom of this eventually :slight_smile:

The task was running on the controller which didn’t have a /dev/sdc device :slight_smile:

Simply delegating the task to the remote node fixed the problem

Thanks!

Whoa! careful there! :slight_smile:

Hugo G.

I know right :slight_smile:

It was an isolated lab environment so no harm done.

appreciated!