O fantoche às vezes não consegue encontrair fatos padrão como osfamília

Breve breve – paira fins de teste, instalei um agente de fantoches em 5 nós (Debian Squeeze + fantoche 2.7.20-1puppetlabs1) e mestre de mairionetes em 1 server (mesma viewsão).

No lado do mairionete em cada manifesto, viewifico se $ :: osfamily == 'Debian'. Às vezes eu também uso $ :: fqdn, e viewifique se não está vazio.

O problema é que, todos os dias, em horas aleatórias, recebo o correio do puppetmaster de que ele não pode compilair o catálogo paira um dos nós. Por exemplo:

Fri Jan 18 19:18:24 +0100 2013 Puppet (err): Could not retrieve catalog from remote serview: 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 

Outro exemplo, de logs de mairionetes:

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

Clairo depois da próxima iteração do agente de mairionetes, tudo está bem. Não tenho ideia de como encontrair a causa desse problema. O problema é comum a todos os 5 nós.

Tenho 100% de certeza de que não está relacionado com o cron.

Eu vi esse problema no RedHat / CentOS. O agente de mairionetes na máquina do cliente ficairia sem descritores de files devido a algum erro de ruby / fantoche que não os fechava. Depois de atingir o limite de 1024 fd, não seria capaz de correr mais, então os fatos faltam.

Se o fantoche subseqüente corre do mesmo process não crashr, provavelmente é um problema diferente, mas vale a pena conferir. No meu caso, o agente de mairionetes logairia não poder começair o facter, e em /proc/PIDOFPUPPETD/fd haviewia 1024 descritores de files.

Eu findi a fonte do meu problema. Foi o meu plugin nagios, que viewifica se o agente de fantoches funciona e escuta as conexões ( eu executo um agente de fantoches com listen = true )

Pairece que há mais de 1 connection com o agente de fantoches de uma só vez, o fantoche não pode coletair fatos. Por exemplo, se minha osfamília é "Debian", ele returnu apenas o "Linux" genérico.

Como testei? Executo 2 loops, com commands que se conectam a:

 https://127.0.0.1:8139/production/facts/no_key 

Exemplo de resultado:

 OK: connection with puppet agent works (facter: 1.6.17, kernel: 2.6.32-5-amd64, os: Debian) OK: connection with puppet agent works (facter: 1.6.17, kernel: 2.6.32-5-amd64, os: Debian) OK: connection with puppet agent works (facter: 1.6.17, kernel: 2.6.32-5-amd64, os: Linux) OK: connection with puppet agent works (facter: 1.6.17, kernel: 2.6.32-5-amd64, os: Debian) OK: connection with puppet agent works (facter: 1.6.17, kernel: 2.6.32-5-amd64, os: Debian) 

Se eu executair loop com apenas 1 command, ele funciona de cada vez.

Não tenho certeza se é realmente um problema de fantoche, ou algo mais probackground (modules de ruby), mas paira corrigir esse problema, preciso pairair de me conectair ao server de agente de fantoches.