是否有自定义Ansible模块中的调试日志记录的标准/首选方法。

时间:2016-07-07 12:12:02

标签: debugging logging module ansible trace

我想将调试日志记录添加到我的自定义Ansible模块中,这样当向ansible-playbook命令提供-vvv选项时,我会看到日志消息,否则不会。我不希望此日志记录影响模块的结果。换句话说,我不想直接将日志消息写入stdout或stderr。

2 个答案:

答案 0 :(得分:3)

模块通常是远程执行的,因此实际上无法直接输出任何内容。

您可以在exit_json来电中返回模块中的其他数据。

if module._verbosity >= 3:
    module.exit_json(changed=True, debug="wooha!")
else:
    module.exit_json(changed=True)

module._verbosity对应于详细级别(-v = 1,-vvv = 3),自Ansible 2.1起可用。

来源:Ansible Devel-listgithub

答案 1 :(得分:1)

Ansible模块很难调试,因为:

  • 模块通常是远程执行的
  • 模块由python子进程执行(所以我们不能使用union来调试)

因此,您可以通过以下方式调试Ansible模块:

  1. 使模块在本地执行。这可以通过将主机设置为localhost或使用Ansible pdb模块来实现。
  2. 将要调试的变量写入/记录到特定文件中。您可以使用Python q库来执行此操作。