diff --git a/lib/ansible/runner.py b/lib/ansible/runner.py index 730d8d7e419..3ebe089f503 100644 --- a/lib/ansible/runner.py +++ b/lib/ansible/runner.py @@ -554,10 +554,9 @@ class Runner(object): copy_module = self._transfer_module(conn, tmp, 'copy') # template the source data locally - source_data = codecs.open(utils.path_dwim(self.basedir, source), encoding="utf8").read() - resultant = '' try: - resultant = utils.template(source_data, inject, self.setup_cache, no_engine=False) + resultant = utils.template_from_file(utils.path_dwim(self.basedir, source), + inject, self.setup_cache, no_engine=False) except Exception, e: return (host, False, dict(failed=True, msg=str(e)), '') xfered = self._transfer_str(conn, tmp, 'source', resultant) diff --git a/lib/ansible/utils.py b/lib/ansible/utils.py index 29b164de910..c6a7346fce1 100644 --- a/lib/ansible/utils.py +++ b/lib/ansible/utils.py @@ -257,8 +257,8 @@ def varReplace(raw, vars): def template(text, vars, setup_cache, no_engine=True): ''' run a text buffer through the templating engine ''' vars = vars.copy() - text = varReplace(unicode(text), vars) vars['hostvars'] = setup_cache + text = varReplace(unicode(text), vars) if no_engine: # used when processing include: directives so that Jinja is evaluated # in a later context when more variables are available @@ -273,7 +273,7 @@ def template(text, vars, setup_cache, no_engine=True): def double_template(text, vars, setup_cache): return template(template(text, vars, setup_cache), vars, setup_cache) -def template_from_file(path, vars, setup_cache, no_engine=False): +def template_from_file(path, vars, setup_cache, no_engine=True): ''' run a file through the templating engine ''' data = codecs.open(path, encoding="utf8").read() return template(data, vars, setup_cache, no_engine=no_engine)