diff --git a/tools/kolla-libvirt-guests.service b/tools/kolla-libvirt-guests.service
new file mode 100644
index 0000000000000000000000000000000000000000..b43910ce5ea89ade9058b2ee8b6d933b24d80cff
--- /dev/null
+++ b/tools/kolla-libvirt-guests.service
@@ -0,0 +1,19 @@
+[Unit]
+Description=Manage libvirt guests in kolla safely
+After=docker.service
+After=systemd-machined.service
+After=virt-guest-shutdown.target
+Requires=docker.service
+Requires=virt-guest-shutdown.target
+
+[Install]
+WantedBy=multi-user.target
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+TimeoutStopSec=610
+ExecStart=-/usr/bin/docker exec nova_libvirt /bin/rm -f /var/lib/libvirt/libvirt-guests
+ExecStart=-/usr/bin/docker start nova_compute
+ExecStop=/usr/bin/docker stop nova_compute
+ExecStop=/usr/bin/docker exec nova_libvirt /bin/sh -x /usr/libexec/libvirt-guests.sh shutdown
diff --git a/tools/setup-compute-libvirt.yml b/tools/setup-compute-libvirt.yml
new file mode 100644
index 0000000000000000000000000000000000000000..8c3f46a54b35ffc0ecb82cee8668b2f1588467eb
--- /dev/null
+++ b/tools/setup-compute-libvirt.yml
@@ -0,0 +1,24 @@
+# This playbook modifies the system shutdown sequence to ensure that
+# nova-compute is shutdown safely, including guests, when used in
+# conjunction with systemd-machined and libvirt.
+---
+- name: Set up compute libvirts to shutdown guests safely
+  hosts: compute
+  become: true
+  vars:
+    systemd_artifacts:
+      - kolla-libvirt-guests.service
+      - virt-guest-shutdown.target
+  tasks:
+    - name: Install systemd artifacts
+      copy:
+        src: "{{ item }}"
+        dest: "/usr/lib/systemd/system/{{ item }}"
+      with_items: "{{ systemd_artifacts }}"
+
+    - name: Enable/start systemd artifacts
+      systemd:
+        enabled: yes
+        state: started
+        name: "{{ item }}"
+      with_items: "{{ systemd_artifacts }}"
diff --git a/tools/virt-guest-shutdown.target b/tools/virt-guest-shutdown.target
new file mode 100644
index 0000000000000000000000000000000000000000..7510cfec3533f74a8f783377be27a3da0fb3d71a
--- /dev/null
+++ b/tools/virt-guest-shutdown.target
@@ -0,0 +1,5 @@
+[Unit]
+Description=Coordination target for machined controlled guests
+
+[Install]
+WantedBy=multi-user.target