我正在尝试找到一种方法,分别使用本机 Ansible 和 Tower 故障变量和通知来发送包含作业执行输出结果的电子邮件。
所以我有一个剧本,可以做这样的事情:
rescue:
- debug:
msg: "Failure:\n\n{{ansible_failed_result | to_nice_json}}"
这给了我 Tower 一个很好的输出
但是,我还希望能够将 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 }} 来返回您设置的变量。