在Centos 6中使用SCL Python 2.7进行Ansible加密警告

时间:2016-05-11 19:18:50

标签: python python-2.7 ansible centos6

鉴于以下内容:

[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上。

仍在寻找修复或解决方法......

1 个答案:

答案 0 :(得分:2)

正如您所确定的那样,Ansible always uses /usr/bin/python,这不太可能很快改变。

加密库正在推动您升级您的Python版本。更改Python的系统版本可能相当危险,尤其是在CentOS上,因为yum使用它。

摆脱警告的最佳选择是升级到CentOS 7,因为它将包括Python 2.7。或者,您可以习惯使用弃用警告,因为使用CentOS的一部分是使用旧软件。