Skip to content

Time Ansible Role

An Ansible role to set the system timezone (via timedatectl) and configure systemd-timesyncd on Debian-based systems.

Features

  • Install and manage systemd-timesyncd
  • Configure primary and fallback NTP servers in /etc/systemd/timesyncd.conf
  • Set timezone with timedatectl (best-effort)
  • Optionally enable/disable time synchronization

Installation

Install the role with ansible-galaxy:

ansible-galaxy install git+https://gitlab.com/niclas-zone/tools/ansible/roles/time.git

Role Variables

Variable Default Value Type Description
time_timezone Europe/Berlin string IANA timezone to apply (timedatectl set-timezone)
time_ntp_enabled true boolean Enable/disable systemd-timesyncd service
time_timesyncd_unit systemd-timesyncd string Service unit name
time_packages ['tzdata','systemd-timesyncd'] list[str] Packages to install before configuring time/NTP
systemd_timesyncd_ntp_servers see below str/list Primary NTP servers written to /etc/systemd/timesyncd.conf
systemd_timesyncd_fallback_ntp_servers see below str/list Fallback NTP servers written to /etc/systemd/timesyncd.conf
ansible_managed_warning "This file is managed by Ansible. Manual changes will be overwritten." string Text to embed as a header comment when templating files
ansible_role_repository https://gitlab.com/niclas-zone/tools/ansible/roles/time string Repository URL for this role

The role defaults to Europe/Berlin, but you should override time_timezone with the location needed in your environment (for example Europe/Zurich).

Default NTP servers

systemd_timesyncd_ntp_servers:
  - "ntp.server.local"

systemd_timesyncd_fallback_ntp_servers:
  - "0.de.pool.ntp.org"
  - "1.de.pool.ntp.org"
  - "2.de.pool.ntp.org"
  - "4.de.pool.ntp.org"

Example Playbooks

Basic: set timezone + enable NTP

---
- hosts: servers
  become: true
  roles:
    - role: time
      vars:
        time_timezone: "Europe/Zurich"
        time_ntp_enabled: true
        systemd_timesyncd_ntp_servers:
          - "0.pool.ntp.org"
          - "1.pool.ntp.org"
        systemd_timesyncd_fallback_ntp_servers:
          - "time.google.com"
          - "time.cloudflare.com"

Custom NTP servers

---
- hosts: servers
  become: true
  roles:
    - role: time
      vars:
        time_timezone: "Europe/Zurich"
        time_ntp_enabled: true
        systemd_timesyncd_ntp_servers:
          - "0.pool.ntp.org"
          - "1.pool.ntp.org"
        systemd_timesyncd_fallback_ntp_servers:
          - "time.google.com"
          - "time.cloudflare.com"

Disable NTP (keep timezone configured)

---
- hosts: servers
  become: true
  roles:
    - role: time
      vars:
        time_ntp_enabled: false