Ansible:如何更改Python版本
试图使用GNS3来实践ansible脚本,有一个docker实例,名为“网络自动化”,内置ansible。但是,它仍然使用Python 2.7作为解释器:Ansible:如何更改Python版本,python,python-3.x,ubuntu,ansible,Python,Python 3.x,Ubuntu,Ansible,试图使用GNS3来实践ansible脚本,有一个docker实例,名为“网络自动化”,内置ansible。但是,它仍然使用Python 2.7作为解释器: root@Network-Automation:~# ansible --version ansible 2.7.11 config file = /etc/ansible/ansible.cfg configured module search path = [u'/root/.ansible/plugins/modules', u
root@Network-Automation:~# ansible --version
ansible 2.7.11
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.12 (default, Nov 12 2018, 14:36:49) [GCC 5.4.0 20160609]
我知道我可以使用“ansible playbook--version-e'ansible_python_解释器=/usr/bin/python3'”命令运行python版本3的playbook,或者我可以在playbook中指定变量:
- name: Common package
hosts: all
gather_facts: no
vars:
ansible_python_interpreter: /usr/bin/python3
roles:
- { role: python, tags: [ init, python, common, addusers] }
...
...
然而,我希望有一个永久的方法来强制ansible使用Python3版本。我怎样才能做到这一点?谢谢 参考官方文件- 可以为Python2或Python3打包单独的Linux发行包。当从发行版软件包运行时,您只能将Ansible与安装它的Python版本一起使用。有时,发行版会提供一种安装多种Python版本的方法(通过一个单独的包或安装后运行的一些命令)。您需要与您的发行版联系,看看这是否适用于您的情况 在Python3下运行/usr/bin/ansible最简单的方法是使用Python3版本的pip安装它。这将使默认的/usr/bin/ansible与Python3一起运行:
$ pip3 install ansible
$ ansible --version | grep "python version"
python version = 3.6.2 (default, Sep 22 2017, 08:28:09) [GCC 7.2.1 20170915 (Red Hat 7.2.1-2)]
如果您正在从源代码运行Ansible,并且希望在源代码签出时使用Python 3,请通过Python 3运行您的命令。例如:
$ source ./hacking/env-setup
$ python3 $(which ansible) localhost -m ping
$ python3 $(which ansible-playbook) sample-playbook.yml
根据,您只需在该主机的资源清册或ansible的配置文件中设置它(也可以与playbooks和/或资源清册在同一目录中提供):
要控制发现行为,请执行以下操作:
- 对于单个主机和组,请使用ansible_python_解释器清单变量
- 在全局范围内,使用ansible.cfg的[defaults]部分中的解释器\u python键
为什么不在您的角色中使用var目录
├── defaults
│ └── main.yml
├── files
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── README.md
├── tasks
│ └── main.yml
├── templates
├── tests
│ ├── inventory
│ └── test.yml
└── vars
└── main.yml
在vars/main.yml中
加上
---
# vars file for XXXX
ansible_python_interpreter: /usr/bin/python3
根据以上评论,添加一些您可能忽略的要点:
- 在最初的文章中,ansible是在root帐户下安装的,在许多其他环境中,您不会使用root帐户。在这种情况下,您需要先安装sudo su,然后使用pip3安装ansible,否则,它将只在~/.local/bin下为您的帐户安装
- 在新的pip版本中,建议使用python3-m pip install xxx,而不是直接执行pip3 install xxx
ansible.cfg
。为此,您需要将解释器\u python
键更改为正确的路径。看:我也有同样的问题。使用pip3 keep,其python版本为2.7.5。如何强制它使用Python 3?