我正在尝试使用 Puppet,我们在一些服务器上使用 FreeBSD。我注意到 FreeBSD 上的代理由于某种原因跳过了运行,即:
May 6 09:19:15 eagle puppet-agent[66970]: Finished catalog run in 1.97 seconds
May 6 09:49:14 eagle puppet-agent[74306]: Finished catalog run in 1.72 seconds
May 6 10:19:29 eagle puppet-agent[80895]: Finished catalog run in 2.19 seconds
May 6 10:49:29 eagle puppet-agent[87436]: Finished catalog run in 2.37 seconds
May 6 12:19:26 eagle puppet-agent[7879]: Finished catalog run in 2.51 seconds
May 6 12:49:26 eagle puppet-agent[14528]: Finished catalog run in 2.64 seconds
如您所见,它跳过了两次运行(11:19 和 11:49)。不幸的是,日志中没有更多的 puppet 行。我检查了 puppet 代理进程,它一直在运行。
Puppet 的版本是 v3.1.1,由 ports 构建,FreeBSD 是 8.3-STABLE,我使用了 -dist 配置,并且只更改了几个选项,最重要的是
runinterval = 30m
主机在 KVM 虚拟化下运行,因此存在轻微的时间变动:
May 6 10:20:28 eagle ntpd[656]: time reset -0.296053 s
May 6 11:19:03 eagle ntpd[656]: time reset -0.333463 s
May 6 12:21:38 eagle ntpd[656]: time reset -0.328728 s
如您所见,在 cca 处有 0.33 秒的移动,即木偶应该运行的时间,但我不确定这是否重要。它不到一秒,它向后移动,并且距离运行应该发生还有几秒钟。
我知道我可以从 cron 运行 puppet 但我想使用守护进程模式,因为我打算使用 REST API。
有没有什么办法可以调试“时间触发”机制?
答案1
由于我无法找到原因,我使用显而易见的变通方法“解决”了这个问题。我在 puppet.conf 中设置了一个非常长的(1000 天)运行间隔,并且我通过 REST API 从 cron 运行 puppet 周期。