2016-06-01 14 views
3

Ich habe eine Rolle zum Deploy-Stack erstellt. Wo ich mich auch um die Rolle kümmere (Wenn der Stapel fehlgeschlagen ist, rollen Sie zu bestimmten Aufgaben zurück). Während jedoch alles glatt läuft, werden bei den Konsolen-Rollback-Tasks als skipped Tasks angezeigt (auch im nicht verbose-Modus).Ansible Konsole Ausgabe und Log-Ebenen

TASK: [deploy-stack | Deleting_Validation_Template] *************************** 
skipping: [10.17.10.150] 

TASK: [deploy-stack | shell echo 'Template Validation has Failed'] ************ 
skipping: [10.17.10.150] 

TASK: [deploy-stack | Deploying_the_Stack..] ********************************** 
changed: [10.17.10.150] 

1) Ist es möglich, skipped Aufgaben von der Konsole zu verbergen?

2) Ich habe bemerkt, wenn ich Playbook nicht im super ausführlichen Modus (ansible-playbook stack.yml -vvvv) laufen lasse, füllt ansible Protokolldatei nicht die ausführlichen Informationen auf (im Grunde, was wir in der Konsole sehen, geht in die Ansible Log-Datei /var/log/ansible.log). Ist es möglich, Log-Level zu definieren, um mehr Informationen in die Log-Datei zu schieben, während das Playbook im nicht-verbose-Modus läuft (ansible-playbook stack.yml)?

+1

diese Option könnte Ihnen helfen, das Problem zu lösen: http://docs.ansible.com/ansible/intro_configuration.html#display-skipped-hosts –

Antwort

2

1) Wie im Kommentar oben genannten Sie Status übersprungener Aufgaben Druck ausschalten können, aber nicht die Namen von ihnen - Parameter display_skipped_hosts
Wenn Sie die Ausgabe weiter anpassen möchten, müssen Sie einen Code und machen Sie besitzen stdout Plugin für ansible:

  • Nehmen Sie die default.py Callback-Plugin, ändern Sie es an Ihre Bedürfnisse und callback_plugins Unterverzeichnis Ihrer Textbuch platzieren (oder ansible globale Plugins dir)
  • Se t stdout_callback Parameter zum Zeigen auf Ihr benutzerdefiniertes Plugin
  • Beachten Sie, dass der Aufgabenname nicht in v2_runner_on_* Methoden verfügbar ist. Wenn Sie die Namen der übersprungenen Aufgaben nicht drucken möchten, müssen Sie den Namen in globales dict innerhalb von v2_playbook_on_task_start erfassen aber sie nicht in diesem Verfahren ausdrucken, und dann später drucken oder nicht druckt es in v2_runner_on_* Methoden (Verwendung von self.stats und task._uuid in profile_tasks.py Referenz sehen)

2) es gibt keine einfache Lösung für dieses Problem, weil Standard Logger teilt die gleiche Methode, die zum Drucken von Informationen an die Konsole verwendet wird.
Aber wenn Sie benutzerdefinierte stdout Plugin besitzen, können Sie ausführliche Informationen liefern log_only=True zu self._display.display Methode (siehe v2_playbook_on_stats in default.py Rückruf zum Beispiel).
Alternativ können Sie ein weiteres Callback-Plugin erstellen, das nur zum Protokollieren verwendet wird.

Verwandte Themen