---
- name: Template the system service
  ansible.builtin.template:
    src: healthcheck@.service.j2
    dest: /etc/systemd/system/healthcheck@.service
    mode: "0644"
  become: true
- name: Copy the system timer
  ansible.builtin.copy:
    src: healthcheck@.timer
    dest: /etc/systemd/system/healthcheck@.timer
    mode: "0644"
  become: true

- name: Get all healthcheck timers
  ansible.builtin.shell:  # noqa: command-instead-of-module
    executable: /usr/bin/bash
    cmd: "set -o pipefail && systemctl list-timers 'healthcheck@*' --all --output=json | jq -r '.[].unit'"
  register: systemd_timers_result
  changed_when: false

- name: Generate systemd timer names
  ansible.builtin.set_fact:
    healthcheck_systemd_timers: "{{ healthcheck_svc.checks | list_prefix_suffix('healthcheck@', '.timer') }}"

- name: Disable unused system timers
  ansible.builtin.systemd_service:
    name: "{{ item }}"
    state: stopped
    enabled: false
  loop: "{{ systemd_timers_result.stdout_lines | difference(healthcheck_systemd_timers) }}"
  become: true

- name: Enable the system timer
  ansible.builtin.systemd_service:
    name: "{{ item }}"
    state: started
    enabled: true
    daemon_reload: true
  loop: "{{ healthcheck_systemd_timers }}"
  become: true