Deprecated — Consolidated into PLAT-0004 on 2026-05-02 per ADR-0047. This source file is retained as a reference; the canonical content is in PLAT-0004.
ADR-0019: systemd-timesyncd over chrony for Ubuntu 25.10+¶
Status¶
Accepted — 2026-04-02
Context¶
Ubuntu 25.10 (Questing Quokka) ships systemd-timesyncd as the sole default NTP implementation. chrony is no longer installed by default and is not present in the minimal install. The Ansible common role's ntp.yml task file was previously a stub — NTP was never configured, leaving nodes without time synchronisation on fresh deploys.
During the v0.4 baseline run against caneast-site1-node3 (Ubuntu 25.10), it was confirmed that:
- chrony had been manually installed at some point and was present on the node
- systemd-timesyncd was absent
- The systemd-timesyncd service could not be started until the package was explicitly installed
On Ubuntu < 25.10, both chrony and systemd-timesyncd can coexist, but they conflict when both are active. The platform standardises on systemd-timesyncd for simplicity and to align with Ubuntu upstream defaults.
Decision¶
All Archon nodes running Ubuntu >= 25.10 use systemd-timesyncd for NTP.
chronyis purged if present (Ubuntu >= 25.10 only — conditional on distribution version)systemd-timesyncdpackage is explicitly installed before the service is enabled- NTP servers are configured via
/etc/systemd/timesyncd.confusing thetimesyncd.conf.j2template - NTP server list is defined in
common_ntp_servers(defaults: time.nrc.ca, time.chu.nrc.ca, ca.pool.ntp.org)
Template — timesyncd.conf.j2¶
[Time]
NTP={{ common_ntp_servers | join(' ') }}
FallbackNTP=pool.ntp.org
RootDistanceMaxSec=5
PollIntervalMinSec=32
PollIntervalMaxSec=2048
Alternatives Considered¶
chrony — Dropped from Ubuntu 25.10 default install. Would require explicit installation and management. More capable than timesyncd but unnecessary complexity for this use case.
ntpd — Legacy. Not present in Ubuntu 25.10 default repos. Higher overhead than timesyncd.
No NTP configuration — Prior state (stub task file). Unacceptable for a production baseline — clock drift causes TLS failures, log correlation issues, and Infisical token validation errors.
Consequences¶
- The
systemd-timesyncdpackage must be installed before the service is enabled — this is now explicit inntp.yml - Chrony purge is version-gated (
ansible_distribution_version is version('25.10', '>=')) to avoid breaking older nodes - All future Ubuntu nodes should be on 25.10+ — the platform is aligned with the upstream default
handlers/main.ymlretains only theRestart timesyncdhandler; the chrony handler was removed
References¶
ansible/roles/common/tasks/ntp.ymlansible/roles/common/templates/timesyncd.conf.j2- Ubuntu 25.10 release notes (systemd-timesyncd as default NTP)
- PR #20: fix: common role Ubuntu 25.10 compatibility