diff --git a/lib/ansible/runner.py b/lib/ansible/runner.py
index 7ce2275a7b9..dd7b66af275 100755
--- a/lib/ansible/runner.py
+++ b/lib/ansible/runner.py
@@ -368,7 +368,11 @@ class Runner(object):
         dest   = options.get('dest', None)
         if source is None or dest is None:
             return (host, True, dict(failed=True, msg="src and dest are required"), '')
-        
+
+        # apply templating to source argument
+        inject = self.setup_cache.get(conn.host,{})
+        source = utils.template(source, inject)
+
         # transfer the file to a remote tmp location
         tmp_src = tmp + source.split('/')[-1]
         conn.put_file(utils.path_dwim(self.basedir, source), tmp_src)
@@ -459,6 +463,10 @@ class Runner(object):
             else:
                 metadata = '~/.ansible/setup'
 
+        # apply templating to source argument
+        inject = self.setup_cache.get(conn.host,{})
+        source = utils.template(source, inject)
+
         # first copy the source template over
         temppath = tmp + os.path.split(source)[-1]
         conn.put_file(utils.path_dwim(self.basedir, source), temppath)