正如这里所证明的,我注意到Ansible中有一个奇怪的新行为.
我有一个名为"degoss"的Ansible角色,它将Goss与一些测试文件一起安装到系统中,执行测试,然后删除它们的所有痕迹.我正在使用回调插件来格式化输出,并使用自定义模块来调用Goss.
当测试失败,而不是得到合理的输出,在较新版本的Ansible(据我所知,大约2.3),我得到以下不直观的错误消息,并且我的插件没有任何输出:
[WARNING]: Failure using method (v2_runner_on_failed) in callback plugin
(<ansible.plugins.callback.default.CallbackModule object at 0x7fb5e92efd50>):
'module' object has no attribute 'dumps'
Run Code Online (Sandbox Code Playgroud)
现在,当我搜索时ansible.plugins.callback.default.CallbackModule,我看不到任何调用dumps.当我搜索时ansible.plugins.callback.CallbackBase,我确实看到了三次转储调用.在我自己的回调插件和自定义模块中,我有try/ except阻止我的所有调用json.dumps.
更糟糕的是,我似乎无法一致地复制这个问题.我不能在本地复制它,它只在任务失败时出现.我的成功/失败逻辑如下:
succeed(module, **result) if rc == 0 else fail(
module, "Goss Tests Failed.", **result
)
Run Code Online (Sandbox Code Playgroud)
我的succeed/ fail方法定义如下:
def succeed(module, **kwargs):
module.exit_json(changed=False, failed=False, goss_failed=False, **kwargs)
def fail(module, message, **kwargs):
module.fail_json(msg=message, failed=True, goss_failed=True, **kwargs)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
| 归档时间: |
|
| 查看次数: |
838 次 |
| 最近记录: |