运行ansible playbook后访问结果

5
我正在远程机器(客户端)上使用 ansible-pull 运行 ansible 脚本,但我看不到它。
我想确保:
  • 如果 ansible playbook 成功执行,则应发送摘要
  • 如果 ansible playbook 执行失败,则应发送失败的内容摘要
启用 ansible 日志可以将信息存储在某个日志文件中,但我想知道是否可以通过预定义在 ansible 中的某些变量获取下面 ansible 输出的结果。
PLAY [localhost] ************************************************************** 

GATHERING FACTS *************************************************************** 
ok: [localhost]

TASK: [Install the hello package] ********************************************* 
ok: [localhost] => {"changed": false}

TASK: [Install the cmatrix package] ******************************************* 
ok: [localhost] => {"changed": false}

PLAY RECAP ******************************************************************** 
localhost                  : ok=3    changed=0    unreachable=0    failed=0  

如果不行的话,我将不得不编写自定义脚本来解析日志,在机器上保存信息并将其发送回我们的服务器。
1个回答

7
据我所知,没有一个变量可以直接获取这些数据。
但是这需要一个回调插件。看看log_plays插件。它会写入自己的日志文件。您可以拦截所有消息,收集它们,并在最后(在您的插件中定义一个方法def playbook_on_stats(self, stats):)对其进行任何操作。还有邮件插件,将在任务失败时发送电子邮件。

谢谢。我正在使用log_plays(https://github.com/ansible/ansible/blob/stable-1.9/plugins/callbacks/log_plays.py)。然而,我只是简单地尝试在`def playbook_on_stats(self, stats)这个函数中记录stats变量。我的代码只有一行-- log(host, 'STATISTICS' , stats )`。不知道为什么它根本没有被调用。 - Ankit Kulkarni
我当然可以使用其他正常工作的函数,但我想知道为什么没有调用stats函数? - Ankit Kulkarni

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接