Ensure systemd services are running when doing --tags=start
Fixes #129 (Github Issue).
Unfortunately, we rely on `service_facts`, which is only available
in Ansible >= 2.5.
There's little reason to stick to an old version such as Ansible 2.4:
- some time has passed since we've raised version requirements - it's
time to move into the future (a little bit)
- we've recently (in 82b4640072
) improved the way one can run
Ansible in a Docker container
From now on, Ansible >= 2.5 is required.
This commit is contained in:
@ -15,4 +15,27 @@
|
||||
name: "{{ item }}"
|
||||
enabled: yes
|
||||
state: started
|
||||
with_items: "{{ matrix_systemd_services_list }}"
|
||||
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 `systemctl -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'"
|
||||
|
Reference in New Issue
Block a user