Puppet 在没有时钟的设备上启动木偶?

Puppet 在没有时钟的设备上启动木偶?,puppet,upstart,Puppet,Upstart,我正在Debian 14.04嵌入式系统上使用upstart启动puppet agent: description "Puppet Agent" start on started 2klic-gateway stop on runlevel [!2345] respawn pre-start script if [ ! -f /var/lib/sc2klic/system.json ]; then stop ; exit 0 fi puppet co

我正在Debian 14.04嵌入式系统上使用upstart启动puppet agent:

description "Puppet Agent"

start on started 2klic-gateway
stop on runlevel [!2345]

respawn

pre-start script
    if [ ! -f /var/lib/sc2klic/system.json ]; then
        stop ; exit 0
    fi
    puppet config set certname "$(hostname)"
end script

exec /usr/local/bin/puppet agent --no-daemonize
这个设备,或者至少是这个版本,没有硬件时钟。所以系统从1970年1月1日开始

当我查看
/var/log/upstart/puppet agent.log
时,我一次又一次地看到这个错误:

ESC[1;31mError: Could not parse application options: copyright with a year after 1972 is very strange; did you accidentally add or subtract two years?ESC[0m
是否可以在没有正确日期的情况下初始化puppet代理


Puppet Agent版本4.10.1

此错误似乎与文档有关,因此我不知道此处是否应出错。我提出了一个例外,在这种情况下不触发

这就是说,我们知道如果是1970年,这个设备就不会在线,因此木偶无论如何都不能使用

作为解决方案,我在upstart预启动脚本中添加了以下内容:

while [[ $(date +%Y) == "1970" ]]
do
    sleep 30
done

这种方式我们只是让木偶一直等到设备连接到一个NTP服务器。

我不熟悉Debian 14.04嵌入式UpScript脚本的发布,但是你能不能只把开始标准改为<代码>在NTPD @ BaldDead上开始,我没有考虑,我必须检查NTPD是否运行,因为upstart可能认为它已经启动了,即使我没有Internet连接也没有?现在您将puppet作业设置为在启动
2klic gateway
时启动。您必须检查您的ntpd upstart脚本,以查看它何时启动,即它是在
2klic网关
之前还是之后。如果是在之后,则应将start命令更改为
start on ntpd
,也可能ntpd不由upstart管理,在这种情况下,您必须编辑ntpd脚本以发出upstart事件或创建upstart包装脚本