有一个 ansible 角色,您需要在其中通过 .json 向 json 发出请求jmespath。“一切都在我的机器上运行”,直到代码被移植到纯 ubuntu(docker 或 wbox——没关系)。默认情况下,既没有python-jmespath,也没有,也python3-jmespath没有pip install jmespath。合乎逻辑的步骤是通过标准模块,我这样做,但问题是它抛出了:fatal: [localhost]: FAILED! => {"msg": "You need to install \"jmespath\" prior to running json_query filter"}
但!一旦你重新启动它,一切都会开始工作。
其实问题是:如何告诉python\ansible\ubunt“更仔细地寻找这个库”?谷歌搜索PYTHONPATH,但任何安装方法后都没有什么有趣的。
ansible 2.9.12, Ubuntu 18.04.5
我找到了解决方案。问题是控制端缓存的 Ansible 事实——这就是重新启动正在配置的主机的原因——并不总能产生预期的结果。
您必须首先清理这些事实,然后执行setup。
一般来说,在撰写答案时(20-03-2021)
ansible 2.9.18它工作正常(安装在 7.8 centos、18.20 ubuntu 上):