diff --git a/zuul/launcher/ansiblelaunchserver.py b/zuul/launcher/ansiblelaunchserver.py
index ea0aa4e..40d0d5a 100644
--- a/zuul/launcher/ansiblelaunchserver.py
+++ b/zuul/launcher/ansiblelaunchserver.py
@@ -68,11 +68,16 @@
     MASS_DO = 101
 
     def sendMassDo(self, functions):
-        data = b'\x00'.join([gear.convert_to_bytes(x) for x in functions])
+        names = [gear.convert_to_bytes(x) for x in functions]
+        data = b'\x00'.join(names)
+        new_function_dict = {}
+        for name in names:
+            new_function_dict[name] = gear.FunctionRecord(name)
         self.broadcast_lock.acquire()
         try:
             p = gear.Packet(gear.constants.REQ, self.MASS_DO, data)
             self.broadcast(p)
+            self.functions = new_function_dict
         finally:
             self.broadcast_lock.release()
 
@@ -601,11 +606,6 @@
             self.username = config.get('launcher', 'username')
         else:
             self.username = 'zuul'
-        if self.config.has_option('launcher', 'register_labels'):
-            self.register_labels = config.getboolean('launcher',
-                                                     'register_labels')
-        else:
-            self.register_labels = True
         self.callback_dir = callback_dir
         self.library_dir = library_dir
         self.options = options
@@ -745,9 +745,8 @@
             if not matching_labels:
                 return ret
         ret.add('build:%s' % (job['name'],))
-        if self.register_labels:
-            for label in matching_labels:
-                ret.add('build:%s:%s' % (job['name'], label))
+        for label in matching_labels:
+            ret.add('build:%s:%s' % (job['name'], label))
         return ret
 
     def register(self):
@@ -1188,8 +1187,8 @@
             error_block = []
             variables = []
 
-            shellargs = "ssh-keyscan %s > %s" % (
-                self.host, jobdir.known_hosts)
+            shellargs = "ssh-keyscan {{ ansible_host }} > %s" % (
+                jobdir.known_hosts)
             pre_tasks.append(dict(shell=shellargs,
                              delegate_to='127.0.0.1'))
 
@@ -1269,6 +1268,9 @@
             config.write('gathering = explicit\n')
             config.write('callback_plugins = %s\n' % self.callback_dir)
             config.write('library = %s\n' % self.library_dir)
+            # bump the timeout because busy nodes may take more than
+            # 10s to respond
+            config.write('timeout = 30\n')
 
             config.write('[ssh_connection]\n')
             ssh_args = "-o ControlMaster=auto -o ControlPersist=60s " \
