--- - name: Ensure systemd reloaded service: daemon_reload: yes - name: Ensure Matrix services stopped service: name: "{{ item }}" state: stopped with_items: "{{ matrix_systemd_services_list }}" - name: Ensure Matrix services started service: name: "{{ item }}" enabled: yes state: started with_items: "{{ matrix_systemd_services_list }}" # If we check service state immediately, we may succeed, # because it takes some time for the service to attempt to start and actually fail. # # Waiting too long (30s) may not work for a similar reason, # as we may run into systemd's automatic restart logic retrying the service. - name: Wait a bit, so that services can start (or fail) wait_for: timeout: 5 delegate_to: 127.0.0.1 become: false - name: Populate service facts service_facts: - name: Fail if service isn't detected to be running fail: msg: >- {{ item }} was not detected to be running. It's possible that there's a configuration problem or another service on your server interferes with it (uses the same ports, etc.). Try running `systemctl status {{ item }}` and `journalctl -fu {{ item }}` on the server to investigate. with_items: "{{ matrix_systemd_services_list }}" when: "ansible_facts.services[item + '.service']|default(none) is none or ansible_facts.services[item + '.service'].state != 'running'"