我有一堆 rhel 服务器,我必须确保所有服务器都及时同步。他们都在运行 chronyd 服务。
我的问题是,是否有任何实用程序可以通过命令检查这一点?有谁知道 ansible 模块可以做到这一点?我没有找到。
我想要的只是以严格有效的方式检查所有服务器是否在同一时间运行。可能类似于 ntpdate 的东西适合我。
提前致谢!
答案1
检查chrony是否与命令同步
您可以使用 chrony 特定命令来检查 ntp 状态。如果你想查看当前ntp服务器使用的信息
chronyc tracking
显示所有 ntp 服务器
chronyc sources
欲了解更多信息,请参阅: fedora - 检查 chrony 是否同步
与ansible结合
没有ansible模块,但是还有另一种方法。
您应该仍然拥有也适用于 chrony 的 ntpstat 实用程序。返回码提供有关 ntp 状态的信息。 0 表示时钟同步,1 表示不同步,2 表示时钟状态不确定。看联机帮助页
你可以验证一下
ntpstat
echo $?
如果您使用ansible命令模块来运行ntpstat,如果命令的返回码不为0,则默认情况下会失败。因此在这种情况下,我们可以利用这一点来发挥我们的优势。制作一个运行 ntpstat 命令的简单剧本。
- name: Check if chrony is synchronized
command: ntpstat
运行所需主机组的剧本。所有失败的主机都没有同步的 ntp。
更进一步,如果返回码不为 0,您可以将全局 chrony 配置 (chrony.conf) 复制到所有主机,并使用 ansible 重新启动 chronyd 服务。
- name: Check if chrony is synchronized
command: ntpstat
register: ntpstat_rc
ignore_errors: true
- name: Copy chrony configuration
copy:
src: <global chrony.conf on your ansible server>
dest: /etc/chrony.conf
backup: yes
when: ntpstat_rc.rc != 0
- name: Restart chrony service
systemd:
name: chronyd
state: restarted
when: ntpstat_rc.rc != 0
我希望这有帮助。
干杯