Puppet est un logiciel libre permettant la gestion de la configuration de serveurs esclaves. Puppet est écrit à l’aide du langage de programmation Ruby et est diffusé sous licence GPL1. Puppet est un outil permettant de gérer la mise à jour et la gestion automatisée des serveurs basés sur Unix.
Conçu et codé pour être multi-plate-forme, il fonctionne sur la plupart des systèmes d’exploitation basés sur Linux et Unix (Mac OS X compris). Il sera bientôt, selon les membres du projet, porté vers la plateforme Windows.
Dans cette procédure, nous installerons le serveur PUPPET à partir des paquets Debian. Le serveur PUPPET installe par défaut un petit serveur Web (WebRick) qui ne peut traiter qu’une seule requette à la fois. WebRick étant très limité en environment de production, nous installerons Apache2 ainsi que le module PASSENGER (permettant d’éxécuter du code Ruby) dans Apache.
Pré-requis à l’installation
On part du principe que l’installation d’une Débian de base a déja été éffectué.
Il faut, dans un premier temps, installer les packages Débian suivant :
Installation de Puppetmaster
aptitude install puppetmaster
Configuration de Puppetmaster
Le fichier de configuration du serveur Puppet est : /etc/puppet/puppet.conf
[main] server = [FQDN_SERVEUR] environments = [NOM_ENVIRONNEMENT_1],[NOM_ENVIRONNEMENT_2] environment = [NOM_ENVIRONNEMENT] logdir = /var/log/puppet vardir = /var/lib/puppet ssldir = /var/lib/puppet/ssl rundir = /var/run/puppet factpath = $vardir/lib/facter templatedir = $confdir/templates [NOM_ENVIRONNEMENT_1] manifest = /etc/puppet/environments/[NOM_ENVIRONNEMENT_1]/manifests/site.pp modulepath = /etc/puppet/environments/[NOM_ENVIRONNEMENT_1]/modules fileserverconfig = /etc/puppet/fileserver.conf.[NOM_ENVIRONNEMENT_1] [NOM_ENVIRONNEMENT_2] manifest = /etc/puppet/environments/[NOM_ENVIRONNEMENT_2]/manifests/site.pp modulepath = /etc/puppet/environments/[NOM_ENVIRONNEMENT_2]/modules fileserverconfig = /etc/puppet/fileserver.conf.[NOM_ENVIRONNEMENT_2]
Installation de Apache, du module Passenger et des dépendances
aptitude install apache2 libapache2-mod-passenger rubygems openssl
Désactivation du serveur puppet (WebRick)
Nous allons dans un premier temps, arreter le service puppetmaster pour libérer le port 8140 et ainsi pouvoir l’utiliser dans Apache :
/etc/init.d/puppetmaster stop
Nous allons maintenant empecher que le service puppetmaster se lance :
Dans le fichier /etc/default/puppetmaster, il faut remplacer :
START=yes
par :
START=no
Configuration de Apache pour lancer le serveur puppet
Nous allons ajouter la ligne suivante dans le fichier /etc/apache2/ports.conf :
Listen 8140
Ensuite, nous allons désactiver la prise en compte du VirtualHost par défaut :
a2dissite default
Nous allons également activer le module SSL :
a2enmod ssl
Nous allons maintenant créer le VirtualHost puppetmasterd dans le fichier /etc/apache2/sites-available/puppetmasterd :
NameVirtualHost 0.0.0.0:8140 ################# # PUPPETMASTERD # ################# <VirtualHost 0.0.0.0:8140> ServerName [FQDN_SERVEUR] ServerAdmin admin@puppet DocumentRoot /usr/share/puppet/rack/puppetmasterd/public ErrorLog /var/log/apache2/puppetmasterd/error.log CustomLog /var/log/apache2/puppetmasterd/access.log combined PassengerHighPerformance on PassengerStatThrottleRate 120 PassengerUseGlobalQueue on RackAutoDetect On RailsAutoDetect On RackBaseURI / AllowEncodedSlashes On SSLEngine on SSLCipherSuite SSLv2:-LOW:-EXPORT:RC4+RSA SSLCertificateFile /var/lib/puppet/ssl/certs/[FQDN_SERVEUR].pem SSLCertificateKeyFile /var/lib/puppet/ssl/private_keys/[FQDN_SERVEUR].pem SSLCertificateChainFile /var/lib/puppet/ssl/ca/ca_crt.pem SSLCACertificateFile /var/lib/puppet/ssl/ca/ca_crt.pem # CRL checking should be enabled; if you have problems with Apache complaining about the CRL, disable the next line SSLCARevocationFile /var/lib/puppet/ssl/ca/ca_crl.pem SSLVerifyClient optional SSLVerifyDepth 1 SSLOptions +StdEnvVars <Directory /usr/share/puppet/rack/puppetmasterd/> Options None AllowOverride None Order allow,deny allow from all </Directory> </VirtualHost>
IMPORTANT
Il faut créer le repertoire des logs Apache pour le VirtualHost PUPPETMASTERD :
mkdir /var/log/apache2/puppetmasterd
Il faut maintenant activer le VirtualHost PUPPETMASTERD :
a2ensite puppetmasterd
On peut maintenant relancer le serveur Apache :
/etc/init.d/apache2 restart
On peut vérifier que le port 8140 est bien ouvert par apache :
netstat -putan | grep 8140 tcp6 0 0 :::8140 :::* LISTEN 4584/apache2