Ansible launcher: move ftp/scp staging out of ansible dir

So that we can upload the entire ansible directory without extra
copies of the locally staged scp and ftp content (as well as the
ftp script which contains a password), stage ftp and scp local
content outside of the jobdir's ansible directory.

Change-Id: Ia03e60491055563ed31230a35532488dd296163a
diff --git a/zuul/launcher/ansiblelaunchserver.py b/zuul/launcher/ansiblelaunchserver.py
index 0a92327..bed099c 100644
--- a/zuul/launcher/ansiblelaunchserver.py
+++ b/zuul/launcher/ansiblelaunchserver.py
@@ -101,6 +101,8 @@
         os.makedirs(self.script_root)
         self.logs = os.path.join(self.ansible_root, 'logs')
         os.makedirs(self.logs)
+        self.staging_root = os.path.join(self.root, 'staging')
+        os.makedirs(self.staging_root)
 
     def __enter__(self):
         return self
@@ -861,7 +863,7 @@
                 rsync_opts = self._getRsyncOptions(scpfile['source'],
                                                    parameters)
 
-            scproot = tempfile.mkdtemp(dir=jobdir.ansible_root)
+            scproot = tempfile.mkdtemp(dir=jobdir.staging_root)
             os.chmod(scproot, 0o755)
             syncargs = dict(src=src,
                             dest=scproot,
@@ -925,7 +927,7 @@
             raise Exception("Undefined FTP site: %s" % site)
         site = self.sites[site]
 
-        ftproot = tempfile.mkdtemp(dir=jobdir.ansible_root)
+        ftproot = tempfile.mkdtemp(dir=jobdir.staging_root)
         ftpcontent = os.path.join(ftproot, 'content')
         os.makedirs(ftpcontent)
         ftpscript = os.path.join(ftproot, 'script')