Puppet 有时找不到像 osfamily 这样的标准事实

Tom*_*ski 5 linux debian puppet facter puppetmaster

快速简介 - 出于测试目的,我在 5 个节点(Debian Squeeze + puppet 2.7.20-1puppetlabs1)上安装了 puppet 代理,并在 1 个服务器(相同版本)上安装了 puppet master。

在每个清单的 puppetmaster 端,我检查是否 $::osfamily == 'Debian'。有时我也使用 $::fqdn,并检查它是否不为空。

问题是每天随机时间我都会收到来自 puppetmaster 的邮件,说他无法为其中一个节点编译目录。例如:

Fri Jan 18 19:18:24 +0100 2013 Puppet (err): Could not retrieve catalog from remote server: Error 400 on SERVER: Not supported osfamily at /etc/puppet/modules/system/manifests/skel.pp:20 on node mynodeX
Fri Jan 18 19:18:24 +0100 2013 Puppet (notice): Using cached catalog
Fri Jan 18 19:18:24 +0100 2013 Puppet (err): Could not retrieve catalog; skipping run
Run Code Online (Sandbox Code Playgroud)

另一个例子,来自 puppetmaster 日志:

Jan 15 18:58:49 monitor puppet-master[14218]: No fqdn at /etc/puppet/modules/system/manifests/motd.pp:29 on node nodeY
Run Code Online (Sandbox Code Playgroud)

当然在下一次傀儡代理迭代之后,一切都很好。我不知道如何找到这个问题的原因。所有 5 个节点都有问题。

我 100% 确定它与 cron 无关。

arj*_*arj 6

我在 RedHat/CentOS 上看到过这个问题。由于一些 ruby​​/puppet 错误没有关闭它们,客户端机器上的 puppet 代理将耗尽文件描述符。达到 1024 fd 限制后,它将无法再运行 factorer,因此将丢失事实。

如果来自同一进程的后续 puppet 运行没有失败,则可能是另一个问题,但可能值得一试。在我的情况下,puppet 代理会记录关于无法启动因子的日志,并且/proc/PIDOFPUPPETD/fd会有 1024 个文件描述符。