Si vous utilisez le fileserver de puppet et que vous gérez beaucoup de petits fichiers avec, il y a surement des optimisations à faire !
En effet pour chaque fichier, le client va demander un hash au serveur et en établissant à chaque fois une nouvelle connexion tcp... le temps perdu 2,5 secondes pour 10 fichiers..
Pour voir tout ça, rdv dans les logs du puppet master et regarder les lignes : GET /production/file_metadata pour vous donner une idée
La solution est de se passer du fileserver pour ces petits fichiers et de les inclure directement dans le catalogue, en utilisant :
content => file(path)
au lieu de source => puppet:///
Ici on est passé de 14seconde à 5,5seconde
Une solution pour cacher la demande de catalogue..
Dans cet article il ne parle pas de cacher les demande de metadata, mais c'est aussi une bonne idée.
Pour que ce soit viable, la validité du cache ne doit pas être trop longue et il faut pouvoir le vider à la main.
à tester
Deux patterns pour séparer les data du code dans puppet : "the params class pattern" et Hiera
Et oui, une classe ne peut être déclarée qu'une fois, c'est un singleton (une installation d'apache par exemple)
Alors qu'un defined type peut être déclaré x fois, il faut voir ça comme des objets qui peuvent avoir plusieurs instances (comme les vhost)
ptin ça marche pas avec nagios_* :/
http://www.mnxsolutions.com/linux/automatically-purge-old-configuration-from-nagios-deployed-by-puppet.html
et ça ça passe seulement avec le path par defaut des nagios_ (/etc/nagios3/.cfg)
un design pattern role/profile
ror adapter to query puppetdb
Des modules qui ont l'air bien
However, unlike include, resource-like declarations let you specify class parameters.
Un frontend pour puppetdn (en python)
Utiliser plusieurs puppet master : performance et haute dispo
Comment construire la gem puppetdb-terminus à partir des sources github :
git clone https://github.com/puppetlabs/puppetdb
git checkout 1.6.2
cd puppetdb
cp contrib/gem/puppetdb-terminus.gemspec puppet/
cd puppet
modifier le spec pour mettre version=1.6.2
gem build puppetdb-terminus.gemspec
Installer la gem : gem install puppetdb-terminus-1.6.2.gem