正如您从下面的代码片段中看到的,ansible的可执行文件似乎忽略了ansible_python_denterpreter变量如果不使用清单文件(这是针对基于hashicorp的packer的gitlab管道,它调用ansible(,我如何强制ansible使用我拥有的任何python版本?在这种情况下,它是一个Ubuntu 18.04,所以我想从python-2.7切换到python-3.6。
另一个相关的原因可能是ansibles pkg(policy?(总是在bionic上安装python-2.7。
root@ubuntu18:~# ansible --version
ansible 2.9.27
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/dist-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.17 (default, Feb 27 2021, 15:10:58) [GCC 7.5.0]
root@ubuntu18:~# /usr/bin/python3.6 --version
Python 3.6.9
root@ubuntu18:~# ansible --version -e 'ansible_python_interpreter=/usr/bin/python3.6'
ansible 2.9.27
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/dist-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.17 (default, Feb 27 2021, 15:10:58) [GCC 7.5.0]
root@ubuntu18:~#
我的最后手段似乎是使用pip3安装ansible,但这需要对管道yaml和packer的json进行大量重写。
如有任何帮助,我们将不胜感激。
干杯
您没有提供任何证据表明该参数被忽略。ansible_python_intepreter
适用于目标上模块的执行,而不适用于Ansible本身的执行。
Ansible控制进程始终使用安装在其下的Python解释器;改变这一点的最好方法是更改安装过程。