我需要执行 ansible adhoc 命令。
$ ansible somehost -m command -a "cat /etc/passwd"-u someuser --ask-sudo-pass
我有一个具有权限的用户帐户 (someuser) sudo
。通常我会成为 root sudo su -
。
如何使用 adhoc 命令sudo su -
?
ansible 版本是 2.0.0.2
答案1
对于 Ansible 1.9 或更新版本,您需要使用--ask-become-pass
。对于旧版本--ask-sudo-pass
应该可以工作。
在 1.9 之前,Ansible 大多允许使用须藤并有限地使用 苏允许登录/远程用户成为其他用户并执行任务,使用第二个用户的权限创建资源。从 1.9 开始 变得取代了旧的 sudo/su,同时仍向后兼容。这个新系统还可以更轻松地添加其他特权升级工具,例如普布伦(权力掮客),执行命令,大智多谋 (Centrify)等等。
答案2
如果您在库存中拥有与服务器共享的 SSH 密钥,并且想要sudo
以 root 身份运行,则可以进一步将命令简化为:
$ ansible all -m command -a "docker info" -u myuser --become --ask-become-pass
答案3
正确的 ansible 命令是
ansible all -m 命令 -a “docker info” -u myuser --become-user root --ask-pass --ask-become-pass
答案4
我正在使用 ad-hoc,当我遇到这个问题时,添加-b --become-user ANSIBLE_USER
到我的命令中就可以解决我的问题。例如:
ansible all -m file -a "path=/etc/s.text state=touch" -b --become-user ansadmin
当然,在此之前,我已经授予用户 Sudo 访问权限
如果你授予你的用户 Sudo 访问权限,你可以这样写:
ansible all -m file -a "path=/var/s.text state=touch" -b --become-user root