* Revert " Update TaskInclude _raw_params with the expanded/templated path to file (#39365)"
This reverts commit 4b01b92cfe
.
* Improve error messaging, catch error templating parent path
This commit is contained in:
parent
24c0f6f872
commit
c403f01971
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):
|
if not isinstance(parent_include, TaskInclude):
|
||||||
parent_include = parent_include._parent
|
parent_include = parent_include._parent
|
||||||
continue
|
continue
|
||||||
|
try:
|
||||||
parent_include_dir = os.path.dirname(templar.template(parent_include.args.get('_raw_params')))
|
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:
|
if cumulative_path is None:
|
||||||
cumulative_path = parent_include_dir
|
cumulative_path = parent_include_dir
|
||||||
elif not os.path.isabs(cumulative_path):
|
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'])
|
include_target = templar.template(t.args['_raw_params'])
|
||||||
except AnsibleUndefinedVariable as e:
|
except AnsibleUndefinedVariable as e:
|
||||||
raise AnsibleParserError(
|
raise AnsibleParserError(
|
||||||
"Error when evaluating variable in include name: %s.\n\n"
|
"Error when evaluating variable in import path: %s.\n\n"
|
||||||
"When using static includes, ensure that any variables used in their names are defined in vars/vars_files\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 includes cannot use variables from inventory\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'],
|
"sources like group or host vars." % t.args['_raw_params'],
|
||||||
obj=task_ds,
|
obj=task_ds,
|
||||||
suppress_extended_error=True,
|
suppress_extended_error=True,
|
||||||
|
|
|
@ -144,8 +144,6 @@ class IncludedFile:
|
||||||
include_file = loader.path_dwim(include_result['include'])
|
include_file = loader.path_dwim(include_result['include'])
|
||||||
|
|
||||||
include_file = templar.template(include_file)
|
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)
|
inc_file = IncludedFile(include_file, include_variables, original_task)
|
||||||
else:
|
else:
|
||||||
# template the included role's name here
|
# 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
|
|
|
@ -64,10 +64,6 @@ ANSIBLE_STRATEGY='linear' ansible-playbook test_grandparent_inheritance.yml -i .
|
||||||
ANSIBLE_STRATEGY='linear' ansible-playbook undefined_var/playbook.yml -i ../../inventory "$@"
|
ANSIBLE_STRATEGY='linear' ansible-playbook undefined_var/playbook.yml -i ../../inventory "$@"
|
||||||
ANSIBLE_STRATEGY='free' 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 "$@"
|
|
||||||
|
|
||||||
# include_ + apply (explicit inheritance)
|
# include_ + apply (explicit inheritance)
|
||||||
ANSIBLE_STRATEGY='linear' ansible-playbook apply/include_apply.yml -i ../../inventory "$@" --tags foo
|
ANSIBLE_STRATEGY='linear' ansible-playbook apply/include_apply.yml -i ../../inventory "$@" --tags foo
|
||||||
set +e
|
set +e
|
||||||
|
|
Loading…
Reference in a new issue