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 无关。
我在 RedHat/CentOS 上看到过这个问题。由于一些 ruby/puppet 错误没有关闭它们,客户端机器上的 puppet 代理将耗尽文件描述符。达到 1024 fd 限制后,它将无法再运行 factorer,因此将丢失事实。
如果来自同一进程的后续 puppet 运行没有失败,则可能是另一个问题,但可能值得一试。在我的情况下,puppet 代理会记录关于无法启动因子的日志,并且/proc/PIDOFPUPPETD/fd会有 1024 个文件描述符。