我们在启用了自动启动的 Debian 客户端上使用 Puppet 版本 2.7.11(START=yes
在 中/etc/default/puppet
)。我们使用带有 FQDN 的证书( )连接到 Puppetmaster dummyclient.work-network.pri
,它运行正常。/etc/default/puppet
例如,修改后的文件被发送到我们的客户端。
问题是:重启后,我们会看到一个新的证书请求,dummyclient
我们的 puppetmaster 认为它是一台完全不同的机器。其中一个原因似乎是我们使用 DHCP 作为客户端名称和 IP 地址,而puppet-agent
启动时网络可能尚未完全就绪。(在我们的系统日志中,puppet-agent
启动前NetworkManager
提供有关名称服务器和域名的信息。)作为进一步的证明,hostname -f
启动期间也是空的(而hostname -s
给出了正确的答案)。
显然,无论系统运行多长时间,正在运行的 puppet 进程都不会更新此信息。(手动启动的 puppet 运行使用 FQDN。)
是否可以延迟启动 Puppet 的时间,或者在网络信息发生变化时触发 Puppet 重启?(例如,当客户端在没有任何网络连接的情况下启动时。)
或者最佳解决方案只是在客户端的文件中对 FQDN 进行硬编码/etc/hosts
?(但话又说回来,这应该是我们的 DHCP 服务器的工作,不是吗?)
答案1
完全可以更改服务在启动时的启动顺序。请参阅www.debian.org有关运行级别如何工作以及如何更改启动脚本的运行顺序的信息。
如果您希望每次获得新的 dhcp 租约时都重新启动 puppet,您可以放入一个 cron 作业,定期检查 /var/lib/dhcp.leases 中是否有新的 dhcp 租约,并在发生变化时重新启动。