Ansible - à l'aide de with_items et quand conditionnelle à

J'ai un tas de serveurs qui ont quatre disques physiques sur eux (/dev/sda, sdb, sdc et sdd). la sda a l'OS installé dessus.

J'ai besoin de formater chaque lecteur à l'exception de la sda. J'ai besoin de vérifier si chaque disque contient des données. Si c'est le cas, je ne devrais pas le formater.

# 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

Il y a clairement des étapes impliquées dans la mise en forme de ces disques, mais il échoue à la dernière tâche lors de la création de la table de partition GPT.

Voici à quoi il ressemble quand il s'exécute. Vous verrez que il échoue à la dernière tâche:

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

Une idée de comment je peux vérifier le conditionnel base_secondary_partition_{{item}}.stat.exists? J'ai besoin de s'assurer que, s'il y a des données sur le disque dur, il ne sera pas le formater.

InformationsquelleAutor hfranco | 2015-08-25