diff --git a/playbooks/roles/base-server/tasks/Debian.yaml b/playbooks/roles/base-server/tasks/Debian.yaml
index c74c71bef8..342c3577d4 100644
--- a/playbooks/roles/base-server/tasks/Debian.yaml
+++ b/playbooks/roles/base-server/tasks/Debian.yaml
@@ -41,8 +41,12 @@
       - popularity-contest
       - lxd
       - lxd-client
+      - cloud-init
     state: absent
 
+- name: Get rid of extra depends
+  command: apt-get autoremove -y
+
 - name: Configure file limits
   copy:
     mode: 0644
diff --git a/playbooks/roles/set-hostname/README.rst b/playbooks/roles/set-hostname/README.rst
index 5fc2cdca20..957763ea43 100644
--- a/playbooks/roles/set-hostname/README.rst
+++ b/playbooks/roles/set-hostname/README.rst
@@ -1,7 +1,6 @@
 Set hostname
 
-Remove ``cloud-init`` and statically set the hostname, hosts and
-mailname
+Statically set the hostname, hosts and mailname
 
 **Role Variables**
 
diff --git a/playbooks/roles/set-hostname/tasks/main.yml b/playbooks/roles/set-hostname/tasks/main.yml
index f7a82a514c..bf27c1f3fb 100644
--- a/playbooks/roles/set-hostname/tasks/main.yml
+++ b/playbooks/roles/set-hostname/tasks/main.yml
@@ -1,11 +1,11 @@
----
-- name: Remove cloud-init
-  package:
-    name: cloud-init
-    state: absent
-
-- name: Get rid of cloud-init depends
-  command: apt-get autoremove -y
+# Setting hostname with systemd apparently
+# requires dbus. We have this on our cloud-provided
+# nodes, but not on the minimal ones we get from
+# nodepool.
+- name: ensure dbus for working hostnamectl
+  apt:
+    name: dbus
+    state: present
 
 # Set hostname and /etc/hosts
 # Inspired by:
diff --git a/playbooks/set-hostnames.yaml b/playbooks/set-hostnames.yaml
index 4c608c5c68..4134d2b718 100644
--- a/playbooks/set-hostnames.yaml
+++ b/playbooks/set-hostnames.yaml
@@ -1,4 +1,4 @@
-- hosts: "{{ target }}"
+- hosts: "!disabled"
   gather_facts: false
   user: root
   roles:
diff --git a/playbooks/zuul/run-base.yaml b/playbooks/zuul/run-base.yaml
index 9d011f070b..49dcbe7547 100644
--- a/playbooks/zuul/run-base.yaml
+++ b/playbooks/zuul/run-base.yaml
@@ -90,6 +90,8 @@
         dest: /home/zuul/src/opendev.org/opendev/system-config/playbooks/host_vars/bridge.openstack.org.yaml
       become: true
 
+    - name: Set hostname on host
+      command: ansible-playbook -v /home/zuul/src/opendev.org/opendev/system-config/playbooks/set-hostnames.yaml
     - name: Run base.yaml
       command: ansible-playbook -v /home/zuul/src/opendev.org/opendev/system-config/playbooks/base.yaml
     - name: Run bridge service playbook