diff --git a/roles/timesync_setup/defaults/main.yml b/roles/timesync_setup/defaults/main.yml new file mode 100644 index 0000000..30c1d8e --- /dev/null +++ b/roles/timesync_setup/defaults/main.yml @@ -0,0 +1,7 @@ +--- +timesyncd_setup_timezone: Europe/Berlin +timesyncd_setup_ntp_servers: + - rustime02.rus.uni-stuttgart.de + - ntp2.fau.de + - rustime01.rus.uni-stuttgart.de + - ntp1.fau.de diff --git a/roles/timesync_setup/handlers/main.yml b/roles/timesync_setup/handlers/main.yml new file mode 100644 index 0000000..e1aab14 --- /dev/null +++ b/roles/timesync_setup/handlers/main.yml @@ -0,0 +1,35 @@ +--- +# handlers file for systemd-timesyncd +- name: reload ntp + become: true + listen: reload_ntp + ansible.builtin.shell: + timedatectl set-ntp false || true; + timedatectl set-ntp true || true; + +- name: reload timesyncd + become: true + listen: reload_timesyncd + ansible.builtin.service: + name: systemd-timesyncd + state: reloaded + +- name: restart timesyncd + become: true + listen: restart_timesyncd + ansible.builtin.service: + name: systemd-timesyncd + state: restarted + +- name: reconfigure timezone + become: true + listen: reconfigure_timezone + ansible.builtin.shell: + DEBIAN_FRONTEND=noninteractive \ + dpkg-reconfigure --frontend noninteractive tzdata + +- name: sync rtc + become: true + listen: sync_rtc + ansible.builtin.command: + timedatectl set-local-rtc 0 diff --git a/roles/timesync_setup/tasks/main.yml b/roles/timesync_setup/tasks/main.yml new file mode 100644 index 0000000..bdbe886 --- /dev/null +++ b/roles/timesync_setup/tasks/main.yml @@ -0,0 +1,65 @@ +--- +- name: set timezone in /etc/localtime + become: true + ansible.builtin.file: + src: /usr/share/zoneinfo/{{ timesyncd_setup_timezone }} + dest: /etc/localtime + state: link + force: true + notify: + - reconfigure_timezone + - reload_ntp + +- name: set timezone in /etc/timezone + become: true + ansible.builtin.lineinfile: + state: present + dest: /etc/timezone + regexp: '.*' + line: '{{ timesyncd_setup_timezone }}' + insertbefore: EOF + create: true + mode: '0644' + notify: + - reconfigure_timezone + - reload_ntp + +- name: set timezone via systemd + become: true + ansible.builtin.command: + timedatectl set-timezone {{ timesyncd_setup_timezone }} + +- name: set ntp config in /etc/systemd/timesyncd.conf + become: true + community.general.ini_file: + path: /etc/systemd/timesyncd.conf + section: Time + option: NTP + value: '{{ timesyncd_setup_ntp_servers | join(" ") }}' + backup: true + notify: + - reload_ntp + - restart_timesyncd + - sync_rtc + +- name: enable systemd-timesyncd unit + become: true + service: + name: systemd-timesyncd + enabled: true + notify: + - reload_ntp + - restart_timesyncd + - sync_rtc + +- name: flush handlers + ansible.builtin.meta: flush_handlers + +# - name: wait for timesyncd to synchronize +# ansible.builtin.command: systemctl status systemd-timesyncd +# retries: 60 +# delay: 3 +# register: task_result +# until: +# - task_result.rc == 0 +# - task_result.stdout is search('[Ss]ynchroniz.* to time server')