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