从 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 是各种退出代码)来停止或使剧本失败。
我正在编写一个 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 是各种退出代码)来停止或使剧本失败。