簡體   English   中英

Ansible python 版本不會改變

[英]Ansible python version won't change

我正在執行:

ansible-playbook --version

我得到以下輸出:

ansible-playbook 2.5.14
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'~/.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-playbook
  python version = 2.7.12 (default, Nov 12 2018, 14:36:49) [GCC 5.4.0 20160609]

但是當我執行時:

ansible-playbook --version -e 'ansible_python_interpreter=/usr/bin/python3'

我有完全相同的輸出。 我期待有類似的東西:

python version = 3.5.2

我有什么誤解?

要更改托管主機上使用的 python 解釋器,您可以根據您的問題使用額外或庫存變量。 這不會更改用於在本地執行 ansible 的 python 版本 - 這在另一個答案中提到。

要確認您在托管主機上使用不同的解釋器,您將需要更詳細的輸出(至少 3 'v's, -vvv )。 在 shell 命令中運行python --version只會向您顯示系統的默認 python 版本是什么。

例子

Python2 解釋器:

$ ansible localhost -a 'python --version' -e 'ansible_python_interpreter=/usr/bin/python2' -vvv
ansible 2.8.1
<snip>
  python version = 3.7.3 (default, May 11 2019, 00:38:04) [GCC 9.1.1 20190503 (Red Hat 9.1.1-1)]
<snip>
'/bin/sh -c '"'"'/usr/bin/python2 /home/mattp/.ansible/tmp/ansible-tmp-1564023345.0848873-106174541151316/AnsiballZ_command.py && sleep 0'"'"''
<snip>
localhost | CHANGED | rc=0 >>
Python 2.7.16

Python3 解釋器:

$ ansible localhost -a 'python --version' -e 'ansible_python_interpreter=/usr/bin/python3' -vvv
ansible 2.8.1
<snip>
  python version = 3.7.3 (default, May 11 2019, 00:38:04) [GCC 9.1.1 20190503 (Red Hat 9.1.1-1)]
<snip>
'/bin/sh -c '"'"'/usr/bin/python3 /home/mattp/.ansible/tmp/ansible-tmp-1564023350.3869421-223113472194736/AnsiballZ_command.py && sleep 0'"'"''
<snip>
localhost | CHANGED | rc=0 >>
Python 2.7.16

關鍵要點

  • 用於在本地運行 Ansible 的 python 版本保持不變
  • 系統默認python版本不變
  • 用於遠程執行 Ansible 命令模塊的 python 版本(即 python 解釋器)已從版本 2 更改為 3

ansible-playbook是安裝在您計算機上的軟件,它有自己的依賴項,您不能使用參數更改其依賴項 - 您應該為此安裝合適的版本。

通過該參數,您正在更改該劇本處理的遠程主機(一個或多個)上的 Python 解釋器。

其他解決方法是在您的劇本中指定 var ansible_python_interpreter: /usr/bin/python3就像在我的情況下有時 ansible 不會從ansible.cfg文件中獲取解釋器。

例子:

- name: Common package
  hosts: all
  gather_facts: no
  vars:
    ansible_python_interpreter: /usr/bin/python3
  roles:
    - { role: python, tags: [ init, python, common, addusers] }
...
...

現在每次運行 playbook 都會將/usr/bin/python3作為默認解釋器。

注意:如果你想使用 python2.7,那么你可以將 python3 更改為 python,它應該可以正常工作。 [僅供參考,python2.7 將從 2020 年 1 月起棄用]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM