Using a sigle 'when' for multiple tasks

Hello,

i have a playbook which contains 10 tasks. I want to run those tasks only if a when clause if filled.
My first approach was to put on every task the when. E.g.:

- name: My command
command: sudo install…
when: a == b

The above example worked fine but was not ideal. The second approach was to use roles. Inside a playbook i declared a role. This role contained a task list
which was executed only when the ‘when’ was true. That worked as well but i needed 3 files for something really simple.

My question is if i can have just one single playbook, including all 10 tasks and control all those tasks with one just when clause,
avoid to have always the same when: a == b for every task.

Thank you

Using a role is the way to go here. Yes, you’ll need to physically crate the role and use 3 files, but conditionally running the role with a “when” statement is the only way, I think, that you can avoid writing “when: a == b” 10 times.

Why do you need 3 files for your role? You said it was simple, so I think you’d only have one file in the role/tasks folder.

This will require again an extra file for the role. I was hoping to do everything inside a single playbook.

Thank you very much for your reply.

Alternatively, the group_by module is a great way to create a dynamic group of hosts where something is true, and then apply tasks only to that group of hosts.