Objectif:
Playbook actuel:
- name: stat directories if they exist
stat:
path: "{{ item }}"
with_items:
- /data/directory
- /data/another
register: myvar
- debug: var=myvar.results
- name: create directory if they don't exist
file:
path: "{{ item.invocation.module_args.path }}"
state: directory
owner: root
group: root
mode: 0775
with_items: "{{ stat.results }}"
# when: myvar.results.stat.exists == false
La déclaration when
est fausse.
J'ai regardé l'exemple fourni; http://docs.ansible.com/ansible/stat_module.html . Mais cela ne fonctionne que pour un seul dossier.
Travailler bien pour moi. J'espère que cela fonctionne pour vous aussi, essayez simplement.
---
- name: "Creating multiple by checking folders"
hosts: your_Host_name
tasks:
- block:
- name: "Checking folders"
stat:
path: "{{item}}"
register: folder_stats
with_items:
- ["/var/www/f1","/var/www/f2","/var/www/f3","/var/www/f4"]
- name: "Creating multiple folders without disturbing previous permissions"
file:
path: "{{item.item}}"
state: directory
mode: 0755
group: root
owner: root
when: item.stat.exists == false
with_items:
- "{{folder_stats.results}}"
...
En utilisant les modules Ansible, vous n'avez pas besoin de vérifier si quelque chose existe ou pas, vous décrivez simplement l'état souhaité, ainsi:
- name: create directory if they don't exist
file:
path: "{{ item }}"
state: directory
owner: root
group: root
mode: 0775
with_items:
- /data/directory
- /data/another
Ma réponse peut ne pas fonctionner dans tous les cas, mais si vous ne fournissez pas d'option, ansible ne changera pas les valeurs actuelles. Je l'ai utilisé pour les montages NFS où les autorisations varient sur les serveurs NFS.
- name: create directory if they don't exist
file:
path: "{{ item }}"
state: directory
with_items:
- /share1
- /share2