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.

Reply via email to