From bfff95393c7d74e00376e4a51dd1aef16ae19d2c Mon Sep 17 00:00:00 2001 From: Matt Martz Date: Mon, 8 Jun 2020 16:30:40 -0500 Subject: [PATCH] Add custom globals to the environment, and not per template (#69278) * Add custom globals to the environment, and not per template * Add changelog fragment --- .../69278-early-customize-jinja2.yml | 5 +++++ lib/ansible/template/__init__.py | 19 +++++++++---------- 2 files changed, 14 insertions(+), 10 deletions(-) create mode 100644 changelogs/fragments/69278-early-customize-jinja2.yml diff --git a/changelogs/fragments/69278-early-customize-jinja2.yml b/changelogs/fragments/69278-early-customize-jinja2.yml new file mode 100644 index 00000000000..9156b851758 --- /dev/null +++ b/changelogs/fragments/69278-early-customize-jinja2.yml @@ -0,0 +1,5 @@ +minor_changes: +- Templating - Add globals to the jinja2 environment at ``Templar`` + instantiation, instead of customizing the template object. + Only customize the template object, to disable lookups. + (https://github.com/ansible/ansible/pull/69278) diff --git a/lib/ansible/template/__init__.py b/lib/ansible/template/__init__.py index 6b5e7786269..33b31e598ed 100644 --- a/lib/ansible/template/__init__.py +++ b/lib/ansible/template/__init__.py @@ -572,6 +572,15 @@ class Templar: loader=FileSystemLoader(self._basedir), ) + # jinja2 global is inconsistent across versions, this normalizes them + self.environment.globals['dict'] = dict + + # Custom globals + self.environment.globals['lookup'] = self._lookup + self.environment.globals['query'] = self.environment.globals['q'] = self._query_lookup + self.environment.globals['now'] = self._now_datetime + self.environment.globals['finalize'] = self._finalize + # the current rendering context under which the templar class is working self.cur_context = None @@ -997,18 +1006,8 @@ class Templar: else: return data - # jinja2 global is inconsistent across versions, this normalizes them - t.globals['dict'] = dict - if disable_lookups: t.globals['query'] = t.globals['q'] = t.globals['lookup'] = self._fail_lookup - else: - t.globals['lookup'] = self._lookup - t.globals['query'] = t.globals['q'] = self._query_lookup - - t.globals['now'] = self._now_datetime - - t.globals['finalize'] = self._finalize jvars = AnsibleJ2Vars(self, t.globals)