Ceci est une ancienne révision du document !
Puppet
Présentation
Puppet est un outils de gestion de la configuration de serveurs, il permet le télédéploiement de configuration sur un ensemble de serveurs en quelques minutes. L’intérêt de cette solution open source réside dans son support multi-plateformes (basé sur ruby), sa sécurité (ssl), son développement actif et sa relative simplicité à mettre en oeuvre.
Prérequis
- Disposez de plusieurs serveurs à administrer sans quoi le gain de temps et d'énergie ne sera pas effectif.
- Notions en administration système.
Systèmes supportés
Puppet fonctionne sur la plupart des système Uni* et dans une moindre mesure Windows. voir ici pour plus de détails.
Installation
Puppet est présent dans les dépôts, installez les paquets puppet, facter et puppetmaster (pour le serveur maître) :
- Sur le client
apt-get install puppet
- Sur le master
apt-get install puppetmaster
Cependant si vous souhaitez une version différente rendez vous sur la page de téléchargement officielle pour obtenir un package .tar.gz. Autre solution installer puppet sous forme de gem (le système de paquet ruby). Dans ce cas l'installation est tout aussi simple :
gem install facter gem install puppet
Configuration
Maître
Fichiers de configuration
On modifie le fichier /etc/puppet/puppet.conf
[main] logdir = /var/log/puppet vardir = /var/lib/puppet ssldir = $vardir/ssl rundir = /var/run/puppet confdir = $vardir factpath = $vardir/lib/facter pluginsync = false server = hostnameduserveur report = true reports = log,store [master] templatedir = $vardir/templates modulepath = $vardir/modules libdir = $vardir/plugins syslogfacility = user
Parefeu
On modifie également notre firewall afin de laissez passer les flux :
iptables -A OUTPUT -p tcp -m state --state NEW,ESTABLISHED -s ipdumaster --sport 8140 -d ipduclient -j ACCEPT iptables -A INPUT -p tcp -m state --state NEW,ESTABLISHED -s ipduclient -d ipdumaster --dport 8140 -j ACCEPT
Esclave
Configuration de l'agent Puppet
/etc/puppet/puppet.conf
[main] server = CEY00026 report = true rundir = /var/run/puppet/ runinterval = 50 [agent] listen=true
Le paramètre listen et les fichiers auth.conf et namespaceauth.conf sont nécéssaire pour activer le déploiement à partir du master (puppet kick ou puppetrun) si vous ne souhaitez pas utiliser ces commandes, ces fichier sont inutiles.
/etc/puppet/auth.conf
path /run method save allow *
/etc/puppet/namespaceauth.conf
[puppetrunner] allow * [puppetbucket] allow * [puppetreports] allow * [resource] allow * [kick] allow *
Parefeu
Si vous disposez d'un parefeu d'activer il faut songer à ouvrir le port 8139 :
iptables -A OUTPUT -p tcp -m state --state NEW,ESTABLISHED -s ipduclient --sport 8139 -d ipdumaster -j ACCEPT iptables -A INPUT -p tcp -m state --state NEW,ESTABLISHED -s ipdumaster -d ipduclient --dport 8139 -j ACCEPT
Validation
Avant de pouvoir utilisez un client il faut préalablement le valider auprès du master. Pour cela sur le client lancer la commande :
puppetd --test
Cela va générer un certificat que l'on nous demanderas de valider, pour cela sur le serveur :
puppetca --list nomduclient
doit nous retourner le nom du serveur en attente de validation ensuite on signe le certificat en attente :
puppetca --sign nomduclient
Déploiement à partir du master
Pour lancer le puppetd –test sans devoir être connecté à chaque client on lance
puppet kick nomduclient
ou encore
puppetrun nomduclient
Si cela ne fonctionne vérifiez bien qu'un déploiement sur le client est fonctionnel ainsi que l'ouverture des ports dans lle firewall
Problèmes
Désactivez le déploiement automatique d'un client
Un client puppetd qui tourne en daemon à la fâcheuse tendance d'être configuré pour exécuter un puppetd –test à intervalle régulier. Pour solutionner ce problème tout en gardant un démon à l'écoute du puppetrun du master il faut lancer le process puppetd avec l'option –no-client soit :
puppetd --no-client
pour automatiser l'ensemble on pourra le rajouter dans le fichier /etc/init.d/puppet
Désinstallation
Pour supprimer cette application, il suffit de supprimer son paquet. Si vous avez choisi l'option des gems il vous suffira de faire :
gem uninstall puppet gem uninstall facter
.