Qu'est-ce que la marionnette ?
Dans DevOps, vous souhaitez automatiser autant de tâches que possible. La configuration manuelle des environnements prend des semaines avec de vastes infrastructures. Au moment où tout est configuré, vous éteignez les incendies au lieu de mettre en œuvre de nouvelles solutions efficaces, telles que les serveurs Rancher.
Puppet aide à automatiser les tâches manuelles pour provisionner rapidement les systèmes et déployer les applications. La gestion dynamique de l'infrastructure est au cœur de Puppet.
Cet article explique ce qu'est Puppet, quels problèmes il résout et comment utiliser Puppet pour automatiser avec succès les tâches manuelles en tant qu'équipe DevOps.
Qu'est-ce que la marionnette ?
Puppet est un outil IaC (Infrastructure as Code) pour la gestion de plusieurs serveurs. Écrit en Ruby (principalement), Puppet fonctionne sur plusieurs systèmes de type Unix et prend également en charge Windows.
Le logiciel est très mature, la version initiale datant de 2005. Puppet est un logiciel libre et open source, et une version propriétaire est également disponible pour les infrastructures complexes.
À quoi sert la marionnette ?
Puppet automatise la gestion et le déploiement de la configuration du serveur. Le logiciel permet de tirer des chaînes et de gérer les états sur plusieurs systèmes à la fois, et l'approche réduit la configuration manuelle et la gestion des serveurs individuellement.
Puppet définit l'état souhaité pour le système plutôt que la façon d'y arriver. La configuration s'applique à diverses plates-formes et appareils et maintient l'état dans l'ensemble de l'infrastructure. Dans l'ensemble, les administrateurs système ont moins besoin d'éteindre les incendies, ce qui permet à l'équipe DevOps de mettre en œuvre de nouvelles et meilleures solutions de serveur.
Gestion de la configuration des marionnettes
Les scripts d'automatisation aident à gérer les tâches répétitives, telles que l'installation et la configuration des serveurs. Cependant, lorsque vous travaillez avec une infrastructure étendue, les scripts d'automatisation ne s'adaptent pas.
La gestion de la configuration fournit une solution pour les configurations d'infrastructure étendues. Les pratiques sont considérées comme l'épine dorsale de DevOps et permettent des versions de logiciels fréquentes et plus fiables dans un pipeline DevOps établi.
La gestion de la configuration du serveur s'effectue grâce à l'approche infrastructure-as-code. Dans le cas de Puppet, le code de gestion du serveur est en code Puppet, qui est similaire à Ruby. Le langage est déclaratif et décrit une configuration basée sur un modèle.
Comment fonctionne la marionnette ?
Puppet utilise une approche client-serveur et se compose des systèmes suivants :
- Le Puppet Master est un serveur avec le démon Puppet Master qui gère les informations système cruciales pour tous les nœuds à l'aide de manifestes.
- Les agents Puppet sont des nœuds sur lesquels Puppet est installé avec le démon Puppet Agent en cours d'exécution.
Les sections ci-dessous expliquent les éléments et la terminologie essentiels de Puppet, qui aident à clarifier le fonctionnement de Puppet.
Topologie et architecture des marionnettes
Puppet utilise une architecture client/serveur composée du Puppet Master et des agents Puppet. Les agents Puppet utilisent le mode pull pour interroger le maître et récupérer les informations de configuration spécifiques au nœud et au site.
La topologie passe par les étapes suivantes :
- Un nœud exécutant un démon Puppet Agent rassemble toutes les informations (faits) sur lui-même, et l'agent envoie les faits au Puppet Master.
- Le Puppet Master utilise les données pour créer un catalogue sur la façon dont le nœud doit être configuré et le renvoie à l'agent Puppet.
- L'agent Puppet se configure en fonction du catalogue et rend compte au Puppet Master.
Puppet utilise un utilitaire appelé Facter pour découvrir les informations système. L'outil est livré avec l'installation de Puppet par défaut.
Maître des marionnettes
Le Puppet Master est un démon fonctionnant sur un serveur dédié. Le Puppet Master est la source d'informations et l'autorité de configuration en tant que nœud de serveur. Le maître envoie des instructions à tous les nœuds d'agent et supervise la configuration du système.
Le Puppet Master est responsable des tâches suivantes :
- Créer un catalogue pour les agents.
- Transferts de fichiers d'un serveur de fichiers vers des agents.
- Accepter les certificats SSL des agents.
- Stockage des manifestes de configuration.
Puppet utilise la gestion de l'accès à l'identité par le biais d'un utilisateur et d'un groupe dédiés, assurant la sécurité et exposant uniquement les informations requises aux agents. Cependant, toutes les actions ne nécessitent pas des privilèges élevés.
Agents de marionnettes
L'agent Puppet est un démon Puppet exécuté sur un système ou un nœud. Les agents disposent de certains privilèges sur le nœud pour appliquer les catalogues de configuration extraits du Puppet Master.
Pour recevoir des autorisations de communication, un agent demande un certificat SSL lors du premier contact avec le maître. Le certificat est vérifié chaque fois que l'agent demande au maître des mises à jour de configuration avant d'envoyer les informations. Un maître s'authentifie également auprès des agents pour s'assurer que les informations de configuration sont correctes.
Les agents marionnettes modifient la configuration du système et nécessitent des autorisations root pour effectuer des tâches.
Chiffrement des marionnettes et sécurité des communications
Puppet utilise OpenSSL pour la communication et la sécurité. Basé sur les protocoles SSL et TLS, Puppet utilise le cryptage SSL/TLS standard et les certificats SSL pour l'authentification et la vérification de l'agent/maître. De plus, Puppet crypte le flux de trafic entre les agents et les serveurs à l'aide de SSL/TLS en utilisant SHA-256 comme hachage par défaut.
Les méthodes de chiffrement dans Puppet garantissent les éléments suivants :
- Authentification et vérification maître/agent.
- Prévenir les violations de données entre le maître et les agents.
Le maître génère son propre certificat CA, sa clé privée, sa CRL (liste de révocation de certificats) et un certificat de serveur. Le certificat de serveur est envoyé aux agents pour permettre la communication SSL et TLS.
Avantages de la marionnette et pourquoi vous devriez l'utiliser
Puppet est l'un des outils d'automatisation de la gestion de la configuration les plus anciens et les plus populaires. Vous trouverez ci-dessous cinq avantages qui donnent de bonnes raisons de commencer à utiliser Puppet.
1. Source ouverte
Puppet est open source, ce qui rend la technologie extensible. Les bibliothèques et modules personnalisés enrichissent les projets individuels en fonction de votre cas d'utilisation.
L'open source présente également l'avantage d'avoir une communauté active. De nombreuses discussions, forums et experts sont prêts à vous aider et à répondre aux questions.
2. Abstraction des ressources
Les tâches de configuration sont répétitives et les mêmes étapes sont souvent requises sur des serveurs avec différents systèmes d'exploitation via des étapes spécifiques à la plate-forme. Se souvenir de toutes les commandes est une tâche impossible.
Facter aide Puppet à comprendre les détails et à réaliser l'abstraction. Les données spécifiques au système et les détails du système d'exploitation sont tous familiers à Puppet grâce à Facter.
3. Idempotence
Les configurations redondantes sont un problème complexe lorsque vous travaillez avec de nombreux serveurs, et Puppet vise à n'appliquer que les modifications qui affectent le système. Si l'état souhaité de l'infrastructure est atteint, Puppet n'exécute pas les commandes. Cette fonctionnalité Puppet est connue sous le nom d'idempotence, ce qui permet de réduire la redondance et d'augmenter l'efficacité.
4. Multiplateforme
Puppet couvre un large éventail de plates-formes, ce qui augmente le nombre de serveurs dans le processus d'automatisation de la configuration. L'outil fonctionne sur Windows, OS X, les systèmes basés sur Debian, Fedora, Gentoo, RHEL et Solaris.
5. Souple
Le langage Puppet inclut un moyen de remplacer les instructions et de créer des exceptions pour différents scénarios. Puppet aide également à planifier périodiquement des actions de maintenance spécifiques.
Conclusion
Puppet est un outil puissant pour gérer les configurations et les tâches du serveur, et c'est un excellent choix pour les serveurs stables qui ne changent pas dynamiquement ou souvent.
Pour voir comment Puppet se compare à d'autres technologies similaires, consultez notre article de comparaison :Ansible contre Terraform contre Puppet.
Cloud computing
- Qu'est-ce que le tournage au diamant ?
- Qu'est-ce que l'usinage par ultrasons ?
- Qu'est-ce que le rotomoulage ?
- Qu'est-ce que le chromage ?
- Qu'est-ce qu'un outil de perforation ?
- Qu'est-ce que le forage par friction ?
- Qu'est-ce que le fer galvanisé?
- Qu'est-ce que la re-plateforme dans le cloud ?
- Qu'est-ce que l'acier A2 ?