Commit 313f26f8 by James Cammarata

Fix issue with vars precedence from roles

Fixes #9219
parent c6bfd05c
......@@ -372,7 +372,7 @@ class Play(object):
# flush handlers after pre_tasks
new_tasks.append(dict(meta='flush_handlers'))
roles = self._build_role_dependencies(roles, [], self.vars)
roles = self._build_role_dependencies(roles, [], {})
# give each role an uuid and
# make role_path available as variable to the task
......
......@@ -600,6 +600,14 @@ class Runner(object):
module_vars_inject = utils.combine_vars(self.module_vars, module_vars_inject)
module_vars = template.template(self.basedir, self.module_vars, module_vars_inject)
# remove bad variables from the module vars, which may be in there due
# the way role declarations are specified in playbooks
if 'tags' in module_vars:
del module_vars['tags']
if 'when' in module_vars:
del module_vars['when']
# start building the dictionary of injected variables
inject = {}
# default vars are the lowest priority
......@@ -608,10 +616,10 @@ class Runner(object):
inject = utils.combine_vars(inject, host_variables)
# then the setup_cache which contains facts gathered
inject = utils.combine_vars(inject, self.setup_cache.get(host, {}))
# then come the module variables
inject = utils.combine_vars(inject, module_vars)
# followed by vars (vars, vars_files, vars/main.yml)
inject = utils.combine_vars(inject, self.vars_cache.get(host, {}))
# then come the module variables
inject = utils.combine_vars(inject, module_vars)
# and finally -e vars are the highest priority
inject = utils.combine_vars(inject, self.extra_vars)
# and then special vars
......
......@@ -10,5 +10,5 @@
- 'param_var == "param_var_role1"'
- 'vars_var == "vars_var"'
- 'vars_files_var == "vars_files_var"'
- 'vars_files_var_role == "vars_files_var_role3"'
- 'vars_files_var_role == "vars_files_var_role1"'
- 'defaults_file_var_role1 == "defaults_file_var_role1"'
......@@ -10,5 +10,5 @@
- 'param_var == "param_var_role2"'
- 'vars_var == "vars_var"'
- 'vars_files_var == "vars_files_var"'
- 'vars_files_var_role == "vars_files_var_role3"'
- 'vars_files_var_role == "vars_files_var_role2"'
- 'defaults_file_var_role2 == "overridden by role vars"'
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment