* Revert " Update TaskInclude _raw_params with the expanded/templated path to file (#39365)" This reverts commit4b01b92cfe
. * Improve error messaging, catch error templating parent path (cherry picked from commitc403f01971
)
This commit is contained in:
parent
4a1eb1c191
commit
094c9e7a3d
6 changed files with 16 additions and 28 deletions
|
@ -189,7 +189,19 @@ def load_list_of_tasks(ds, play, block=None, role=None, task_include=None, use_h
|
|||
if not isinstance(parent_include, TaskInclude):
|
||||
parent_include = parent_include._parent
|
||||
continue
|
||||
parent_include_dir = os.path.dirname(templar.template(parent_include.args.get('_raw_params')))
|
||||
try:
|
||||
parent_include_dir = os.path.dirname(templar.template(parent_include.args.get('_raw_params')))
|
||||
except AnsibleUndefinedVariable as e:
|
||||
if not parent_include.statically_loaded:
|
||||
raise AnsibleParserError(
|
||||
"Error when evaluating variable in dynamic parent include path: %s. "
|
||||
"When using static imports, the parent dynamic include cannot utilize host facts "
|
||||
"or variables from inventory" % parent_include.args.get('_raw_params'),
|
||||
obj=task_ds,
|
||||
suppress_extended_error=True,
|
||||
orig_exc=e
|
||||
)
|
||||
raise
|
||||
if cumulative_path is None:
|
||||
cumulative_path = parent_include_dir
|
||||
elif not os.path.isabs(cumulative_path):
|
||||
|
@ -212,9 +224,9 @@ def load_list_of_tasks(ds, play, block=None, role=None, task_include=None, use_h
|
|||
include_target = templar.template(t.args['_raw_params'])
|
||||
except AnsibleUndefinedVariable as e:
|
||||
raise AnsibleParserError(
|
||||
"Error when evaluating variable in include name: %s.\n\n"
|
||||
"When using static includes, ensure that any variables used in their names are defined in vars/vars_files\n"
|
||||
"or extra-vars passed in from the command line. Static includes cannot use variables from inventory\n"
|
||||
"Error when evaluating variable in import path: %s.\n\n"
|
||||
"When using static imports, ensure that any variables used in their names are defined in vars/vars_files\n"
|
||||
"or extra-vars passed in from the command line. Static imports cannot use variables from facts or inventory\n"
|
||||
"sources like group or host vars." % t.args['_raw_params'],
|
||||
obj=task_ds,
|
||||
suppress_extended_error=True,
|
||||
|
|
|
@ -144,8 +144,6 @@ class IncludedFile:
|
|||
include_file = loader.path_dwim(include_result['include'])
|
||||
|
||||
include_file = templar.template(include_file)
|
||||
# Update the task args to reflect the expanded/templated path
|
||||
original_task.args['_raw_params'] = include_file
|
||||
inc_file = IncludedFile(include_file, include_variables, original_task)
|
||||
else:
|
||||
# template the included role's name here
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
- debug:
|
||||
msg: one
|
|
@ -1,14 +0,0 @@
|
|||
- hosts: testhost:testhost2
|
||||
tasks:
|
||||
- set_fact:
|
||||
include_me: one
|
||||
when: inventory_hostname == ansible_play_hosts[0]
|
||||
|
||||
- set_fact:
|
||||
include_me: two
|
||||
when: inventory_hostname == ansible_play_hosts[1]
|
||||
|
||||
- debug:
|
||||
var: include_me
|
||||
|
||||
- include_tasks: '{{ include_me }}/include_me.yml'
|
|
@ -1,2 +0,0 @@
|
|||
- debug:
|
||||
msg: two
|
|
@ -63,7 +63,3 @@ ANSIBLE_STRATEGY='linear' ansible-playbook test_grandparent_inheritance.yml -i .
|
|||
# undefined_var
|
||||
ANSIBLE_STRATEGY='linear' ansible-playbook undefined_var/playbook.yml -i ../../inventory "$@"
|
||||
ANSIBLE_STRATEGY='free' ansible-playbook undefined_var/playbook.yml -i ../../inventory "$@"
|
||||
|
||||
# Include path inheritance using host var for include file path
|
||||
ANSIBLE_STRATEGY='linear' ansible-playbook include_path_inheritance/playbook.yml -i ../../inventory "$@"
|
||||
ANSIBLE_STRATEGY='free' ansible-playbook include_path_inheritance/playbook.yml -i ../../inventory "$@"
|
||||
|
|
Loading…
Reference in a new issue