从 Ansible 回调插件设置退出代码

Setting exit code from an Ansible callback plugin

我正在编写一个 Ansible 2.x 回调插件,我希望能够根据 v2_playbook_on_stats 函数中的某些条件使用非零退出代码使当前剧本失败。

我已经尝试 raise AnsibleError(),但这在链中的某处被捕获并被视为警告,这允许 Ansible 以零退出代码完成。

我也尝试过使用 self._display.error(),但似乎除了显示错误消息外什么也没做,Ansible 再次以零退出代码结束。

有什么方法可以满足我的要求吗?还是回调插件永远不会允许开发人员将 playbook 的状态更改为失败?

感谢您的宝贵时间。

你不能用回调来做到这一点,策略插件是你的选择。

子类所需的插件(例如linear),根据您的标准将run方法扩展为return非零值,它将被PlaybookExecutor和cli翻译为程序退出代码。

也遇到了同样的问题,我发现我可以使用 python 的 sys.exit(x)(x 是各种退出代码)来停止或使剧本失败。