我编写了一个 Puppet 模块,可以通过 NTP 校正时间,但这仅适用于具有较小 NTP 偏移的服务器。
有时,由于各种原因,有些服务器的时间偏差会超过 10 分钟。
我想制作一个 Puppet 模块,当 ntp 偏移量太高时,运行 exec“service ntpd stop; ntpdate ntp3.domain.local; service ntpd start”,以强制纠正时间。
如何查看 NTP 偏移量是否太高,以便告诉 Puppet 运行此命令?或者有更好的解决方案吗?
答案1
service ntpd stop; ntpdate ntp3.domain.local; service ntpd start
对于这个问题来说绝对是错误的解决方案。使用该-g
选项ntpd
:
-g Normally, ntpd exits with a message to the system log if the
offset exceeds the panic threshold, which is 1000 s by default.
This option allows the time to be set to any value without
restriction; however, this can happen only once. If the thresh‐
old is exceeded after that, ntpd will exit with a message to the
system log. This option can be used with the -q and -x options.
将其与iburst
slm 建议的选项结合起来,因为如果没有这个选项,将需要ntpd
很长时间才能纠正如此巨大的差异。它通常尝试仅以非常小的步骤更改系统时间,以便时间相关的应用程序不会感到困惑,但该iburst
选项将改变这一点。
您仍然必须确保 Puppetntpd
在发生恐慌后自动重新启动,因为根据联机帮助页,它会修复一次时间,然后它仍然会死掉。