Fix variable precedence issue where set facts beat role params
Also updates doc on variable precedence, as it was incorrect for the order of play vars/vars_prompt/vars_files in relation to set_fact and registered variables. Fixes #14702 Fixes #14826
This commit is contained in:
parent
313d94cc71
commit
a9c9cd773f
2 changed files with 9 additions and 10 deletions
|
@ -801,11 +801,11 @@ In 2.x, we have made the order of precedence more specific (with the last listed
|
||||||
* playbook group_vars
|
* playbook group_vars
|
||||||
* playbook host_vars
|
* playbook host_vars
|
||||||
* host facts
|
* host facts
|
||||||
* registered vars
|
|
||||||
* set_facts
|
|
||||||
* play vars
|
* play vars
|
||||||
* play vars_prompt
|
* play vars_prompt
|
||||||
* play vars_files
|
* play vars_files
|
||||||
|
* registered vars
|
||||||
|
* set_facts
|
||||||
* role and include vars
|
* role and include vars
|
||||||
* block vars (only for tasks in block)
|
* block vars (only for tasks in block)
|
||||||
* task vars (only for the task)
|
* task vars (only for the task)
|
||||||
|
|
|
@ -327,20 +327,19 @@ class VariableManager:
|
||||||
for role in play.get_roles():
|
for role in play.get_roles():
|
||||||
all_vars = combine_vars(all_vars, role.get_vars(include_params=False))
|
all_vars = combine_vars(all_vars, role.get_vars(include_params=False))
|
||||||
|
|
||||||
|
if host:
|
||||||
|
all_vars = combine_vars(all_vars, self._vars_cache.get(host.get_name(), dict()))
|
||||||
|
all_vars = combine_vars(all_vars, self._nonpersistent_fact_cache.get(host.name, dict()))
|
||||||
|
|
||||||
if task:
|
if task:
|
||||||
if task._role:
|
if task._role:
|
||||||
all_vars = combine_vars(all_vars, task._role.get_vars(include_params=False))
|
all_vars = combine_vars(all_vars, task._role.get_vars(include_params=False))
|
||||||
all_vars = combine_vars(all_vars, task._role.get_role_params(task._block.get_dep_chain()))
|
all_vars = combine_vars(all_vars, task._role.get_role_params(task._block.get_dep_chain()))
|
||||||
all_vars = combine_vars(all_vars, task.get_vars())
|
all_vars = combine_vars(all_vars, task.get_vars())
|
||||||
|
|
||||||
if host:
|
# special case for include tasks, where the include params
|
||||||
all_vars = combine_vars(all_vars, self._vars_cache.get(host.get_name(), dict()))
|
# may be specified in the vars field for the task, which should
|
||||||
all_vars = combine_vars(all_vars, self._nonpersistent_fact_cache.get(host.name, dict()))
|
# have higher precedence than the vars/np facts above
|
||||||
|
|
||||||
# special case for include tasks, where the include params
|
|
||||||
# may be specified in the vars field for the task, which should
|
|
||||||
# have higher precedence than the vars/np facts above
|
|
||||||
if task:
|
|
||||||
all_vars = combine_vars(all_vars, task.get_include_params())
|
all_vars = combine_vars(all_vars, task.get_include_params())
|
||||||
|
|
||||||
all_vars = combine_vars(all_vars, self._extra_vars)
|
all_vars = combine_vars(all_vars, self._extra_vars)
|
||||||
|
|
Loading…
Reference in a new issue