Currently my playbook structure is like this:
~/test_ansible_roles ❯❯❯ tree .
.
├── checkout_sources
│ └── tasks
│ └── main.yml
├── install_dependencies
│ └── tasks
│ └── main.yml
├── make_dirs
│ └── tasks
│ └── main.yml
├── setup_machine.yml
One of the roles that I have is to install dependencies on my box, so for this I need sudo
. Because of that all of my other tasks I need to include the stanza:
become: yes
become_user: my_username
Is there a better way to do this ?
You can set the
become
options per:Per playbook:
Per role:
Per task:
You can combine this however you like. The playbook can run as user A, a role as user B and finally a task inside the role as user C.
Defining
become
per playbook or role is rarely needed. If a single task inside a role requires sudo it should only be defined for that specific task and not the role.If multiple tasks inside a role require
become
, blocks come in handy to avoid recurrence: