Informatique
Linux
Puppet ou l'administration système centralisée | Puppet ou l'administration système centralisée |
| Écrit par majordom | |||||||||||||||||
| 21-01-2010 | |||||||||||||||||
|
Comme le dit le site de ReductiveLabs. "Puppet est un logiciel pour automatiser les tâches d'administration de systèmes *nix (comme ajouter des utilisateurs, installer des paquets, et mettre à jour des configurations de serveurs) basée sur une spécification centralisée." Dans cet article nous verrons l'installation de puppet du coté client comme du coté serveur, nous verrons aussi la mise en place de la communication entre le serveur et les clients, et enfin nous saurons comment rédiger un manifeste qui réalisera pour nous quelques tâches simples mais indipensables. Les machines utilisées sont des machines de base Debian. J'ai utilisé plusieurs sources pour réaliser cet article :
C'est très important de faire la distinction entre des scripts shell encapsulés dans du SSH qui copie des fichiers de conf entre les systèmes et un outil comme Puppet. Puppet definit et met en oeuvre des configurations. La configuration est un ensemble de paramètres qui peut se constituer de fichiers de conf, de packages, de services et bien d'autres choses encore, puisqu'on peut définir ses propres types. Sur chaque machine doit être installé un client (puppet) qui se connecte au serveur (puppetmaster) à travers une couche SSL en utilisant un certificat. Sur le serveur sont stockés des manifests qui contiennent les spécifications. Le serveur possède même un mécanisme pour distribuer des fichiers et ensuite les distribuer via les manifests. 1 - Installation
Attention la configuration DNS des clients et des serveurs doit être nickel !!! Verifiez bien vos fichiers /etc/hosts et /etc/resolv.conf. Le client et le serveur communique au travers d'une communication SSH sécurisée avec échange de certificats.
ATTENTION, un bug dans joomla m'oblige à ne pas pouvoir utiliser le caractère "crochet ouvert" le contraire de "]". j'utilise la parenthèse ouverte pour le remplacer. Quand j'aurai trouvé du courage pour passer sous spip le problème sera réglé...
Coté serveur :apt-get install puppetmaster Le fichier de configuration du serveur puppet est /etc/puppet/puppet.conf
Coté client :Un simple apt-get install puppet suffit pour installer tous les outils.(ruby, rdoc, facter, puppet, ...) Le fichier de configuration s'appelle /etc/puppet/puppet.conf
La comunication entre le serveur et les clientsAprès avoir configuré les serveurs et clients, on relance le service puppet
-> cette commande va envoyer une demande de certificat auprès du serveur puppet Maintenant, il faut se connecter au serveur puppet pour signer les certificats des clients.
-> cette commande signe tous les certificats, sans vérification, d'un seul coup ! Pour signer un certificat bien précis
On voit bien ici l'intérêt d'avoir une configuration DNS au poil ! Enfin pour valider la communication et l'exécution du premier manifest il faut encore relancer le client puppet sur les différents postes clients.
Pour vérifier que tout se passe bien on ouvre le /var/log/syslog et on vérifie qu'il y a bien ces lignes
Dans ce cas, on voit qu'à 11h04, le client puppet s'est connecté au serveur puppet, il a executé avec succès un apt-get update && apt-get -y dist-upgrade et qu'il a terminé l'action en 1,07 seconde Problèmes de communicationOn peut passer des commandes pour bien vérifier que les certificats sont valides de part et d'autres
la commande répond :
On voit donc que tout se passe bien. Quelquefois le serveur informe que le certificat n'est pas valide. Il faut donc supprimer le certificat sur le serveur par cette commande :
et ensuite on reprend toute la procédure. Je reboot ensuite pour tuer les pid qui trainent et repartir sur une installation claire.
Mon premier manifest
Le manifest permet de déclarer des actions à exécuter, des fichiers à contrôler ou déployer, des paquets à contrôler ou déployer et bien d'autres choses encore. Le manifest central, (le manifest par défaut si vous voulez) s'appelle site.pp. Il est situé dans notre configuration (que j'ai laissé par défaut) dans /etc/puppet/manifests/site.pp A chaque modification du ou des manifests il faut redémarrer le servce puppetmaster avec la commande vue plus haut. Je ne le redirai pas ! On va commencer par contrôler le service NTP : on écrit ce qui suit dans le fichier site.pp
Voilà, c'est simple. Ce premier manifest permet de contrôler si ntp est bien installé, si non il l'installe automatiquement en utilisant les paquets debian. Puppet serveur de fichiersIl serait bien de pouvoir définir quel fichier ntp.conf utilisé par le service. Qu'à cela ne tienne puppet sait tès bien le faire ! on crée un fichier/etc/puppet/fileserver.conf
maintenant le partage de fichier du serveur puppet est situé à la racine de /etc/puppet/files. allow * autorise tout le monde à venir chercher ces fichiers. On verra plus tard les restrictions d'accès. maintenant on peut ajouter ceci à notre manifest site.pp
Puppet et les services
Puppet est aussi capable de gérer les services. On rajoute le code ci-dessous au fichier site.pp et on explique
On s'assure que le service existe et qu'il est bien lancé sinon il est installé avec le package ntp et le fichier ntp.conf automatiquement.
Un peu d'organisationUn bon informaticien est un informaticien organisé alors mettons un peu d'ordre dans la structure des fichiers. Puppet possède un système de classe très pratique pour se faire. Continuons avec notre exemple de NTP. Tout d'abord, je crée un répertoire services dans lequel je mettrai toutes les classes qui géreront des services (ntp, ssh, etc) Dans ce répertoire je crée un fichier ntp.pp dans lequel je met toutes les lignes du fichier site.pp ci-dessus à l'intérieur de la classe ntp
puis dans site.pp on déclare d'aller lire le fichier ntp.pp; un petit include comme en php ou latex.
node default permet de dire que la classe ntp s'applique à tous les clients puppet qui ne sont pas spécifiés explicitement. Les templatesCertains fichiers de config sont tous identiques sur tous les clients puppet sauf... une ligne ! Les templates permettent de gérer la distribution de fichier de conf avec des variables qu'il pourra récupérer grâce à son outil facter. à suivre
|
|||||||||||||||||
| Dernière mise à jour : ( 26-01-2010 ) | |||||||||||||||||
| < Précédent | Suivant > |
|---|









