我正在尝试使用 ansible,但似乎无法让它与 sudo 一起工作。我已将问题最小化为:
这不起作用:
ansible localhost --ask-become-pass -m shell -a "cat /var/log/syslog"
给出此输出:我输入密码,然后出现错误。
SUDO password:
localhost | FAILED | rc=1 >>
cat: /var/log/syslog: Permission denied
这些工作正常:
ssh -t localhost sudo cat /var/log/syslog #without ansible
ansible localhost -m shell -a "ls" #without sudo
其他诊断:
#expecting last line to be `root`
ansible localhost --become-user=root --ask-become-pass -m shell -a "whoami"
当输入正确的密码时,给出此输出。
SUDO password:
localhost | SUCCESS | rc=0 >>
richard
答案1
您可以尝试在运行时将其添加到命令中--ask-become-pass
所以,ansible yoga --become-user=root --ask-become-pass -m shell -a "cat /var/log/syslog"
答案2
看来这--ask-become-pass
还不够,你还需要参数--become
。因此命令是:ansible localhost --become --ask-become-pass -m shell -a "cat /var/log/syslog"
。
我还注意到我不需要--ask-become-pass
,我认为密码正在被缓存,就像sudo
这样。