【问题标题】:How to create a portable VSCode launch configuration for Ansible Playbook debugging?如何为 Ansible Playbook 调试创建可移植的 VSCode 启动配置?
【发布时间】:2021-05-23 22:42:39
【问题描述】:

我正在与一个开发团队一起开发 Ansible 插件。有些使用 Windows,有些使用 Linux。我们依赖 Visual Studio Code 作为 IDE。我们使用pipenv 来定义我们的开发环境。

我想要实现的是一个调试配置 (launch.json),它适用于所有开发人员而无需修改(因此可以安全地提交到 git 存储库)。

我们想用于调试的ansible-playbook 命令是stub file 的符号链接,实际功能由sys.argv[0] 定义。

VSCode Python 扩展允许 debugging 通过指定 Python 文件或模块 (python3 -m <module>)。对于我的方法,我更喜欢后者,因为它不需要实际路径。虽然python3 -m ansible.cli.scripts.ansible_cli_stub 调用了正确的模块,但由于sys.argv[0] 值与ansible-playbook 不匹配,因此它不起作用。创建一个指向 ansible-playbook 符号链接作为源文件的启动配置是可行的,但由于不同开发人员的虚拟环境位置不同,因此不可移植。

您知道我们如何创建一个可移植的launch.json,其运行配置对应于ansible-playbook some-playbook.yml吗?

【问题讨论】:

    标签: python visual-studio-code ansible vscode-debugger


    【解决方案1】:

    launch.json

    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "Ansible Playbook",
                "type": "python",
                "request": "launch",
                "program": "bin/run.py",
                "args": [
                    "playbooks/test.yml",
                    "-i", "inventory_dir"
                ],
                "env": {
                    "ANSIBLE_VAULT_PASSWORD_FILE": "your_vault_password_file",
                },
                "console": "integratedTerminal"
            }
        ]
    }
    

    bin/run.py

    #!/usr/bin/env python
    import sys
    from ansible.cli.playbook import PlaybookCLI
    
    def main():
        cli = PlaybookCLI(sys.argv)
        cli.run()
    
    if __name__ == "__main__":
        main()
    

    如果python -m ansible.playbook 或类似的东西可以工作,那就太好了。

    【讨论】:

      猜你喜欢
      • 2020-09-21
      • 1970-01-01
      • 1970-01-01
      • 2018-03-29
      • 2019-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-28
      相关资源
      最近更新 更多