【问题标题】:How to debug custom Ansible module in Python?如何在 Python 中调试自定义 Ansible 模块?
【发布时间】:2020-11-27 17:23:01
【问题描述】:

我们使用 Ansible 剧本来调用在 AWX/Centos 上运行的自定义 Python 模块。我需要对模块进行一些更改,并希望在我的开发环境(即 windows)中本地运行它们。我希望能够单步执行代码而不是远程运行(不过 WSL 很好)。

我无法直接在 Windows 中运行该模块,因为 pip install Ansible 和 pip install AnsibleRunner 都失败了(我认为这是预期的)。

我能够在 WSL 中使用 AnsibleRunner 启动我的剧本,但它挂起(我认为它试图通过 ssh 连接到 localhost)。即使它运行剧本/模块,我怀疑它不会在我的断点处停止。 现在我在wsl中直接运行我的模块(ex module.run_module()),我可以进入它,但在调用以下命令后它永远不会返回:

module = AnsibleModule(
    argument_spec=module_args,
    supports_check_mode=True
)

任何想法为什么会停在这里?不会生成日志或错误。 还有其他建议吗?我希望能够进行代码更改并轻松地测试/单步执行它们。我已经使用其他技术进行了远程调试,但它很糟糕,所以我想避免它。

【问题讨论】:

    标签: python ansible windows-subsystem-for-linux


    【解决方案1】:

    我想通了,它是阻塞的,因为 AnsibleModule 试图通过从标准输入读取来填充 _ANSIBLE_ARGS。通过检查代码,我意识到如果第一个 arg 是有效文件,它将使用文件。

    因此,我现在可以通过 WSL/Ubuntu 单步执行从在 Windows 上运行 VSCode 的测试程序调用的自定义模块。

    【讨论】:

      猜你喜欢
      • 2021-06-27
      • 1970-01-01
      • 2020-05-03
      • 1970-01-01
      • 2020-06-13
      • 2020-02-20
      • 2022-11-07
      • 1970-01-01
      • 2021-12-29
      相关资源
      最近更新 更多