ansible解决python版本依赖

由于公司现有的环境的原因:

目前有redhat4 redhat5 centos6 centos7

在云端上面部署的时候,发现一切都很正常,准备部署到公司进行测试。

安装ansible服务器这里就不说了

安装好发现推送的时候报如下的错误。

    "changed": false, 
    "module_stderr": "Shared connection to 192.168.166.85 closed.\r\n", 
    "module_stdout": "  File \"/root/.ansible/tmp/ansible-tmp-1557400333.44-113544688602620/AnsiballZ_ping.py\", line 39\r\n    with open(module, 'wb') as f:\r\n            ^\r\nSyntaxError: invalid syntax\r\n", 
    "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", 
    "rc": 1
}

就是语法的错误,折腾了很久,也查过很多资料;

发现问题原因是:这些机器的python版本大部分是python2.4 导致语法有问题

问题找到就比较好解决了

方法一:

升级python2.4到python2.7

方法二:

安装simplejson这个插件

方法三:

通过python的一个模块配置ansible_python_interpreter 指向python的位置前提是你指向的是python2.7版本

最后我用了第三个办法,主要原因有:

1.不知道环境的python2.4是否被使用,如果贸然升级会有问题

2.simplejson工具安装可能需要解决依赖,如果没有外网很麻烦,所以这个方法我也没试

解决详情:

我直接在一台安装好python2.7的机器,把整个python2.7文件夹,注意是文件夹

打包好,放到客户端,注意是客户端,因为这个参数是解析客户端的python

然后再修改ansible的hosts添加方法三的参数

vim /etc/ansible/hosts

192.168.1.22 ansible_python_interpreter=/usr/local/python2.7/bin/python2.7

问题解决,不用升级python也不用安装任何东西(*^▽^*)

 

 

 

 

你可能感兴趣的:(ansible)