Frage Ausgabe mit Ansible anzeigen


Ich habe ein Ansible spielen für PGBouncer Dies zeigt einige Ausgaben von einem in PGBouncer integrierten Statistikmodul an.

Mein Problem ist, dass wenn Ansible die Ausgabe an das Terminal druckt, es die Zeilenumbrüche beschädigt. Anstatt zu sehen

----------
| OUTPUT |
----------

Aha

----------\n| OUTPUT |\n----------

Weiß jemand, wie man Ansible erhält, um die Ausgabe "hübsch zu drucken"?


31
2017-10-28 04:11


Ursprung


Vielleicht möchten Sie Ihre Antwort ändern, da die Plugin-Variante viel besser ist als sed. - sorin


Antworten:


In Ansible gibt es keine Möglichkeit, das zu tun, was Sie wollen. Sie können dies als Workaround machen:

ansible-playbook ... | sed 's/\\n/\n/g'

13
2017-10-28 15:23



Auf OSX musste ich zurückgreifen sed -e 's/\\n/'$'\\\n/g'. Auch relevant: comicjk.com/20 - Navin
siehe Sorins Antwort serverfault.com/a/846232/240508 welches ist das korrekte in 2017 und ansible> 2.3 - Vadimo
Meistens \n erscheinen in result, so dass Sie diese regexp in Ihrer Debug-Nachricht verwenden könnten: msg: "{{ result.stdout | regex_replace('\\n', '\n') }}" - klml


Wenn Sie mehr menschenfreundliche Ausgabe wünschen, definieren Sie:

ANSIBLE_STDOUT_CALLBACK=debug

Dies wird möglich machen das Debug-Ausgabemodul (zuvor genannt human_log) whinch trotz seines unglücklichen Namens ist weniger ausführlich und viel einfacher für Menschen zu lesen.

Wenn Sie einen Fehler bekommen, dass dieses Modul nicht verfügbar ist, upgraden Sie Ansible oder fügen Sie dieses Modul lokal hinzu, wenn Sie es nicht aktualisieren können, es wird mit über Versionen von ansible wie 2.0 oder wahrscheinlich sogar 1.9 funktionieren.

Eine weitere Option zum Konfigurieren ist Hinzufügen stdout_callback = debug zu deiner ansible.cfg


43
2018-04-24 13:20



Das sollte das sein AKZEPTIERT antworten Sie im Jahr 2017 die menschenfreundliche Protokollausgabe wird aus der Box ausgeliefert. - Vadimo
Sehr nette Antwort Danke - Jean-Bernard Jansen
Hier noch einige Tipps, um dies dauerhaft zu machen: github.com/ansible/ansible/issues/27078#issuecomment-364560173 - kramer65


Sie können ein Callback-Plugin verwenden. Dadurch wird die Ausgabe erneut analysiert und kann einfach ein- und ausgeschaltet werden.


13
2018-04-16 17:27



Hinweis: Mit ansible 2.0.x müssen Sie von erben CallbackBase importiert mit from ansible.plugins.callback import CallbackBase damit die Callback-Klasse funktioniert. - allo


Gefunden diese Weg in Ansible Project Gruppenforum:

- name: "Example test"
  command:
    ...
  register: test
- name: "Example test stdout"
  debug:
    msg: "{{ test.stdout.split('\n') }}"
- name: "Example test stderr"
  debug:
    msg: "{{ test.stderr.split('\n') }}"

Wir machen dies im Grunde zu einer Liste, indem wir sie nach Newline aufteilen und dann diese Liste ausdrucken.


10
2017-09-30 09:53



Das macht Shell-Ausgabe viel lesbarer! Nett! - Asfand Qazi
Diese Lösung scheint einen großen Nachteil zu haben - wenn die Ausführung des "Example test" -Moduls fehlschlägt, schlägt der gesamte Playbook-Build fehl, und Sie werden nie die formatierte Ausgabe sehen, besonders die für stderr, die wahrscheinlich am interessantesten ist. - René
@ René du hast Recht. Dafür können Sie hinzufügen ignore_errors: yes zum ursprünglichen Befehl und später etwas wie `- behaupten: das:" test.rc == 0 ". - jhutar