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