diff --git a/playbooks/time-region-ntp.yml b/playbooks/time-region-ntp.yml index bcedc3c..62312e5 100644 --- a/playbooks/time-region-ntp.yml +++ b/playbooks/time-region-ntp.yml @@ -9,96 +9,116 @@ tasks: # ---------------------------------------------------------- - # TIMEZONE (Works on Ubuntu LXC + Rocky) + # TIMEZONE (LXC + Ubuntu + Rocky safe) # ---------------------------------------------------------- - - name: Set timezone (manual method for compatibility) - block: - - name: Copy timezone file - ansible.builtin.copy: - src: "/usr/share/zoneinfo/{{ timezone_region }}" - dest: /etc/localtime - remote_src: yes + - name: Copy timezone file + ansible.builtin.copy: + src: "/usr/share/zoneinfo/{{ timezone_region }}" + dest: /etc/localtime + remote_src: yes + register: tz_copy - - name: Write /etc/timezone - ansible.builtin.copy: - dest: /etc/timezone - content: "{{ timezone_region }}\n" - register: tz_change + - name: Write /etc/timezone + ansible.builtin.copy: + dest: /etc/timezone + content: "{{ timezone_region }}\n" + register: tz_write - name: Debug timezone set ansible.builtin.debug: msg: "Timezone set to {{ timezone_region }} successfully." - when: tz_change.changed + when: tz_copy.changed or tz_write.changed # ---------------------------------------------------------- # UBUNTU NTP (systemd-timesyncd) # ---------------------------------------------------------- - name: Configure NTP for Ubuntu (systemd-timesyncd) - block: - - name: Create timesyncd.conf - ansible.builtin.copy: - dest: /etc/systemd/timesyncd.conf - content: | - [Time] - NTP={{ ntp_server }} - FallbackNTP=1.in.pool.ntp.org 2.in.pool.ntp.org - register: ubuntu_ntp - - - name: Restart timesyncd - ansible.builtin.systemd: - name: systemd-timesyncd - state: restarted - enabled: yes - - - name: Debug Ubuntu NTP - ansible.builtin.debug: - msg: "Ubuntu NTP configured with {{ ntp_server }}" - when: ubuntu_ntp.changed - + ansible.builtin.copy: + dest: /etc/systemd/timesyncd.conf + content: | + [Time] + NTP={{ ntp_server }} + FallbackNTP=1.in.pool.ntp.org 2.in.pool.ntp.org + register: ubuntu_ntp when: ansible_facts['os_family'] == "Debian" + - name: Restart timesyncd (Ubuntu) + ansible.builtin.systemd: + name: systemd-timesyncd + state: restarted + enabled: yes + when: ansible_facts['os_family'] == "Debian" + + - name: Debug Ubuntu NTP + ansible.builtin.debug: + msg: "Ubuntu NTP configured with {{ ntp_server }}" + when: + - ansible_facts['os_family'] == "Debian" + - ubuntu_ntp.changed + # ---------------------------------------------------------- # ROCKY LINUX NTP (chrony) # ---------------------------------------------------------- - - name: Configure NTP for Rocky Linux (chrony) - block: - - name: Install chrony - ansible.builtin.package: - name: chrony - state: present - - - name: Backup chrony.conf - ansible.builtin.copy: - src: /etc/chrony.conf - dest: /etc/chrony.conf.bak - remote_src: yes - - - name: Remove existing server lines - ansible.builtin.replace: - path: /etc/chrony.conf - regexp: '^server .*' - replace: '' - register: removed_servers - - - name: Add new time server entry - ansible.builtin.lineinfile: - path: /etc/chrony.conf - line: "server {{ ntp_server }} iburst" - - - name: Restart chronyd - ansible.builtin.systemd: - name: chronyd - state: restarted - enabled: yes - - - name: Debug Rocky NTP - ansible.builtin.debug: - msg: "Rocky Linux NTP configured with {{ ntp_server }}" - + - name: Install chrony + ansible.builtin.package: + name: chrony + state: present when: ansible_facts['os_family'] == "RedHat" + - name: Backup chrony.conf + ansible.builtin.copy: + src: /etc/chrony.conf + dest: /etc/chrony.conf.bak + remote_src: yes + when: ansible_facts['os_family'] == "RedHat" + + - name: Remove existing server lines + ansible.builtin.replace: + path: /etc/chrony.conf + regexp: '^server .*' + replace: '' + register: rocky_cleanup + when: ansible_facts['os_family'] == "RedHat" + + - name: Add new NTP server + ansible.builtin.lineinfile: + path: /etc/chrony.conf + line: "server {{ ntp_server }} iburst" + register: rocky_add + when: ansible_facts['os_family'] == "RedHat" + + - name: Restart chronyd + ansible.builtin.systemd: + name: chronyd + state: restarted + enabled: yes + when: ansible_facts['os_family'] == "RedHat" + + - name: Debug Rocky NTP + ansible.builtin.debug: + msg: "Rocky Linux NTP configured with {{ ntp_server }}" + when: + - ansible_facts['os_family'] == "RedHat" + - rocky_add.changed or rocky_cleanup.changed + # ---------------------------------------------------------- - # Final output + # PRINT TIME & NTP SOURCE + # ---------------------------------------------------------- + - name: Read timedatectl status + ansible.builtin.command: timedatectl status + register: timedate_output + + - name: Print server time + NTP source + ansible.builtin.debug: + msg: | + === {{ inventory_hostname }} === + Current Time: {{ timedate_output.stdout | regex_search('Local time:\\s*(.*)', '\\1') }} + Timezone: {{ timedate_output.stdout | regex_search('Time zone:\\s*(.*)', '\\1') }} + NTP Source: {{ timedate_output.stdout | regex_search('System clock synchronized:\\s*(.*)', '\\1') }} + NTP Server: {{ timedate_output.stdout | regex_search('NTP service:\\s*(.*)', '\\1') }} + + # ---------------------------------------------------------- + # FINAL SUMMARY # ---------------------------------------------------------- - name: Final summary ansible.builtin.debug: