自定义 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模块:
- 使模块在本地执行。这可以通过将主机设置为本地主机或使用 Ansible
local_action
模块来实现。
- Write/Logging 要调试到特定文件中的变量。 您可以使用 Python q 库来完成此操作。
我想将调试日志记录添加到我的自定义 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模块:
- 使模块在本地执行。这可以通过将主机设置为本地主机或使用 Ansible
local_action
模块来实现。 - Write/Logging 要调试到特定文件中的变量。 您可以使用 Python q 库来完成此操作。