ネイティブの Ansible と Tower の失敗変数と通知をそれぞれ使用して、ジョブの実行出力の結果を記載した電子メールを送信する方法を見つけようとしています。
そこで、次のようなことを実行するプレイブックを作成しました。
rescue:
- debug:
msg: "Failure:\n\n{{ansible_failed_result | to_nice_json}}"
タワーで素晴らしい出力が得られる
ただし、Tower からの同じ出力を電子メール通知に渡して、Tower にログインしなくてもジョブの出力を電子メールで確認できるようにしたいと考えています。つまり、接続タイムアウトなのか、それとももっと深刻な問題なのかを電子メールですぐに知ることができるということです。
Tower でカスタマイズ通知を使用し、「job.job_explanation」フィールドを試してみましたが、常に空が返されます。
詳細度を上げてジョブを実行してみましたが、それでもうまくいきませんでした。
これを実行する方法について何かアイデアはありますか? 現時点では、job_explanation フィールドの使用方法が正しいかどうかさえわかりませんので、ご協力いただければ幸いです。
ありがとう
答え1
他にも同じ問題に遭遇した人がいたら、私が非常に簡単に解決した方法を紹介します。
tasks:
- block:
- name: Fail Task
fail:
msg: 'Failed'
when: true
rescue:
- name: set stats
set_stats:
data:
msg_body_1: "This was a test"
その後、Tower 通知メッセージ セクションで {{ job.artifacts }} を使用して、設定した変数を返すことができます。