Using a sigle 'when' for multiple tasks

54 views
Skip to first unread message

Stephan S.

unread,
Apr 9, 2014, 9:51:02 AM4/9/14
to ansible...@googlegroups.com
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

Paul Durivage

unread,
Apr 10, 2014, 12:09:06 PM4/10/14
to ansible...@googlegroups.com
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.



--
You received this message because you are subscribed to the Google Groups "Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-proje...@googlegroups.com.
To post to this group, send email to ansible...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/b9e6e451-5566-4126-b2d6-63756869c25e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Stephan S.

unread,
Apr 15, 2014, 3:49:52 AM4/15/14
to ansible...@googlegroups.com
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.

Michael DeHaan

unread,
Apr 15, 2014, 5:31:56 PM4/15/14
to ansible...@googlegroups.com
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.





Reply all
Reply to author
Forward
0 new messages