I have a bunch of servers that have four physical drives on them (/dev/sda, sdb, sdc, and sdd). sda has the OS installed on it.
I need to format each drive except sda. I need to check if each drive has data on it. If it does, then I shouldn't format it.
# This will get all physical disks (sda, sdb, sdc, etc) and assign them to disk_var - name: Get disks set_fact: disk_var="{{hostvars[inventory_hostname]["ansible_devices"].keys()|list}}" - name: Check if the disk is partitioned and also ignore sda stat: path=/dev/{{item}}1 with_items: disk_var when: item != 'sda' register: base_secondary_partition_{{item}} - name: Create GPT partition table command: /sbin/parted -s /dev/{{item}} mklabel gpt with_items: disk_var when: item != 'sda' and base_secondary_partition_{{item}}.stat.exists == false There's clearly more steps involved into formatting these drives but it fails at the last task when creating the GPT partition table.
Here's what it looks like when it runs. You'll see that it fails at the last task:
TASK: [role | Get disks] ****************************************************** ok: [server1.com] TASK: [role | Check if the disk is partitioned] ******************************* skipping: [server1.com] => (item=sda) ok: [server1.com] => (item=sdd) ok: [server1.com] => (item=sdb) ok: [server1.com] => (item=sdc) TASK: [role | Create GPT partition table] ************************************* fatal: [server1.com] => error while evaluating conditional: base_secondary_partition_sdd.stat.exists == false FATAL: all hosts have already failed -- aborting Any idea how I can check the conditional base_secondary_partition_{{item}}.stat.exists? I need to make sure that if there's data on the drive, it will not format it.