Ich möchte das Modul synchronize
von Ansible verwenden, um Dateien auf einem Remote-Server basierend auf einer Bedingung zu übertragen. Die Bedingung ist, dass das Verzeichnis und seine Inhalte auf dem Quellserver vorhanden sind.Ansible Bedingt synchronisieren, wenn das Verzeichnis existiert
Zum Beispiel:
Erstes Spiel, prüfen Sie, ob das Verzeichnis auf dem lokalen Host existiert:
hosts: localhost
stat:
path: some/path/to/dir/
register: st
Dann, im zweiten Spiel, verwenden Sie diese Variable in einer when
Anweisung bedingt das synchronize
Modul zu verwenden :
hosts: remote_hosts
synchronize:
src: some/path/to/dir/
dest: some/dest/path
when: st.stat.isdir is defined
Mein Problem ist, dass die st
Variable nicht zwischen Spielen verwendet werden können, so wie kann ich o Führen Sie den Task synchronize
nur aus, wenn das Verzeichnis vorhanden ist.
Ich würde sie in das gleiche Spiel setzen, aber sie verwenden verschiedene Hosts, wie Sie sehen können.
Meine ansible Version 2.3.1.0
Danke für die Bereitstellung mehrerer Ansätze; Ich habe diese Methoden nirgends gesehen. Ich war dabei, etwas wie https://stackoverflow.com/questions/33348077/how-to-conditional-execute-group-of-tasks-on-ansible zu versuchen, aber deins ist so viel prägnanter –