diff --git a/lib/ansible/utils.py b/lib/ansible/utils.py index 3cbf0d42f2..008d1030d3 100644 --- a/lib/ansible/utils.py +++ b/lib/ansible/utils.py @@ -36,6 +36,8 @@ import stat import termios import tty from multiprocessing import Manager +import datetime +import pwd VERBOSITY=0 @@ -389,14 +391,27 @@ def template(basedir, text, vars): def template_from_file(basedir, path, vars): ''' run a file through the templating engine ''' + realpath = path_dwim(basedir, path) environment = jinja2.Environment(loader=jinja2.FileSystemLoader(basedir), trim_blocks=True) environment.filters['to_json'] = json.dumps environment.filters['from_json'] = json.loads environment.filters['to_yaml'] = yaml.dump environment.filters['from_yaml'] = yaml.load - data = codecs.open(path_dwim(basedir, path), encoding="utf8").read() + data = codecs.open(realpath, encoding="utf8").read() t = environment.from_string(data) vars = vars.copy() + try: + template_uid = pwd.getpwuid(os.stat(realpath).st_uid).pw_name + except: + template_uid = os.stat(realpath).st_uid + vars['template_host'] = os.uname()[1] + vars['template_path'] = realpath + vars['template_mtime'] = datetime.datetime.fromtimestamp(os.path.getmtime(realpath)) + vars['template_uid'] = template_uid + vars['ansible_managed'] = "%s on %s, modified %s by %s" % ( + vars['template_path'], vars['template_host'], vars['template_mtime'], + vars['template_uid'] ) + res = t.render(vars) if data.endswith('\n') and not res.endswith('\n'): res = res + '\n'