Ansible adhoc command execute with sudo
I need execute ansible adhoc command.
$ ansible somehost -m command -a "cat /etc/passwd"-u someuser --ask-sudo-pass
I have an user account (someuser) with sudo
privilege. Usually I became root sudo su -
.
How to use adhoc command with sudo su -
?
ansible version is 2.0.0.2
Solution 1:
If you have SSH keys shared to your servers in your inventory and you're going to want to sudo
to root, you can further reduce the command to this:
$ ansible all -m command -a "docker info" -u myuser --become --ask-become-pass
Solution 2:
For Ansible version 1.9 or newer you need to use --ask-become-pass
instead. For older versions --ask-sudo-pass
should work.
Become (Privilege Escalation)
Before 1.9 Ansible mostly allowed the use of sudo and a limited use of su to allow a login/remote user to become a different user and execute tasks, create resources with the 2nd user’s permissions. As of 1.9 become supersedes the old sudo/su, while still being backwards compatible. This new system also makes it easier to add other privilege escalation tools like pbrun (Powerbroker), pfexec, dzdo (Centrify), and others.
Solution 3:
The correct ansible command is
ansible all -m command -a "docker info" -u myuser --become-user root --ask-pass --ask-become-pass