Photos récentes


Pages

Liens

Mots-clés

Archives

Ce site…

Puppet et certificats

August 3rd, 2011 at 3:14 pm by nono

La demande populaire étant ce qu’elle est, voici un petit topo sur la façon dont je gère les certificats puppet.

De manière générale, quand j’installe une machine, je lance un script de bootstrap sur mon serveur d’admin, celui qui a la clé ssh qui va bien. Ce script (bash) comporte entre autres le bout de code suivant :

[ -d BY-HOST/$host ] || ./gen-host $host

( cd BY-HOST/$host && tar cf - . ) \
  | ssh $host '( mkdir -p /var/lib/puppet/ssl && \
    cd /var/lib/puppet/ssl && rm -f *.pem */*.pem && \
    tar xvf - && \
    /usr/sbin/puppetd --no-daemonize --onetime --no-splay --verbose && \
    touch /var/run/puppet/run-often )'

En résumé, ça efface les éventuels certificats et autres clés déjà présents sur la machine, ça les remplace par la version «qui fait autorité» et ça lance puppet pour amorcer la pompe. Pour le touch à la fin, c’est expliqué là : http://blogs.glou.org/arnaud/2011/02/24/lancer-puppet-depuis-cron/

Et si le serveur d’admin n’a pas les données en local ? Bah il les génère, tiens ! C’est le rôle de la première ligne. Le script gen-host fait moralement ça :

mkdir -p BY-HOST/${host}/{certs,private_keys}
cp ca-${puppetmaster}.pem BY-HOST/${host}/certs/ca.pem
ssh $puppetmaster "puppetca --clean $host ; puppetca --generate $host"
scp ${puppetmaster}:/var/lib/puppet/ssl/private_keys/${host}.pem BY-HOST/${host}/private_keys/
scp ${puppetmaster}:/var/lib/puppet/ssl/ca/signed/${host}.pem BY-HOST/${host}/certs/

Moralement, parce qu’il bosse un peu avant pour générer les variables $host et $puppetmaster. La première contient $1 éventuellement qualifié (j’utilise systématiquement le FQDN comme identifiant) ; la seconde est déterminée par une variable dans la fiche LDAP du client.

Voilà, c’est un peu bricolé mais ça marche bien.

Et je me rends compte qu’il faudrait que je migre vers la syntaxe de puppet 2.x un de ces jours. 🙂

Tags:
Posted in geekeries


 




XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>