74 lines
2.4 KiB
YAML
74 lines
2.4 KiB
YAML
---
|
|
# On Linux `multica daemon autostart enable` writes a systemd *user* unit.
|
|
# A user unit does not start at boot unless the user lingers — without this the
|
|
# daemon only comes back when someone logs in, which on a headless agent host
|
|
# is never.
|
|
- name: Daemon | Enable systemd lingering for the daemon user
|
|
ansible.builtin.command:
|
|
argv: ["loginctl", "enable-linger", "{{ multica_user }}"]
|
|
creates: "/var/lib/systemd/linger/{{ multica_user }}"
|
|
become: true
|
|
when:
|
|
- multica_enable_linger | bool
|
|
- multica_autostart | bool
|
|
|
|
- name: Daemon | Wait for the user's runtime directory
|
|
ansible.builtin.wait_for:
|
|
path: "/run/user/{{ _multica_uid }}"
|
|
state: present
|
|
timeout: 30
|
|
become: true
|
|
when:
|
|
- multica_enable_linger | bool
|
|
- multica_autostart | bool
|
|
|
|
- name: Daemon | Read the current autostart registration
|
|
ansible.builtin.command:
|
|
argv: "{{ _multica_cmd + ['daemon', 'autostart', 'status'] }}"
|
|
become: true
|
|
become_user: "{{ multica_user }}"
|
|
environment: "{{ _multica_user_env }}"
|
|
register: _multica_autostart_status
|
|
changed_when: false
|
|
failed_when: false
|
|
check_mode: false
|
|
|
|
- name: Daemon | Register boot autostart
|
|
ansible.builtin.command:
|
|
argv: "{{ _multica_cmd + ['daemon', 'autostart', 'enable'] }}"
|
|
become: true
|
|
become_user: "{{ multica_user }}"
|
|
environment: "{{ _multica_user_env }}"
|
|
when:
|
|
- multica_autostart | bool
|
|
- _multica_autostart_status.rc != 0
|
|
or 'enabled' not in (_multica_autostart_status.stdout | default('') | lower)
|
|
changed_when: true
|
|
|
|
- name: Daemon | Read daemon status
|
|
ansible.builtin.command:
|
|
argv: "{{ _multica_cmd + ['daemon', 'status', '--output', 'json'] }}"
|
|
become: true
|
|
become_user: "{{ multica_user }}"
|
|
environment: "{{ _multica_user_env }}"
|
|
register: _multica_daemon_status
|
|
changed_when: false
|
|
failed_when: false
|
|
check_mode: false
|
|
|
|
- name: Daemon | Start it if it is not already running
|
|
ansible.builtin.command:
|
|
argv: "{{ _multica_cmd + ['daemon', 'start'] }}"
|
|
become: true
|
|
become_user: "{{ multica_user }}"
|
|
environment: "{{ _multica_user_env }}"
|
|
when: >-
|
|
_multica_daemon_status.rc != 0
|
|
or ((_multica_daemon_status.stdout | from_json).status | default('')) != 'running'
|
|
changed_when: true
|
|
|
|
# Anything that changed the binary, the config or the credentials restarts the
|
|
# daemon here, before verification reads its state back.
|
|
- name: Daemon | Flush handlers
|
|
ansible.builtin.meta: flush_handlers
|