---
- name: Ensure NTP package
  package:
    name:
      - "{{ ntp_package }}"
    state: present

- name: Disable systemd-timesyncd
  service:
    name: systemd-timesyncd.service
    enabled: false
    state: stopped
  failed_when: false

- name: Set fact NTP settings
  set_fact:
    ntp_config_file: >-
      {% if ntp_package == "ntp" -%}
      /etc/ntp.conf
      {%- elif ansible_os_family in ['RedHat', 'Suse'] -%}
      /etc/chrony.conf
      {%- else -%}
      /etc/chrony/chrony.conf
      {%- endif -%}
    ntp_service_name: >-
      {% if ntp_package == "chrony" -%}
      chronyd
      {%- elif ansible_os_family == 'RedHat' -%}
      ntpd
      {%- else -%}
      ntp
      {%- endif %}

- name: Generate NTP configuration file.
  template:
    src: "{{ ntp_config_file | basename }}.j2"
    dest: "{{ ntp_config_file }}"
    mode: 0644
  notify: Preinstall | restart ntp
  when:
    - ntp_manage_config

- name: Stop the NTP Deamon For Sync Immediately   # `ntpd -gq`,`chronyd -q` requires the ntp daemon stop
  service:
    name: "{{ ntp_service_name }}"
    state: stopped
  when:
    - ntp_force_sync_immediately

- name: Force Sync NTP Immediately
  command: >-
      timeout -k 60s 60s
      {% if ntp_package == "ntp" -%}
      ntpd -gq
      {%- else -%}
      chronyd -q
      {%- endif -%}
  when:
    - ntp_force_sync_immediately

- name: Ensure NTP service is started and enabled
  service:
    name: "{{ ntp_service_name }}"
    state: started
    enabled: true

- name: Ensure tzdata package
  package:
    name:
      - tzdata
    state: present
  when:
    - ntp_timezone

- name: Set timezone
  timezone:
    name: "{{ ntp_timezone }}"
  when:
    - ntp_timezone