鉴于以下内容:
[root@vmutil01 ~]# cat /etc/issue
CentOS release 6.7 (Final)
[root@vmutil01 ~]# yum -y install centos-release-SCL
[ ... ]
[root@vmutil01 ~]# yum -y install python27
[ ... ]
[root@vmutil01 ~]# scl enable python27 bash
[root@vmutil01 ~]# python -V
Python 2.7.5
为什么我得到这个结果?
[root@vmutil01 ansible]# ansible centos7_hosts -m ping
/usr/lib64/python2.6/site-packages/cryptography/__init__.py:26: DeprecationWarning: Python 2.6 is no longer supported by the Python core team, please upgrade your Python. A future version of cryptography will drop support for Python 2.6
DeprecationWarning
vmcentos7dev | SUCCESS => {
"changed": false,
"ping": "pong"
}
Ansible版本甚至有警告,因此它绝对是与远程主机无关的本地事物:
[root@vmutil01 ansible]# ansible --version
/usr/lib64/python2.6/site-packages/cryptography/__init__.py:26: DeprecationWarning: Python 2.6 is no longer supported by the Python core team, please upgrade your Python. A future version of cryptography will drop support for Python 2.6
DeprecationWarning
ansible 2.0.2.0
config file = /etc/ansible/ansible.cfg
configured module search path = Default w/o overrides
似乎Ansible正在调用cryptography
的基础Python版本。这是Ansible的这个版本中的错误还是与SCL的工作方式有关?我需要做些什么来解决它?
修改以添加更多疑难解答
问题与Ansible调用Python本身的方式有关,因为/usr/bin/ansible
中的she-bang是#!/usr/bin/python
。如果我将其更改为#!/usr/bin/env python
,我会得到一个不同但仍显示停止的错误:
[root@vmutil01 ansible]# ansible --version
Traceback (most recent call last):
File "/usr/bin/ansible", line 39, in <module>
from ansible.errors import AnsibleError, AnsibleOptionsError, AnsibleParserError
ImportError: No module named ansible.errors
所以似乎问题出在Ansible上。
仍在寻找修复或解决方法......
答案 0 :(得分:2)
正如您所确定的那样,Ansible always uses /usr/bin/python
,这不太可能很快改变。
加密库正在推动您升级您的Python版本。更改Python的系统版本可能相当危险,尤其是在CentOS上,因为yum
使用它。
摆脱警告的最佳选择是升级到CentOS 7,因为它将包括Python 2.7。或者,您可以习惯使用弃用警告,因为使用CentOS的一部分是使用旧软件。