web-dev-qa-db-fra.com

Ansible - Créer plusieurs dossiers si n'existent pas

Objectif: 

  • Créez plusieurs répertoires s'ils n'existent pas. 
  • Ne changez pas les permissions du dossier existant

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.

11
Kevin

Ansible - Création de plusieurs dossiers sans modifier les autorisations des fichiers existants.

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}}"
...
18
Sahil Gulati

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
23
techraf

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
0
Wayne