Puppet est l’une des plus anciennes applications d’IaC et à ce titre, il s’agit d’une solution stable et éprouvée. Quelles sont ses caractéristiques ?
Puppet est l’un des principaux outils disponibles pour gérer ce que l’on appelle l’IaC ou Infrastructure as Code (Infrastructure par le biais de code). Pour rappel, l’IaC est une approche qui amène un ingénieur système à gérer une infrastructure informatique à partir de scripts de configurations prédéfinis.
Qu'est ce que Puppet ?
Puppet a été créé par le consultant Luke Kanies en 2005 et ce dernier a joué un rôle majeur dans le développement de l’IaC. Dès le départ, l’objectif fixé a été d’aider les administrateurs système à automatiser la gestion de l’infrastructure de serveurs.
Comment fonctionne Puppet ?
Puppet fonctionne à partir d’un « manifeste », soit un script qui spécifie ce qui doit être accompli :
- Exécuter des commandes ;
- Lancer certains services ;
- Installer des logiciels ;
- etc.
Dans un manifeste, l’administrateur système spécifie une liste précise d’instructions – comment un serveur particulier doit être configuré, etc. – et Puppet veille alors à les accomplir.
Une fois mis au point, un manifeste peut être réutilisé afin d’être appliqué tel quel à d’autres serveurs. Si un changement intervient dans une infrastructure, il suffit de mettre à jour le manifeste.
Principales caractéristiques de Puppet
Ayant été l’un des pionniers du mouvement IaC, Puppet a défini plusieurs normes du domaine.
Langage déclaratif
Il suffit de décrire comment on souhaite que le système se retrouve au final. Puppet se charge de réaliser les procédures nécessaires pour y arriver.
Modèle agent/maître
Puppet nécessite qu’un agent soit installé sur chaque nœud (machine individuelle) .Cet agent va recevoir les configurations émanant de la machine « maître ».
Système de rapport
La possibilité de produire des rapports détaillés et versionnés facilite les audits.
Factor
Cet outil intégré à Puppet recueille des informations détaillées sur les nœuds et facilite l’adaptation à des configurations spécifiques.
Modules prédéfinis
La bibliothèque Puppet Forge accueille de nombreux modules pré-construits.
Maturité
Du fait de son ancienneté, Puppet est un outil stable, fortement documenté,et qui dispose d’une bonne communauté d’usagers prêts à s’entraider.
Exemples d'usage
- Imaginons qu’une entreprise gère des centaines de serveurs et que chacun d’entre eux doive impérativement être configuré de manière identique aux autres. Un seul manifeste va faire l’affaire.
- Il faut mettre un jour un certain logiciel sur tous les serveurs de l’entreprise ? Un script Puppet va pouvoir gérer cette opération globale et assurer que tous opèrent bien avec la même version exacte du logiciel.
- Une entreprise gère des environnements informatiques très divers : certains dédiés à la vente d’articles, d’autres à la recherche, d’autres au développement de programmes. Il suffira d’écrire des manifestes Puppet adaptés à chaque environnement et de les mettre à jour individuellement chaque fois que cela est nécessaire.
Puppet comparé à d'autres produits d'IaC
Voici quelques-uns des concurrents majeurs de Puppet dans l’IaC.
Ansible
À la différence de Pupplet, Ansible se distingue par son approche « agentless » (il n’est pas nécessaire qu’un agent soit installé sur les serveurs cibles). Il est parfois préféré à Puppet pour des déploiements rapides et de faible envergure là où Pupper sera choisi pour des opérations plus complexes et long terme.
Chef
Là où Puppet utilise de manifestes, Chef amène les administrateurs à décrire l’infrastructure au moyen de « recettes », définies dans le langage Ruby. Les développeurs accoutumés à ce langage peuvent donc en tirer parti .
Salt (ou SaltStack)
Capable de gérer de grandes infrastructures, cet outil est souvent loué pour sa rapidité de communication avec les serveurs éloignés – il permet d’exécuter des commandes en temps réel à grande échelle.
Terraform
Tout comme Puppet, il repose sur une approche dite « déclarative » : l’administrateur décrit l’état souhaité et Terraform se charge de le réaliser. Sa spécialité est la gestion d’infrastructures de cloud computing.