Puppet pour les nuls

September 22, 2008 by nono
Caté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.