2017-02-14 2 views
0

Ich habe eine Liste von Dateien, die ich Modus ändern möchten, aber nur wenn sie vorhanden sind. Ich dachte, dass ich eine Kombination von stat und with_item verwenden könnte. Ich bin ziemlich neu und jede Idee wäre eine große Hilfe. Danke, JohnListe in Ansible Conditional übergeben

--- 
- hosts: all 

    tasks: 
- name: checking if file exists 
    stat: path={{ item }} 
    register: file_exists 
    with_items: 
    - /tmp/test1 
    - /home/john/test2 
    - /home/allison/test3 

- name: change permissions 
    file: path={{ item }} mode=0600 
    when: file_exists.stat.exists 

Antwort

1

Ihre Lösung sollte mit einigen Modifikationen arbeiten:

--- 
    - hosts: localhost 
    vars: 
     permissioned_files: 
     - /tmp/test1.txt 
     - /home/john/test2 
     - /home/allison/test3 
    tasks: 
    - name: checking if file exists 
     stat: path={{ item }} 
     register: file_exists 
     with_items: "{{ permissioned_files }}" 

    - name: change permissions 
     file: path={{ item.0 }} mode=0600 
     when: "{{ item.1.stat.exists }}" 
     with_together: 
     - "{{ permissioned_files }}" 
     - "{{ file_exists.results }}" 

Änderungen:

  • Feste Vertiefung
  • hinzugefügt Artikel Schleife zweite Aufgabe
  • Gebrauchte gemeinsame Variable anstatt die Liste der Dateien zu wiederholen
  • eine parallel loop verwendet, um die aufgeführten Statistik Ergebnisse und die verschiedenen Dateien zuzugreifen, wo Berechtigungen

Eine einfachere Lösung ist die Verwendung der ignore_errors Parameter und aktuellen Fähigkeiten des Ansible file module eingestellt werden muss: Wenn Zustand auf „Datei“ eingestellt ist (wie es standardmäßig ist), das Modul wird die Datei nicht erstellen. ignore_errors bedeutet, dass die Wiedergabe nicht fehlschlägt, wenn eine Aufgabe auf Fehler stößt.

--- 
- hosts: localhost 
    tasks: 
    - name: Ensure one sample file exists 
     file: 
     path: /tmp/test1.txt 
     state: touch 

    - name: Change permissions 
     file: 
     path: "{{ item }}" 
     mode: 0600 
     with_items: 
     - /tmp/test1.txt 
     - /home/john/test2 
     - /home/allison/test3 
     ignore_errors: true 
+0

Danke, es funktioniert wie ein Charme! –