Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
puppet [Le 09/11/2017, 13:23] – [Puppet] 109.128.254.96 | puppet [Le 24/04/2018, 21:04] (Version actuelle) – [Puppet] 213.166.219.57 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | ---- | ||
+ | ====== Puppet ====== | ||
+ | Puppet est un outil de gestion de la configuration de serveurs, il permet le télédéploiement de configuration sur un ensemble de serveurs en quelques minutes. L' | ||
+ | \\ | ||
+ | {{: | ||
+ | |||
+ | Systèmes supportés : | ||
+ | Puppet fonctionne sur la plupart des systèmes Unix et sur Windows. voir [[http:// | ||
+ | |||
+ | |||
+ | ===== Pré-requis ===== | ||
+ | * Disposer des [[: | ||
+ | * Disposer d'une connexion à Internet configurée et activée. | ||
+ | * Disposez de plusieurs serveurs à administrer sans quoi le gain de temps et d' | ||
+ | * Notions en administration système. | ||
+ | |||
+ | |||
+ | |||
+ | ===== Installation ===== | ||
+ | Puppet est présent dans les [[: | ||
+ | * Sur le client : < | ||
+ | * Sur le master : < | ||
+ | Cependant si vous souhaitez une version différente rendez-vous sur la page de téléchargement [[http:// | ||
+ | < | ||
+ | apt-get install rubygems | ||
+ | gem install facter | ||
+ | gem install puppet | ||
+ | </ | ||
+ | |||
+ | ===== Configuration ===== | ||
+ | |||
+ | ==== Maître ==== | ||
+ | === Fichiers de configuration === | ||
+ | <note tip>Les fichiers de configuration sont donnés à titre d' | ||
+ | |||
+ | On [[: | ||
+ | < | ||
+ | [main] | ||
+ | logdir = / | ||
+ | vardir = / | ||
+ | ssldir = $vardir/ssl | ||
+ | rundir = / | ||
+ | confdir = | ||
+ | factpath = $vardir/ | ||
+ | pluginsync = false | ||
+ | server = hostnameduserveur | ||
+ | report = true | ||
+ | reports = | ||
+ | |||
+ | [master] | ||
+ | templatedir = | ||
+ | modulepath = $vardir/ | ||
+ | libdir | ||
+ | syslogfacility = user | ||
+ | </ | ||
+ | |||
+ | === Pare-feu === | ||
+ | On modifie également notre pare-feu afin de laisser passer les flux : | ||
+ | < | ||
+ | iptables -A OUTPUT -p tcp -m state --state NEW, | ||
+ | iptables -A INPUT -p tcp -m state --state NEW, | ||
+ | </ | ||
+ | |||
+ | ==== Esclave ==== | ||
+ | |||
+ | === Configuration de l' | ||
+ | On [[: | ||
+ | < | ||
+ | [main] | ||
+ | server = hostnamedevotremaster | ||
+ | report = true | ||
+ | rundir = / | ||
+ | runinterval = 50 | ||
+ | |||
+ | [agent] | ||
+ | listen=true | ||
+ | </ | ||
+ | |||
+ | Le **runinterval** permet de spécifier, en secondes, l' | ||
+ | |||
+ | Le paramètre **listen** et les fichiers auth.conf et namespaceauth.conf sont nécessaires pour activer le déploiement à partir du master (**puppet kick** ou **puppetrun**) si vous ne souhaitez pas utiliser ces commandes, ces fichiers sont inutiles. | ||
+ | |||
+ | / | ||
+ | < | ||
+ | path /run | ||
+ | method save | ||
+ | allow * | ||
+ | </ | ||
+ | |||
+ | <note warning> | ||
+ | |||
+ | / | ||
+ | < | ||
+ | allow * | ||
+ | [puppetbucket] | ||
+ | allow * | ||
+ | [puppetreports] | ||
+ | allow * | ||
+ | [resource] | ||
+ | allow * | ||
+ | [kick] | ||
+ | allow * | ||
+ | </ | ||
+ | |||
+ | === Pare-feu === | ||
+ | Si vous disposez d'un pare-feu actif il faut songer à ouvrir le port 8139 : | ||
+ | < | ||
+ | iptables -A OUTPUT -p tcp -m state --state NEW, | ||
+ | iptables -A INPUT -p tcp -m state --state NEW, | ||
+ | </ | ||
+ | |||
+ | ===== Validation d'un client ===== | ||
+ | Avant de pouvoir utiliser un client il faut préalablement le valider auprès du master. Pour cela sur le client lancer la commande : | ||
+ | < | ||
+ | Cela va générer un certificat que l'on nous demandera de valider. Pour cela sur le serveur : | ||
+ | < | ||
+ | nomduclient | ||
+ | </ | ||
+ | doit nous retourner le nom du serveur en attente de validation ensuite on signe le certificat en attente : | ||
+ | < | ||
+ | |||
+ | ===== Déploiement à partir du master ===== | ||
+ | |||
+ | ==== Via la commande Puppetrun ==== | ||
+ | Pour lancer le **puppetd --test** sans devoir être connecté à chaque client on lance | ||
+ | < | ||
+ | ou encore | ||
+ | < | ||
+ | <note tip>Si cela ne fonctionne pas vérifiez bien qu'un déploiement sur le client est fonctionnel ainsi que l' | ||
+ | |||
+ | ==== Via l'API REST (conseillé) ==== | ||
+ | L'API REST permet à une requête HTTP d' | ||
+ | Il suffira ainsi de passer la commande suivante via **CURL** pour lancer un puppetrun sur l' | ||
+ | < | ||
+ | |||
+ | L' | ||
+ | ===== Problèmes ===== | ||
+ | ==== Désactivez le déploiement automatique d'un client ==== | ||
+ | Un client **puppetd** qui tourne en daemon à la fâcheuse tendance d' | ||
+ | < | ||
+ | |||
+ | ==== err: Could not retrieve catalog: Could not parse for environment development: | ||
+ | Ce problème peut survenir au cours d'un déploiement, | ||
+ | < | ||
+ | |||
+ | ==== no certificate found and waitforcert is disabled ==== | ||
+ | < | ||
+ | Exiting; no certificate found and waitforcert is disabled</ | ||
+ | Le certificat n'a pas encore été signé sur le master. | ||
+ | |||
+ | ==== Run of Puppet configuration client already in progress ==== | ||
+ | < | ||
+ | Indique que Puppet est déjà en cours d' | ||
+ | |||
+ | ==== certificate verify failed ==== | ||
+ | < | ||
+ | indique que le certificat que possède le client diffère de celui du master, aussi la solution la plus simple est de régénérer un certificat sur le client puis de le signer sur le master. Pour ce faire on supprime le certificat précédent. | ||
+ | < | ||
+ | <note important> | ||
+ | On effectue une nouvelle tentative de déploiement qui va générer un nouveau certificat | ||
+ | < | ||
+ | info: Creating a new SSL key for votreserveur.fr | ||
+ | warning: peer certificate won't be verified in this SSL session | ||
+ | info: Caching certificate for ca | ||
+ | warning: peer certificate won't be verified in this SSL session | ||
+ | warning: peer certificate won't be verified in this SSL session | ||
+ | info: Creating a new SSL certificate request for votreserveur.fr | ||
+ | info: Certificate Request fingerprint (md5): 80: | ||
+ | </ | ||
+ | On peut ensuite signer le certificat sur le puppetmaster et déployer de nouveau. | ||
+ | |||
+ | <note tip>Si le problème persiste toujours il s'agit alors sans doute d'une mauvaise synchronisation horaire entre le client et le master.</ | ||
+ | |||
+ | ==== err: Could not request certificate: | ||
+ | Si lors du lancement de la commande puppetd --test vous obtenez cette erreur : | ||
+ | < | ||
+ | puppetd --test | ||
+ | info: Creating a new SSL key for hostnameduserveur | ||
+ | warning: peer certificate won't be verified in this SSL session | ||
+ | info: Caching certificate for ca | ||
+ | warning: peer certificate won't be verified in this SSL session | ||
+ | warning: peer certificate won't be verified in this SSL session | ||
+ | info: Caching certificate_request for hostnameduserveur | ||
+ | err: Cached certificate for ca failed: header too long | ||
+ | warning: peer certificate won't be verified in this SSL session | ||
+ | info: Caching certificate for ca | ||
+ | warning: peer certificate won't be verified in this SSL session | ||
+ | err: Cached certificate for ca failed: header too long | ||
+ | warning: peer certificate won't be verified in this SSL session | ||
+ | info: Caching certificate for ca | ||
+ | warning: peer certificate won't be verified in this SSL session | ||
+ | Exiting; no certificate found and waitforcert is disabled | ||
+ | |||
+ | puppetd --test | ||
+ | err: Could not request certificate: | ||
+ | Exiting; failed to retrieve certificate and waitforcert is disabled</ | ||
+ | Ce problème survient lorsque le système de fichier sur lequel Puppet essaye de créer le certificat est plein. | ||
+ | |||
+ | ==== Processus fantôme ==== | ||
+ | Si le déploiement renvoie une erreur de ce type : | ||
+ | < | ||
+ | notice: Run of Puppet configuration client already in progress; skipping | ||
+ | </ | ||
+ | mais qu'il n' | ||
+ | < | ||
+ | ===== Désinstallation ===== | ||
+ | Pour supprimer cette application, | ||
+ | < | ||
+ | gem uninstall facter</ | ||
+ | |||
+ | ===== Liens ===== | ||
+ | * **en** [[http:// | ||
+ | * **en** [[http:// | ||
+ | * [[http:// | ||
+ | * **fr** [[wpfr> | ||
+ | |||
+ | ---- | ||
+ | // |