ansible升级到2.8之后的问题

以前一直使用ansible1.9的版本,最近升级到2.8版本了,发现有挺多问题的。

1、没有了-S -R参数

以前要使用su切换的话,使用-S -R就可以切换 #ansible test -S -R root -m shell -a 'ls'

升级到2.8之后,可以使用如下命令: 一是指定用户 #ansible test –become-user=root -m shell -a ’ls'\

一是指定方法 #ansible test –become-method=su -m shell -a ’ls'

2、对客户端的Python版本的要求

ansible升级到2.8之后,执行ansible命令时,一些远程服务器会返回错误: #ansible test -m shell -a ’ls'

172.28.x.x | FAILED! => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "module_stderr": "Shared connection to 172.28.x.x closed.\\r\\n",
    "module_stdout": "  File \\"/tmp/.ansible/ansible-tmp-1559785199.8916569-71635849890810/AnsiballZ_command.py\\", line 40\\r\\n    with open(module, \'wb\') as f:
               ^SyntaxError: invalid syntax",
    "msg": "MODULE FAILURE\\nSee stdout/stderr for the exact error",
    "rc": 1
}

这是因为远程服务器的Python版本小于2.6。

解决办法有两个:

一是升级服务器的Python,可使用ansible的raw模块来进行升级Python的操作,raw不依赖于Python。 二是降低ansible的版本,ansible版本只要低于2.4即可正常使用。(推荐使用)

卸载ansible: #pip uninstall ansible

安装低于2.4的版本: #pip install ansible==2.3.3.0