Puppet pour les nuls
September 22, 2008 by nonoCatégories geekeries - Mots-clés Linux puppet système
Après quelques temps à m'intéresser à Puppet, j'ai finalement décidé de sauter le pas et de commencer à le déployer pour remplacer notre architecture cfengine dont on commence à toucher les limites.
Après avoir passé pas mal de temps à potasser la doc et à demander plein de trucs à Google, voici donc les quelques points qui m'ont posé problème. Attention, tout ceci concerne une infrastructure à base de CentOS 4 et 5, avec le serveur sous CentOS 5. Puppet lui-même est installé depuis EPEL.
Organisation
Dans le fichier site.pp, on définit juste des classes « conteneurs » comme suit :
class lamp { include php include mysql }
Les autres classes sont définies dans des fichiers à part (php dans classes/php.pp et ainsi de suite). Ça, c'est une convention plus qu'autre chose mais en pratique ça aide à avoir les idées claires.
LDAP
J'utilise LDAP pour stocker les infos relatives aux clients. Pour que ça fonctionne, il faut :
- installer ruby-ldap sur le serveur
- ajouter, toujours sur le serveur, un fichier /etc/puppet/puppetmasterd.conf avec le contenu suivant :
[main] vardir = /var/lib/puppet logdir = /var/log/puppet rundir = /var/run/puppet ssldir = $vardir/ssl [puppermasterd] node_terminus = ldap ldapserver = ldap.ircam.fr ldapbase = ou=Hosts,dc=ircam,dc=fr
Pour les clients, tout se passe dans l'annuaire lui-même : on leur ajoute la classe puppetClient et un champ puppetclass qui contient la liste des classes.
dn: cn=system.ircam.fr,ou=virtuels,ou=Hosts,dc=ircam,dc=fr puppetclass: lamp
Pour le moment, le noeud default est encore en dur dans site.pp, ça râle dans les logs de puppetmasterd, il faudra le pousser dans LDAP un jour ou l'autre.