运行Ansible剧本后如何获取结果

5 投票
1 回答
9005 浏览
提问于 2025-05-10 15:00

我在一台远程机器上运行一个 ansible 脚本,使用的是 ansible-pull,但我看不到这台机器。

我想确保:

  • 如果 ansible 的操作成功执行了,就应该发送一个总结
  • 如果 ansible 的操作没有成功执行,就应该发送一个失败的总结

开启 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

据我所知,没有一个变量可以直接获取这些数据。

不过,这个情况很适合用到回调插件。你可以看看这个插件community.general/plugins/callback/log_plays.py。它会自己写日志文件。你可以拦截所有的信息,收集起来,然后在最后(在你的插件里定义一个方法def playbook_on_stats(self, stats):)随便处理这些信息。还有一个community.general/plugins/callback/mail.py插件,它会在任务失败时发送邮件。

撰写回答