---
- block:
    - name: Check for a running host NTP daemon  # noqa command-instead-of-module
      vars:
        prechecks_host_ntp_daemons:
          - chrony
          - chronyd
          - ntp
          - ntpd
          - systemd-timesyncd
      become: true
      command:
        cmd: "systemctl is-active {{ prechecks_host_ntp_daemons | join(' ') }}"
      register: systemctl_is_active
      changed_when: false
      failed_when: false
      check_mode: false

    - name: Fail if a host NTP daemon is not running
      fail:
        msg: >-
          No host NTP daemon is running.
          Please install and configure a host NTP daemon.
          Alternatively, set 'prechecks_enable_host_ntp_checks' to 'false' to
          disable this check if not using one of the following NTP daemons:
          chrony, ntpd, systemd-timesyncd.
      when:
        - systemctl_is_active.rc != 0

    - name: Checking timedatectl status
      become: true
      command: timedatectl status
      register: timedatectl_status
      changed_when: false
      check_mode: false

    - name: Fail if the clock is not synchronized
      fail:
        msg: >-
          timedatectl sees the system clock as unsynchronized.
          Please wait for synchronization.
          Alternatively, set 'prechecks_enable_host_ntp_checks' to 'false' to
          disable this check if your NTP daemon is not recognised by
          'timedatectl status'.
      when:
        - "'synchronized: yes' not in timedatectl_status.stdout"
  when: prechecks_enable_host_ntp_checks | bool
