Puppet, environnements dynamiques

Suite au précédent billet portant sur le déploiement simplifié d'un environnement Puppet j'ai souhaité revenir sur un petit ajout que vous pouvez faire à la configuration de votre Puppet master afin de rendre dynamique la gestion des environnements.

Le but de la manœuvre est simplement de ne plus avoir à déclarer les nouveaux environnements dans le puppet.conf mais de directement créer ceux-ci sans les sous-répertoires de configuration de Puppet.

Dans ce petit article je vais garder la configuration Puppet traditionnelle, libre à vous de l'adapter à votre topologie de fichiers. Les environnements sont déclarés dans le dossier environments/, nous ferons nos déclarations dans le fichier puppet.conf.

edhelas@edhelas-laptop:/etc/puppet# ls -l
-rw-rr 1 root root 4178 Oct 21 23:52 auth.conf
drwxr-xr-x 4 root root 4096 Nov  3 14:42 environments
-rw-rr 1 root root 1462 Oct 21 23:52 fileserver.conf
drwxr-xr-x 2 root root 4096 Oct 21 23:54 manifests
drwxr-xr-x 2 root root 4096 Oct 21 23:54 modules
-rw-rr 1 root root  490 Nov  3 14:42 puppet.conf
drwxr-xr-x 2 root root 4096 Oct 21 23:54 templates

Ajout du chemin environnements

Puppet possède déjà quelques comportements par défaut pour charger ses fichiers de configuration. Notamment concernant la structure de configuration d'un environnement.

edhelas@edhelas-laptop:/etc/puppet/environments# find .
.
./test
./test/modules
./test/manifests
./test/manifests/site.pp

Ici j'ai déclaré un environnement de test, la configuration standard se trouve dans le sous-dossier manifests et est inscrite dans le fichier site.pp. Si vous souhaitez donc créer un nouvel environnement, il ne vous reste plus qu'à créer un autre dossier dans environments/ ("production", "staging" ou ce que vous souhaitez) et de recréer les sous-dossiers et fichiers ci-dessus.

Une fois cela fait il ne nous reste plus qu'à préciser où trouver notre configuration grâce à la dernière ligne du bloc suivant.

[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
[master]
dns_alt=edhelas-laptop.home
environmentpath = $confdir/environments

Configuration des clients

Maintenant que le serveur est capable de charger des configurations d'environnement dynamiquement déclarons sous quel environnement les clients devront être. Pour ce faire, une seule ligne est nécessaire dans le fichier de configuration.

[main]
logdir=/var/log/puppet
vardir=/var/lib/puppet
ssldir=/var/lib/puppet/ssl
rundir=/var/run/puppet
factpath=$vardir/lib/facter
server=edhelas-laptop.home
environment=test

Enregistrez tout vos fichiers et lancez votre serveur et vos clients

# puppet master - -verbose --no-daemonize
# puppet agent --test

Et voilà ! :)

Vus : 1133
Publié par Jaussoin Timothée : 3