Ich versuche, eine Möglichkeit zu finden, die nativen Fehlervariablen und -benachrichtigungen von Ansible und Tower zu verwenden, um eine E-Mail mit dem Ergebnis der Ausführungsausgabe eines Jobs zu senden.
Ich habe also ein Playbook, das ungefähr Folgendes macht:
rescue:
- debug:
msg: "Failure:\n\n{{ansible_failed_result | to_nice_json}}"
Das gibt mir eine schöne Ausgabe im Tower
Ich möchte jedoch auch in der Lage sein, dieselbe Ausgabe von Tower an eine E-Mail-Benachrichtigung weiterzuleiten, sodass ich die Ausgabe eines Auftrags in einer E-Mail sehen kann, ohne mich bei Tower anmelden zu müssen. Das bedeutet, dass ich anhand meiner E-Mail sofort weiß, ob es sich um ein Verbindungstimeout oder etwas Ernsteres handelt.
Ich habe versucht, die benutzerdefinierten Benachrichtigungen in Tower zu verwenden und habe das Feld „job.job_explanation“ ausprobiert, das Ergebnis ist jedoch immer leer.
Ich habe versucht, den Job mit erhöhter Ausführlichkeit auszuführen, aber das hat auch nicht funktioniert.
Irgendwelche Ideen, wie das geht? An diesem Punkt bin ich mir nicht sicher, ob ich mit dem Feld job_explanation überhaupt auf dem richtigen Weg bin, daher wäre ich für jede Hilfe sehr dankbar!
Danke
Antwort1
Falls jemand anderes über das gleiche Problem stolpert, hier ist, wie ich es ganz einfach gemacht habe
tasks:
- block:
- name: Fail Task
fail:
msg: 'Failed'
when: true
rescue:
- name: set stats
set_stats:
data:
msg_body_1: "This was a test"
Sie können dann {{ job.artifacts }} im Nachrichtenabschnitt der Tower-Benachrichtigungen verwenden, um die von Ihnen festgelegte Variable zurückzugeben.