自定义 Ansible 模块中是否有用于调试日志记录的 standard/prefered 方法。

Is there a standard/prefered method for debug logging in a custom Ansible module.

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

模块通常是远程执行的,所以实际上没有办法直接输出任何东西。

您可以在 exit_json 调用的模块中 return 其他数据。

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-list and github

Ansible 模块很难调试,因为:

  • 模块正常远程执行
  • 模块由python子进程执行(所以我们不能使用pdb调试)

所以,你可以这样调试Ansible模块:

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