Conditional Roles

38 views
Skip to first unread message

Javeria Khan

unread,
Jun 10, 2015, 9:15:59 PM6/10/15
to ansible...@googlegroups.com
Not sure if this has been asked before, but I needed to include some playbooks conditionally, each of these was a top level that ran on different hosts:

- include: play1.yml
  when: "'var1 in some_list"

- include: play2.yml
  when: "'var2' in some_list"

But apparently this doesn't work, no errors are generated, but the playbooks are always inlcuded and run even when the condition is false. So I took my conditions to another level inside and applied them to roles:

(play1.yml)
- hosts: hosts
  user: root
  roles:
    - { role: role1, when: "'var1 in some_list" }
    - { role: role2, when: "'var1 in some_list" }

But this results in a whole lot of skipped output in the run. There must a cleaner way to do this?

Thanks

Brian Coca

unread,
Jun 10, 2015, 9:21:15 PM6/10/15
to ansible...@googlegroups.com
The only conditional applicable to a play, is the hosts: selection.

Iincludes, roles and everything else won't get conditions applied, but
they can pass them on to the only object that is subject to
conditions, the tasks.


this changes a bit in v2 but that is still in development.

--
Brian Coca

Javeria Khan

unread,
Jun 10, 2015, 10:36:46 PM6/10/15
to ansible...@googlegroups.com

'Hosts' has to have a group name infront of it right? To be able to apply the condition, could I conditionally include the relevant hosts to that group?

Brian Coca

unread,
Jun 10, 2015, 10:47:44 PM6/10/15
to ansible...@googlegroups.com
possibly, but the variables you have available in that scope is small.
> --
> 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/89d55e1e-3436-4da4-801c-dc601859b65a%40googlegroups.com.
>
> For more options, visit https://groups.google.com/d/optout.



--
Brian Coca
Reply all
Reply to author
Forward
0 new messages