У меня есть несколько серверов с четырьмя физическими дисками (/dev/sda, sdb, sdc и sdd). На нем установлена ОС.
Мне нужно отформатировать каждый диск, кроме sda. Мне нужно проверить, есть ли на каждом диске данные. Если это так, то я не должен форматировать его.
# 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
Там явно больше шагов, связанных с форматированием этих дисков, но это не удается при последней задаче при создании таблицы разделов GPT.
Вот как это выглядит при запуске. Вы увидите, что это не удалось при последнем задании:
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
Любая идея, как я могу проверить условное base_secondary_partition_{{item}}.stat.exists
? Мне нужно убедиться, что если на диске есть данные, он не отформатирует их.