Ansible: die Bereinigung Durchführen, auf Aufgabe Ausfall
Schreibe ich momentan eine Ansible spielen, folgt diesem Allgemeinen format und wird über einen cron-job:
pre_tasks:
-Configuration /package installation
tasks:
-Work with installed packages
post_tasks:
-Cleanup /uninstall packages
Das problem mit der oben genannten ist, dass manchmal ein Befehl in der tasks
Abschnitt scheitert, und wenn es das post_tasks
- Abschnitt nicht ausgeführt werden, verlassen das system in einem chaotischen Zustand. Ist es möglich, zu zwingen, die Befehle in post_tasks
ausgeführt, selbst wenn ein Fehler oder schwerwiegender Fehler Auftritt?
Mein Aktueller Ansatz ist die Anwendung der ignore_errors: yes
alles unter der tasks
Abschnitt, und wählen dann eine when:
bedingte, um jede Aufgabe individuell zu prüfen, wenn das Vorherige Kommando erfolgreich war.
Diese Lösung scheint wie ein hack, aber es kommt noch schlimmer, denn selbst mit ignore_errors: yes
gesetzt, wenn ein Schwerwiegender Fehler Auftritt, wird für eine Aufgabe, die das gesamte Spiel wird immer noch sofort scheitern, so habe ich auch einen cron-würde bash-Skript manuell überprüfen, auf Dinge, die nach erreichen play-Ausführung.
Alles was ich will, ist eine Garantie, dass, selbst wenn tasks
ausfällt, post_tasks
wird noch laufen. Ich bin sicher, es ist ein Weg, dies zu tun ohne Rückgriff auf bash-Skript-Wrapper.
- Leider (für deinen Anwendungsfall)
post_tasks
ist nicht beabsichtigt, als eine Bereinigung. Unter Angabe der ansible führen: "Pre-Aufgaben und-post-Aufgaben sind weitgehend entwickelt für die Arbeit mit Lastenausgleich." (github.com/ansible/ansible/issues/3869)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht verwenden
post_tasks
block, sondern haben Ihre cleanup-Prozess als Teil der regulärentasks
.ignore_errors: yes
weil Ansible hat keine erkennbare Art und Weise zu tun, irgendeine Art von post_cleanup? Nicht ein playbook durch den eigenen Eintritt, halt auf den ersten Fehler? Wie wird die cleanup-task laufen zu bekommen?Diese Funktion wurde in Ansible 2.0:
Dies ist die Dokumentation für die neue Strophe Marker
block
,rescue
, undalways
.Sollten Sie verwenden Handler (http://docs.ansible.com/ansible/playbooks_intro.html) und set:
Bitte geben Sie einen Blick zu KubeNow integration test (https://github.com/kubenow/KubeNow/blob/master/test/integration-test.yml).