Installation et configuration de Puppet

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

Leave a Reply

Your email address will not be published. Required fields are marked *