Question:
Recently I started digging into Ansible and writing my own playbooks. However, I have a troubles with understanding difference between become
and become_user
.
As I understand it become_user
is something similar to su <username>
, and become
means something like sudo su
or “perform all commands as a sudo user”. But sometimes these two directives are mixed.
Could you explain the correct meaning of them?
Answer:
become_user
defines the user which is being used for privilege escalation.
become
simply is a flag to either activate or deactivate the same.
Here are three examples which should make it clear:
- This task will be executed as
root
, becauseroot
is the default user for privilege escalation:
123- do: somethingbecome: true - This task will be executed as user
someone
, because the user is explicitly set:
1234- do: somethingbecome: truebecome_user: someone - This task will not do anything with
become_user
, becausebecome
is not set and defaults tofalse
/no
:
123- do: somethingbecome_user: someone
…unless become was set to true
on a higher level, e.g. a block, the playbook, group or host-vars etc.
Here is an example with a block:
1 2 3 4 5 6 |
- become: true block: - do: something become_user: someone - do: something |
The first 1st is ran as user someone
, the 2nd as root
.
As I understand it become_user is something similar to su , and become means something like sudo su or “perform all commands as a sudo user”.
The default become_method
is sudo
, so sudo do something
or sudo -u <become_user> do something