使用 sudo 执行 Ansible adhoc 命令

使用 sudo 执行 Ansible adhoc 命令

我需要执行 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

相关内容