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-rr1 root root 4178 Oct 21 23:52 auth.conf drwxr-xr-x 4 root root 4096 Nov 3 14:42 environments -rw-rr1 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-rr1 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à ! :)