【问题标题】:Is there a standard/prefered method for debug logging in a custom Ansible module.在自定义 Ansible 模块中是否有调试日志记录的标准/首选方法。
【发布时间】:2016-07-07 12:12:02
【问题描述】:

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

【问题讨论】:

    标签: debugging logging module ansible trace


    【解决方案1】:

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

    您可以在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

    【讨论】:

      【解决方案2】:

      Ansible 模块很难调试,因为:

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

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

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

      【讨论】:

        猜你喜欢
        • 2013-03-30
        • 1970-01-01
        • 2016-11-13
        • 1970-01-01
        • 1970-01-01
        • 2018-04-11
        • 1970-01-01
        • 2018-05-27
        • 2017-06-04
        相关资源
        最近更新 更多