diff --git a/lib/ansible/playbook/play.py b/lib/ansible/playbook/play.py index 08564ba57e..198f15d061 100644 --- a/lib/ansible/playbook/play.py +++ b/lib/ansible/playbook/play.py @@ -227,6 +227,13 @@ class Play(object): if meta_data: allow_dupes = utils.boolean(meta_data.get('allow_duplicates','')) + if "tags" in passed_vars: + if not self._is_valid_tag(passed_vars["tags"]): + # one of the tags specified for this role was in the + # skip list, or we're limiting the tags and it didn't + # match one, so we just skip it completely + continue + # if any tags were specified as role/dep variables, merge # them into the passed_vars so they're passed on to any # further dependencies too, and so we only have one place @@ -268,13 +275,6 @@ class Play(object): if 'role' in dep_vars: del dep_vars['role'] - if "tags" in passed_vars: - if not self._is_valid_tag(passed_vars["tags"]): - # one of the tags specified for this role was in the - # skip list, or we're limiting the tags and it didn't - # match one, so we just skip it completely - continue - if not allow_dupes: if dep in self.included_roles: # skip back to the top, since we don't want to