Ich möchte rekursiv über ein Verzeichnis kopieren und rendern alle .j2 Dateien dort als Vorlagen. Dafür ich bin derzeit mit den folgenden Zeilen:ansible - löschen nicht verwaltete Dateien aus dem Verzeichnis?
- template: >
src=/src/conf.d/{{ item }}
dest=/dest/conf.d/{{ item|replace('.j2','') }}
with_lines: find /src/conf.d/ -type f -printf "%P\n"
Jetzt nach einem Weg, ich bin auf der Suche nicht verwalteten Dateien aus diesem Verzeichnis zu entfernen. Zum Beispiel, wenn ich eine Datei/Vorlage von /src/conf.d/
entferne, möchte ich, dass es auch von /dest/conf.d/
entfernt werden kann.
Gibt es einen Weg, dies zu tun? Ich habe versucht, mit rsync --delete
herumzutüfteln, aber dort bekam ich ein Problem mit den Vorlagen, die ihr Suffix .j2
entfernen lassen.
Das vollständige Löschen des Zielverzeichnisses vor dem Kopieren würde bedeuten, dass sich das Spiel immer ändert. Auch wenn keine Änderungen am Quellverzeichnis vorgenommen wurden. Beim lokalen Umbenennen der Dateien (z. B. rsync-> render-> rename-> rsync) gibt es immer das Problem, dass ansible Änderungen (die Umbenennung) meldet, wenn wirklich keine Änderungen vorliegen. –
@keks 'changed_when: false' wird das beheben – ffghfgh
Aber Sie möchten wissen, wann/wenn eine Konfigurationsdatei geändert wurde, um Handler zu starten – dalore