From a341a8a093ac9b56ea0b0b2935587c94a9b025ef Mon Sep 17 00:00:00 2001 From: James Cammarata Date: Tue, 1 Sep 2015 11:27:00 -0400 Subject: [PATCH] Make sure tasks from a role see their defaults above all others Fixes #12081 --- lib/ansible/vars/__init__.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/ansible/vars/__init__.py b/lib/ansible/vars/__init__.py index 8ceed9d3a26..bcddc2e77ff 100644 --- a/lib/ansible/vars/__init__.py +++ b/lib/ansible/vars/__init__.py @@ -183,6 +183,12 @@ class VariableManager: for role in play.get_roles(): all_vars = self._combine_vars(all_vars, role.get_default_vars()) + # if we have a task in this context, and that task has a role, make + # sure it sees its defaults above any other roles, as we previously + # (v1) made sure each task had a copy of its roles default vars + if task and task._role is not None: + all_vars = self._combine_vars(all_vars, task._role.get_default_vars()) + if host: # next, if a host is specified, we load any vars from group_vars # files and then any vars from host_vars files which may apply to