PuppetDB : Augmentez les fonctionnalités de votre Puppet
Contents
Software version | 1.5.2 |
---|---|
Operating System | Debian 7 |
Website | Puppet Website |
Last Update | 28/10/2013 |
Others |
1 Introduction
PuppetDB[1] permet de récupérer les données collectées par Puppet comme les facts et d’utiliser entre autres les ressources exportées. Ces données pourront ensuite être utilisées par d’autres programmes, comme le dashboard, ou vos propres outils grâce à une API. Vous pouvez installer le serveur PuppetDB sur votre PuppetMaster ou sur un serveur à part.[2]
Il est aujourd'hui possible d'utiliser 2 backends pour y stocker ces données :
- HSQLDB : base de donnée en mémoire, avec pas mal de limitations en plus de celle des 100 noeuds maximum, mais extrêmement rapide (car chargée en RAM)
- PostgreSQL : base de donnée classique, avec moins de performances (sur disque), mais avec plus de souplesse et une possibilité d'extension plus grande dans le temps (+100 noeuds Puppet).
Nous partirons donc sur la solution basée sur PostgreSQL.
Si vous souhaitez plus d'informations, regardez les différents goulots d’étranglement. En gros et pour résumer : si vous avez plus de 100 clients, il vous faudra une base de données PostgreSQL, gonfler votre JVM, augmenter le nombre de cpu/coeurs.
2 Installation
2.1 PuppetDB
Commençons par mettre en place le nécessaire pour pouvoir ensuite installer PuppetDB :
wget http://apt.puppetlabs.com/puppetlabs-release-stable.deb dpkg -i puppetlabs-release-stable.deb |
Et ensuite, nous mettez à jour :
aptitude |
aptitude update |
Puis il va falloir que vous ayez puppet d'installé sur la même machine où sera installé PuppetDB.
WARNING |
PuppetDB ne peut fonctionner sans le client puppet ! |
Peut importe s'il s'agisse ou non de la même machine que le master. Par soucis de simplicité, nous allons l'installer sur le Puppet Master.
aptitude |
aptitude install puppetdb puppet |
2.2 PostgreSQL
Comme nous prévoyons d'avoir plus de 100 clients (ou même si c'est moins, pas forcément envie de changer la configuration d'ici quelques temps), nous allons installer PostgreSQL :
aptitude |
aptitude install postgresql |
2.3 Terminus
Sur le serveur Puppet Master, installez ce package :
aptitude |
aptitude install puppetdb-terminus |
3 Configuration
3.1 PostgreSQL
Nous allons créer un utilisateur, ainsi qu'une base :
su - postgres createuser -DRSP puppetdb createdb -O puppetdb puppetdb exit |
3.2 PuppetDB
Configurez les informations de la base de donnée pour commencer :
Nous définissons donc ici, les propriétés de connexion à la base de donnée, ainsi que les identifiants que nous venons de créer juste avant.
Nous allons maintenant configurer le nombre de thread :
Adaptez le nombre de thread à votre nombre de processeur divisé par 2.
Puis, nous attaquons la configuration de Jetty :
Pour le host, ajoutez l'interface qui écoutera sur le port 8080 et 8081. Elle permet notamment de permettre au dashboard de se connecter dessus.
Redémarrez ensuite PuppetDB :
/etc/init.d/puppetdb restart |
Après quelques secondes/minutes, vous devriez pouvoir vous connecter sur le port 8081 (ssl) ou 8080 (non ssl) (http://<hostname>:8080|https://<hostname>:8081), vous aurez alors la possibilité de voir une belle interface :
3.3 Puppet Master
Sur le master, vous devez toucher à sa configuration :
WARNING |
Retirez les lignes thin_storeconfigs et async_storeconfigs si vous les utilisez, ou passez les à False |
Puis nous allons mettre en place un fichier pour la configuration de Puppet, afin de lui indiquer comment se connecter au PuppetDB :
/etc/puppet/puppetdb.conf |
[main]
server = puppet-prd.deimos.frport = 8081 |
Et pour finir, un fichier permettant de définir l'emplacement des facts :
/etc/puppet/routes.yaml |
---
master:
facts:
terminus: puppetdb cache: yaml |
Et voilà, votre serveur Puppet a un backend PuppetDB qui est maintenant fonctionnel :-)
4 FAQ
4.1 J'ai des erreurs OutOfMemoryError dans mes logs et PuppetDB réponds difficilement
Pour valider que le problème provient bien d'une insuffisance mémoire, vérifiez que ce fichier exite (/var/log/puppetdb/puppetdb-oom.hprof), et assurez vous que le contenu vous parle d'OOM.
Il va falloir augmenter la Java Heap size (valeur du Xmx) de votre PuppetDB qui en fait requiert plus de RAM. Augmentez donc cette valeur :
Pour avoir une idée de la valeur à mettre (n représentant le nombre de nodes) :
- 128M + (1M * n)