After installing a fresh version of RHEL9.6 on some of our DELL PowerEdge servers, I need to start up the chronyd service to do the usual time sync things. Feels like a pretty straightforward task:
- name: enable and start the chronyd
ansible.builtin.systemd_service:
name: "chronyd.service"
enabled: True
state: started
but oddly it fails claiming there is already another process for this service running.
What was there before
As in the status of the service just after the RHEL9.6 install with nothing else done to the system. Note that I am using machine.hostname as a stand-in for the actual hostname of the machine, because obvious reasons.
Via systemctl status
β chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; preset: enabled)
Active: inactive (dead) since Mon 2026-02-09 23:36:36 EST; 40s ago
Duration: 9.424s
Docs: man:chronyd(8)
man:chrony.conf(5)
Process: 1439 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 1470 (code=exited, status=0/SUCCESS)
CPU: 26ms
Feb 09 23:36:27 machine.hostname systemd[1]: Starting NTP client/server...
Feb 09 23:36:27 machine.hostname chronyd[1470]: chronyd version 4.6.1 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +NTS +SECHASH +IPV6 +DEBUG)
Feb 09 23:36:27 machine.hostname chronyd[1470]: Loaded 0 symmetric keys
Feb 09 23:36:27 machine.hostname chronyd[1470]: Using right/UTC timezone to obtain leap second data
Feb 09 23:36:27 machine.hostname chronyd[1470]: Loaded seccomp filter (level 2)
Feb 09 23:36:27 machine.hostname systemd[1]: Started NTP client/server.
Feb 09 23:36:36 machine.hostname chronyd[1470]: chronyd exiting
Feb 09 23:36:36 machine.hostname systemd[1]: Stopping NTP client/server...
Feb 09 23:36:36 machine.hostname systemd[1]: chronyd.service: Deactivated successfully.
Feb 09 23:36:36 machine.hostname systemd[1]: Stopped NTP client/server.
The Error
Well the details about the start failure from a bunch of different places
From the ansible playbook
fatal: [machine.hostname]: FAILED! =>
changed: false
msg: |-
Unable to start service chronyd.service: Job for chronyd.service failed because the control process exited with error code.
See "systemctl status chronyd.service" and "journalctl -xeu chronyd.service" for details.
Again via systemctl status
Γ chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; preset: enabled)
Active: failed (Result: exit-code) since Mon 2026-02-09 23:40:57 EST; 37s ago
Duration: 9.424s
Docs: man:chronyd(8)
man:chrony.conf(5)
Process: 8774 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=1/FAILURE)
CPU: 26ms
Feb 09 23:40:57 machine.hostname systemd[1]: Starting NTP client/server...
Feb 09 23:40:57 machine.hostname chronyd[8776]: chronyd version 4.6.1 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +NTS +SECHASH +IPV6 +DEBUG)
Feb 09 23:40:57 machine.hostname chronyd[8776]: Fatal error : Another chronyd may already be running (pid=3254), check /run/chrony/chronyd.pid
Feb 09 23:40:57 machine.hostname chronyd[8774]: Another chronyd may already be running (pid=3254), check /run/chrony/chronyd.pid
Feb 09 23:40:57 machine.hostname systemd[1]: chronyd.service: Control process exited, code=exited, status=1/FAILURE
Feb 09 23:40:57 machine.hostname systemd[1]: chronyd.service: Failed with result 'exit-code'.
Feb 09 23:40:57 machine.hostname systemd[1]: Failed to start NTP client/server.
Checking the journal
Feb 09 23:40:57 machine.hostname systemd[1]: Starting NTP client/server...
Subject: A start job for unit chronyd.service has begun execution
Defined-By: systemd
Support: https://access.redhat.com/support
A start job for unit chronyd.service has begun execution.
The job identifier is 1657.
Feb 09 23:40:57 machine.hostname chronyd[8776]: chronyd version 4.6.1 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +NTS +SECHASH +IPV6 +DEBUG)
Feb 09 23:40:57 machine.hostname chronyd[8776]: Fatal error : Another chronyd may already be running (pid=3254), check /run/chrony/chronyd.pid
Feb 09 23:40:57 machine.hostname chronyd[8774]: Another chronyd may already be running (pid=3254), check /run/chrony/chronyd.pid
Feb 09 23:40:57 machine.hostname systemd[1]: chronyd.service: Control process exited, code=exited, status=1/FAILURE
Subject: Unit process exited
Defined-By: systemd
Support: https://access.redhat.com/support
An ExecStart= process belonging to unit chronyd.service has exited.
The process' exit code is 'exited' and its exit status is 1.
Feb 09 23:40:57 machine.hostname systemd[1]: chronyd.service: Failed with result 'exit-code'.
Subject: Unit failed
Defined-By: systemd
Support: https://access.redhat.com/support
The unit chronyd.service has entered the 'failed' state with result 'exit-code'.
Feb 09 23:40:57 machine.hostname systemd[1]: Failed to start NTP client/server.
Subject: A start job for unit chronyd.service has failed
Defined-By: systemd
Support: https://access.redhat.com/support
A start job for unit chronyd.service has finished with a failure.
The job identifier is 1657 and the job result is failed.
Rerunning playbook
What is extra confusing / frustrating is that I can rerun that segment of the playbook again and the task succeeds without issue. I havenβt changed any settings, fiddle with any bits on the machine itself. Just run that playbook segment again and we get the status below afterwards.
[me@hostname ~]$ sudo systemctl status chronyd
β chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; preset: enabled)
Active: active (running) since Mon 2026-02-09 23:51:23 EST; 27s ago
Docs: man:chronyd(8)
man:chrony.conf(5)
Process: 9555 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 9557 (chronyd)
Tasks: 1 (limit: 2463081)
Memory: 3.0M
CPU: 27ms
CGroup: /system.slice/chronyd.service
ββ9557 /usr/sbin/chronyd -F 2
Feb 09 23:51:23 machine.hostname systemd[1]: Starting NTP client/server...
Feb 09 23:51:23 machine.hostname chronyd[9557]: chronyd version 4.6.1 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +NTS +SECHASH +IPV6 +DEBUG)
Feb 09 23:51:23 machine.hostname chronyd[9557]: Loaded 0 symmetric keys
Feb 09 23:51:23 machine.hostname chronyd[9557]: Using right/UTC timezone to obtain leap second data
Feb 09 23:51:23 machine.hostname chronyd[9557]: Frequency 0.000 +/- 1000000.000 ppm read from /var/lib/chrony/drift
Feb 09 23:51:23 machine.hostname chronyd[9557]: Loaded seccomp filter (level 2)
Feb 09 23:51:23 machine.hostname systemd[1]: Started NTP client/server.
Thoughts (for what they are worth)
I realize this may be more of a chronyd or generic NTP server issue than an Ansible problem but I cannot find any info either way. Also was concerned that if this was a problem with the ansible.builtin.systemd_service module, it would impact other services I and anyone else needs to configure to make their systems work properly.
Machine & Software information
Ansible target hosts
Manufacturer: Dell
Model: PowerEdge R640
OS: RHEL 9.6
Kernel: Linux 5.14.0-570.12.1
Python: 3.12
chronyd: 4.6.1
systemd: 252-51.el9
Ansible controller
Python: 3.12
Ansible: 11.6.0
Ansible-core: 2.18.6