web-dev-qa-db-de.com

Ansible - Erstellen Sie mehrere Ordner, falls nicht vorhanden

Tor: 

  • Erstellen Sie mehrere Verzeichnisse, falls diese nicht vorhanden sind. 
  • Ändern Sie keine Berechtigungen für vorhandene Ordner

Aktuelles Spielbuch:

- 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

Die when-Anweisung ist falsch.

Ich habe mir das Beispiel angesehen. http://docs.ansible.com/ansible/stat_module.html . Dies funktioniert jedoch nur für einen einzelnen Ordner.

11
Kevin

Ansible - Mehrere Ordner erstellen, ohne zuvor vorhandene Berechtigungen zu ändern.

Funktioniert gut für mich. Ich hoffe, das funktioniert auch für Sie.

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

Wenn Sie Ansible-Module verwenden, müssen Sie nicht prüfen, ob etwas existiert oder nicht. Sie beschreiben nur den gewünschten Status.

- 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

Meine Antwort funktioniert möglicherweise nicht in jedem Fall, aber wenn Sie keine Option angeben, ändert ansible die aktuellen Werte nicht. Ich habe dies für NFS-Mounts verwendet, bei denen die Berechtigungen auf den NFS-Servern variieren.

- name: create directory if they don't exist
  file:
    path: "{{ item }}"
    state: directory
  with_items:
    - /share1
    - /share2
0
Wayne