最近在装Ansible,有一台受控端Ubuntu16的服务器,安装了Python2.7.12和Pyhon3.5。当用Ansible连接它时,显示使用的是Python3.5。最后看文档,发现Ansible可以在hosts的文件中指定受控服上运行的Python。

现象

受控端

  • 查看Python版本
python2 --version
Python 2.7.12
python3 --version
Python 3.5.2

主控端

  • 主控端连接被控端
ansible 192.168.8.101 -m shell -a 'ip a| grep 192.168.'
192.168.8.101 | FAILED | rc=-1 >>
ansible-core requires a minimum of Python2 version 2.7 or Python3 version 3.6. Current version: 3.5.2 (default, Nov 12 2018, 13:43:14) [GCC 5.4.0 20160609]

解决

  • 修改hosts文件
vim /etc/ansible/hosts
192.168.8.101 ansible_python_interpreter=/usr/bin/python2.7
  • 执行效果
ansible 192.168.8.101 -m shell -a 'ip a| grep 192.168.'
192.168.8.101 | CHANGED | rc=0 >>
    inet 192.168.8.101/24 brd 192.168.8.255 scope global eno1

hosts配置参数

Ansible 指定受控端使用Python的版本-LMLPHP节选自: 如何指定ansible使用python3 ansible 指定host

04-21 13:43