2016-06-17 2 views
1

Ich habe folgendes ansible Textbuch:Überspringe die 1.9-Rolle von ansible nicht, wenn die vorherige fehlgeschlagen ist.

- hosts: webservers 
    roles: 
    - start_measurement_script 
    - run_calculations 
    - stop_measurement_script 
    - gather_logs 

Ich mag würde Rolle auszuführen stop_measurement_script auch wenn run_calculations ausfällt. gather_logs Rolle sollte jedoch nicht ausgeführt werden. Die Rolle enthält nur eine Aufgabe. Gibt es einen Weg, dies zu erreichen?

Ich benutze ansible 1.9.4, so kann ich blocks Feature von Ansible 2.0 nicht verwenden. Ich habe always_run Klausel gesehen, aber es scheint, dass der Name irreführend ist und es in verschiedenen Szenarien verwendet wird.

+0

Lesen brauchen Sie 'start_measurement_script' und' stop_measurement_script' eine Rolle zu sein? Könnten Sie die Aktionen in 'run_calculations/tasks/start_measurement_script.yml' hinzufügen und dann den Fehler in run_calculations abfangen, include' stop_measurement_script.yml' und dann 'fail:'? – user2599522

+0

Ich möchte 'run_calculations' nicht modifizieren, weil es in mehreren Playbooks verwendet wird und nur in diesem speziellen, Messskript verwendet wird. In anderen Spielbüchern möchte ich die nächsten Rollen überspringen, wenn 'run_calculations' fehlgeschlagen ist. – Infinity

+0

Wenn dies der einzige Fall ist, können Sie ein Flag in den modifizierten 'run_calculations' hinzufügen, mit dem Sie die zusätzlichen Playbooks hinzufügen können, zum Beispiel' enable_measememnt', das immer auf false through 'run_calculations/defaults/main.yml' gesetzt wird Innerhalb dieses Playbooks können Sie 'vars: enable_measurement: true' setzen. – user2599522

Antwort

Verwandte Themen