Add option to enable / disable the template engine
This change allows a deployer to selectively enable or disable the template engine. This will allow folks to override the contents of a configuration file via the `config_overrides` option but not render any jinja related content within the file, except for what is provided by the `config_overrides` option. Change-Id: If226b4814a88b3bd7968b5e2ef64474710665ae0 Signed-off-by: Kevin Carter <kecarter@redhat.com>
This commit is contained in:
parent
80cc8ed4b1
commit
abc807a70a
@ -769,6 +769,17 @@ class ActionModule(ActionBase):
|
|||||||
|
|
||||||
return return_dict
|
return return_dict
|
||||||
|
|
||||||
|
def _check_templar(self, data):
|
||||||
|
if boolean(self._task.args.get('render_template', True)):
|
||||||
|
return self._templar.template(
|
||||||
|
data,
|
||||||
|
preserve_trailing_newlines=True,
|
||||||
|
escape_backslashes=False,
|
||||||
|
convert_data=False
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
return data
|
||||||
|
|
||||||
def run(self, tmp=None, task_vars=None):
|
def run(self, tmp=None, task_vars=None):
|
||||||
"""Run the method"""
|
"""Run the method"""
|
||||||
|
|
||||||
@ -855,12 +866,7 @@ class ActionModule(ActionBase):
|
|||||||
|
|
||||||
self._templar.environment.loader.searchpath = _vars['searchpath']
|
self._templar.environment.loader.searchpath = _vars['searchpath']
|
||||||
self._templar.set_available_variables(temp_vars)
|
self._templar.set_available_variables(temp_vars)
|
||||||
resultant = self._templar.template(
|
resultant = self._check_templar(data=template_data)
|
||||||
template_data,
|
|
||||||
preserve_trailing_newlines=True,
|
|
||||||
escape_backslashes=False,
|
|
||||||
convert_data=False
|
|
||||||
)
|
|
||||||
|
|
||||||
# Access to protected method is unavoidable in Ansible
|
# Access to protected method is unavoidable in Ansible
|
||||||
self._templar.set_available_variables(
|
self._templar.set_available_variables(
|
||||||
@ -888,12 +894,7 @@ class ActionModule(ActionBase):
|
|||||||
if 'content' in slurpee:
|
if 'content' in slurpee:
|
||||||
dest_data = base64.b64decode(
|
dest_data = base64.b64decode(
|
||||||
slurpee['content']).decode('utf-8')
|
slurpee['content']).decode('utf-8')
|
||||||
resultant_dest = self._templar.template(
|
resultant_dest = self._check_templar(data=dest_data)
|
||||||
dest_data,
|
|
||||||
preserve_trailing_newlines=True,
|
|
||||||
escape_backslashes=False,
|
|
||||||
convert_data=False
|
|
||||||
)
|
|
||||||
type_merger = getattr(self,
|
type_merger = getattr(self,
|
||||||
CONFIG_TYPES.get(_vars['config_type']))
|
CONFIG_TYPES.get(_vars['config_type']))
|
||||||
_, config_new = type_merger(
|
_, config_new = type_merger(
|
||||||
@ -936,12 +937,7 @@ class ActionModule(ActionBase):
|
|||||||
|
|
||||||
# Re-template the resultant object as it may have new data within it
|
# Re-template the resultant object as it may have new data within it
|
||||||
# as provided by an override variable.
|
# as provided by an override variable.
|
||||||
resultant = self._templar.template(
|
resultant = self._check_templar(data=resultant)
|
||||||
resultant,
|
|
||||||
preserve_trailing_newlines=True,
|
|
||||||
escape_backslashes=False,
|
|
||||||
convert_data=False
|
|
||||||
)
|
|
||||||
|
|
||||||
# run the copy module
|
# run the copy module
|
||||||
new_module_args = self._task.args.copy()
|
new_module_args = self._task.args.copy()
|
||||||
@ -983,6 +979,9 @@ class ActionModule(ActionBase):
|
|||||||
# Content from config_template is converted to src
|
# Content from config_template is converted to src
|
||||||
new_module_args.pop('content', None)
|
new_module_args.pop('content', None)
|
||||||
|
|
||||||
|
# remove render enablement option
|
||||||
|
new_module_args.pop('render_template', None)
|
||||||
|
|
||||||
# Run the copy module
|
# Run the copy module
|
||||||
rc = self._execute_module(
|
rc = self._execute_module(
|
||||||
module_name='copy',
|
module_name='copy',
|
||||||
|
@ -75,7 +75,15 @@ options:
|
|||||||
- True
|
- True
|
||||||
- False
|
- False
|
||||||
default: false
|
default: false
|
||||||
|
render_template:
|
||||||
|
description:
|
||||||
|
- Enable or disable the template render engine. This is useful when
|
||||||
|
dealing with remote data that may have jinja content in the comment
|
||||||
|
sections but is not in need of rendering.
|
||||||
|
choices:
|
||||||
|
- True
|
||||||
|
- False
|
||||||
|
default: true
|
||||||
author: Kevin Carter
|
author: Kevin Carter
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user