diff --git a/roles/run-evacuate-hook/tasks/main.yaml b/roles/run-evacuate-hook/tasks/main.yaml index 9d6d7c59f3..ba5c998793 100644 --- a/roles/run-evacuate-hook/tasks/main.yaml +++ b/roles/run-evacuate-hook/tasks/main.yaml @@ -48,23 +48,30 @@ state: destroyed with_items: "{{ subnode_vms.list_vms }}" -- name: Stop libvirtd on "{{ inventory_hostname }}" - become: true - systemd: - name: "{{ item }}" - state: stopped - enabled: no - with_items: - - libvirtd.service - - libvirtd.socket - - libvirtd-admin.socket - - libvirtd-ro.socket - - virtlogd.service - - virtlogd-admin.socket - - virtlogd.socket - - virtlockd.service - - virtlockd-admin.socket - - virtlockd.socket +- name: Stop libvirt services on "{{ inventory_hostname }}" + include_tasks: manage_libvirt_service.yaml + vars: + service_name: "{{ item.name }}" + service_state: stopped + service_enabled: "no" + service_units: "{{ item.units }}" + loop: + - name: libvirtd + units: + - libvirtd.service + - libvirtd.socket + - libvirtd-admin.socket + - libvirtd-ro.socket + - name: virtlogd + units: + - virtlogd.service + - virtlogd-admin.socket + - virtlogd.socket + - name: virtlockd + units: + - virtlockd.service + - virtlockd-admin.socket + - virtlockd.socket - name: Run negative evacuate tests become: true @@ -73,23 +80,30 @@ environment: CONTROLLER_HOSTNAME: "{{ hostvars['controller']['ansible_hostname'] }}" -- name: Start libvirtd on "{{ inventory_hostname }}" - become: true - systemd: - name: "{{ item }}" - state: started - enabled: yes - with_items: - - libvirtd.service - - libvirtd.socket - - libvirtd-admin.socket - - libvirtd-ro.socket - - virtlogd.service - - virtlogd-admin.socket - - virtlogd.socket - - virtlockd.service - - virtlockd-admin.socket - - virtlockd.socket +- name: Start libvirt services on "{{ inventory_hostname }}" + include_tasks: manage_libvirt_service.yaml + vars: + service_name: "{{ item.name }}" + service_state: started + service_enabled: "yes" + service_units: "{{ item.units }}" + loop: + - name: libvirtd + units: + - libvirtd.service + - libvirtd.socket + - libvirtd-admin.socket + - libvirtd-ro.socket + - name: virtlogd + units: + - virtlogd.service + - virtlogd-admin.socket + - virtlogd.socket + - name: virtlockd + units: + - virtlockd.service + - virtlockd-admin.socket + - virtlockd.socket - name: Run evacuate tests become: true diff --git a/roles/run-evacuate-hook/tasks/manage_libvirt_service.yaml b/roles/run-evacuate-hook/tasks/manage_libvirt_service.yaml new file mode 100644 index 0000000000..7d11ff978d --- /dev/null +++ b/roles/run-evacuate-hook/tasks/manage_libvirt_service.yaml @@ -0,0 +1,22 @@ +# Manage a libvirt service (stop/start) only if it is installed. +# Parameters: +# service_name: base name of the service (e.g. "libvirtd", "virtlogd", "virtlockd") +# service_state: "stopped" or "started" +# service_enabled: "yes" or "no" +# service_units: list of unit names to manage + +- name: "Check if {{ service_name }} is installed" + become: true + command: systemctl list-unit-files {{ service_name }}.service + register: _service_check + ignore_errors: true + changed_when: false + +- name: "Manage {{ service_name }} units" + become: true + systemd: + name: "{{ item }}" + state: "{{ service_state }}" + enabled: "{{ service_enabled }}" + with_items: "{{ service_units }}" + when: _service_check is succeeded