在项目中使用ansible做批量操作,但是环境限制只能用非root用户访问,然后才能切root权限。配置好hostfile之后,使用报错:
10.219.19.116 | FAILED! => {
"failed": true,
"msg": "Timeout (122s) waiting for privilege escalation prompt: "
}
ansible版本:2.3.0
问题原因使用非root用户登录,然后用su方法切换,就会抛出这个问题, 属于ansible的一个bug。
解决办法修改/usr/lib/python2.7/site-packages/ansible-2.3.0.0-py2.7.egg/ansible/plugins/connection/__init__.py 此路径取决于你的实际情况。
def check_password_prompt(self, b_output):
if self._play_context.prompt is None:
return False
elif isinstance(self._play_context.prompt, string_types):
b_prompt = to_bytes(self._play_context.prompt).strip()
b_lines = b_output.splitlines(True)
if not b_lines:
return False
return b_lines[-1].strip().endswith(b_prompt) or b_lines[0].strip().endswith(b_prompt)
# 新增下面的两行代码,解决上述bug
else:
return self._play_context.prompt(b_output)
修改之后,重新运行,可以正常使用了。



