mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-05-06 21:32:49 +00:00
Allow variables to be passed in to template lookup plugin (#18662)
This allows a single template to be evaluated with different values in
the same task. For example, with a template like 'x:{{a}}', one could do
something like this:
- foo:
a: "{{ lookup('template', 'x.j2', template_vars=dict(a=foo[item])) }}"
b: "{{ lookup('template', 'x.j2', template_vars=dict(a=bar[item])) }}"
with_items:
- x
- y
…and "a" and "b" would expand to different strings based on what we
passed in to the template lookup.
This commit is contained in:
committed by
GitHub
parent
517c91df18
commit
20b0716948
@@ -36,6 +36,7 @@ class LookupModule(LookupBase):
|
||||
def run(self, terms, variables, **kwargs):
|
||||
|
||||
convert_data_p = kwargs.get('convert_data', True)
|
||||
lookup_template_vars = kwargs.get('template_vars', {})
|
||||
ret = []
|
||||
|
||||
for term in terms:
|
||||
@@ -62,10 +63,14 @@ class LookupModule(LookupBase):
|
||||
searchpath = [self._loader._basedir, os.path.dirname(lookupfile)]
|
||||
self._templar.environment.loader.searchpath = searchpath
|
||||
|
||||
# add ansible 'template' vars
|
||||
temp_vars = variables.copy()
|
||||
temp_vars.update(generate_ansible_template_vars(lookupfile))
|
||||
self._templar.set_available_variables(temp_vars)
|
||||
# The template will have access to all existing variables,
|
||||
# plus some added by ansible (e.g., template_{path,mtime}),
|
||||
# plus anything passed to the lookup with the template_vars=
|
||||
# argument.
|
||||
vars = variables.copy()
|
||||
vars.update(generate_ansible_template_vars(lookupfile))
|
||||
vars.update(lookup_template_vars)
|
||||
self._templar.set_available_variables(vars)
|
||||
|
||||
# do the templating
|
||||
res = self._templar.template(template_data, preserve_trailing_newlines=True,
|
||||
|
||||
Reference in New Issue
Block a user