diff --git a/lib/ansible/utils/template.py b/lib/ansible/utils/template.py index 751be225f3a..695524389cf 100644 --- a/lib/ansible/utils/template.py +++ b/lib/ansible/utils/template.py @@ -432,10 +432,13 @@ def template_from_file(basedir, path, vars): def my_lookup(*args, **kwargs): kwargs['vars'] = vars return lookup(*args, basedir=basedir, **kwargs) + def my_finalize(thing): + return thing if thing is not None else '' environment = jinja2.Environment(loader=loader, trim_blocks=True, extensions=_get_extensions()) environment.filters.update(_get_filters()) environment.globals['lookup'] = my_lookup + environment.globals['finalize'] = my_finalize if fail_on_undefined: environment.undefined = StrictUndefined @@ -520,7 +523,11 @@ def template_from_string(basedir, data, vars, fail_on_undefined=False): try: if type(data) == str: data = unicode(data, 'utf-8') - environment = jinja2.Environment(trim_blocks=True, undefined=StrictUndefined, extensions=_get_extensions()) + + def my_finalize(thing): + return thing if thing is not None else '' + + environment = jinja2.Environment(trim_blocks=True, undefined=StrictUndefined, extensions=_get_extensions(), finalize=my_finalize) environment.filters.update(_get_filters()) environment.template_class = J2Template @@ -547,6 +554,7 @@ def template_from_string(basedir, data, vars, fail_on_undefined=False): return lookup(*args, basedir=basedir, **kwargs) t.globals['lookup'] = my_lookup + t.globals['finalize'] = my_finalize jvars =_jinja2_vars(basedir, vars, t.globals, fail_on_undefined) new_context = t.new_context(jvars, shared=True) rf = t.root_render_func(new_context)