diff --git a/lib/ansible/utils/template.py b/lib/ansible/utils/template.py index 77a21df15b..4cedc89981 100644 --- a/lib/ansible/utils/template.py +++ b/lib/ansible/utils/template.py @@ -20,6 +20,7 @@ import re import codecs import jinja2 from jinja2.runtime import StrictUndefined +from jinja2.exceptions import TemplateSyntaxError import yaml import json from ansible import errors @@ -448,7 +449,15 @@ def template_from_file(basedir, path, vars): setattr(environment,key.strip(),ast.literal_eval(val.strip())) environment.template_class = J2Template - t = environment.from_string(data) + try: + t = environment.from_string(data) + except TemplateSyntaxError, e: + # Throw an exception which includes a more user friendly error message + values = {'name': realpath, 'lineno': e.lineno, 'error': str(e)} + msg = 'file: %(name)s, line number: %(lineno)s, error: %(error)s' % \ + values + error = errors.AnsibleError(msg) + raise error vars = vars.copy() try: template_uid = pwd.getpwuid(os.stat(realpath).st_uid).pw_name