On 6 December 2013 20:56, Andrew Martin <[email protected]> wrote:
> Okay, so the only way to exclude a host is at the play level, not the role > level? > Yes. Roles are basically just some automation around a set of tasks. It would be more ideal for my setup to exclude at the role level, that way > I can ensure that any new play that is written that includes a particular > role won't run it against blacklisted hosts. > If you really want to be sure, add a conditional to the role tasks: when: inventory_hostname != mailserver Moreover, having hosts excluded at the play level means that entire play > will be skipped on blacklisted hosts, but perhaps only 1 of the roles in > the play is blacklisted, > Yes, that is by design. You need to model playbooks to include roles and target a particular set of hosts. > and so if the blacklist/exclusion happened at the role level then the play > would run on the blacklisted host and just complete all of the roles that > were allowed. > > For example, say I have a play called common.yml which sets up several > common features on hosts. It is defined as follows: > roles: > - ntp > - postfix > - smartmontools > > It would be nice to be able to just run the common.yml play against all > hosts, and have it configure ntp and smartmontools on all hosts but only > postfix on the hosts which aren't mailservers. > Then you need to split this up in multiple plays. Take the postfix role out of 'common', as it is not common to all your hosts. > Is this possible? If I add "- hosts: !mailserver" to common.yml, then the > complete play will be skipped on "mailserver". > should be hosts: all:!mailserver but yes Serge -- 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 [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
