n°28
Juillet
2014
Configuration automatisée avec Puppet

Le gestionnaire de configuration Puppet a bien évolué depuis son tout premier déploiement au Centre de Calcul de l’IN2P3 en 2009. Afin d’exploiter au mieux ses nouvelles fonctionnalités, nous repensons actuellement notre installation. C’est l’occasion parfaite pour une revue de cet outil à la mode.

Puppet est un logiciel open source développé par Luke Kanies en 2005. Il se présente comme une alternative à l’écriture de multiples scripts pour automatiser les tâches répétitives liées à la configuration des systèmes d’exploitation (Unix-like et Windows).

Produit aujourd’hui par la compagnie PuppetLabs, en version gratuite (3.6.2) et en version commerciale (Puppet Enterprise 3.2), il est utilisé par de nombreuses sociétés renommées telles que Google, Dell, Mozilla, Oracle, Twitter et Disney. Il est également pressenti comme le successeur de YAIM pour la configuration des nœuds de grille de calcul LCG/EGI.

Puppet est une application Ruby pouvant fonctionner de manière autonome (mode standalone), mais plus souvent déployée en environnement client/serveur (mode pull). Le client vérifie régulièrement sa configuration en s’adressant au serveur Puppet, via le protocole HTTP en mode sécurisé SSL, pour récupérer le descriptif de sa configuration, appelé catalogue de ressources (fichiers, services, paquets...).

Le catalogue est généré par le serveur Puppet à partir des manifestes contenant le code de configuration et d’informations issues du client, appelées facts (nom d’hôte, OS, noyau, IP, adresse mac...). Des informations additionnelles peuvent aussi être fournies par un tiers, l’External Node Classifier (ENC). Le service sur le client compare l’état des ressources locales à celui du catalogue reçu et procède aux modifications nécessaires, décrites dans les manifestes.

Au Centre de Calcul de l’IN2P3, quatre serveurs Puppet gèrent la configuration de plus de 1300 clients (worker nodes, nœuds de grille, serveurs de sauvegarde/données/cloud...), à partir de 138 manifestes. L’ENC est la base de données d’une application interne de gestion de parc (SMURF). Elle fournit l’information indispensable pour créer une configuration spécifique au rôle de chaque machine.

Parmi les principaux atouts de Puppet, il faut citer :

-  Sa couche d’abstraction de ressource ou Resource Abstraction Layer (RAL), rendant le langage de configuration indépendant de l’implémentation système. Le code est donc intuitif. Il suffit de décrire dans les manifestes l’état désiré des ressources, sans se préoccuper de la façon de parvenir à cet état.
-  Les environnements qui offrent un moyen simple d’appliquer, à un ou plusieurs clients, différentes sortes de configuration : test, production, développement...
-  Une gestion des données séparée du code avec Hiera, une base de données hiérarchique, supportée nativement depuis la version 3 de Puppet. Cet outil permet de factoriser les données de configuration des différents clients et de retrouver facilement les informations relatives à une machine.
-  Le partage de codes grâce aux modules, qui contiennent tout ce qui est nécessaire à la configuration d’un composant (NTP, Apache, MySQL, firewall...). D’autres apportent des fonctionnalités supplémentaires aidant à l’écriture des manifestes (p. ex. création de fichiers, manipulation de chaînes de caractères, de nombres). Beaucoup sont disponibles gratuitement dans Puppet Forge ou GitHub.
-  La PuppetDB qui stocke les ressources externes de chaque client. Ce sont les seules accessibles par les autres clients. Elles sont utilisables, par exemple, pour mettre à jour la configuration d’un serveur Nagios à l’installation d’un nouveau nœud à monitorer.
-  Une communauté active fournissant une documentation complète et accessible.

Code et données peuvent être intégrés à un gestionnaire de version historisant les changements et autorisant les administrateurs d’un site à déléguer une partie de la configuration aux utilisateurs.

En résumé, Puppet est un outil pragmatique offrant, pour la gestion automatique de la configuration système, des solutions élégantes et applicables à bien des situations.

Christelle ELOTO (CC-IN2P3)