Ansible 忽略 ansible_python_interpreter 作为命令行参数

Ansible ignoring ansible_python_interpreter as command line parameter

正如您从下面的代码片段中看到的,ansible 的可执行文件似乎忽略了 ansible_python_interpreter 变量。 不求助于库存文件(这是基于 hashicorp 的打包程序的 gitlab 管道 - 它调用 ansible),我如何强制 ansible 使用我拥有的任何 python 版本?在这种情况下,它是 Ubuntu 18.04,所以我想从 python-2.7 切换到 python-3.6.

另一个相关原因可能是 ansibles pkg(策略?)总是在 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 和打包器的 json.

进行重大重写

如有任何帮助,我们将不胜感激。

干杯

您没有提供任何证据表明参数被忽略。 ansible_python_intepreter 适用于目标上模块的执行,不适用于 Ansible 本身的执行。

Ansible 控制进程始终使用安装它的 Python 解释器;改变这一点的最好方法是改变你的安装过程。