Puppet, Salt, Chef et Ansible : Une comparaison

Temps de lecture : 8 minutes

Quel est celui qui vous convient ?

Table des matières

I. Puppet II. SaltStack III. Chef IV. Ansible IV. Conclusion

Introduction

Configurer un seul serveur avec les logiciels requis est une tâche raisonnablement simple. Cependant, si de nombreux serveurs doivent avoir les mêmes logiciels ou des logiciels et configurations similaires installés sur eux, le processus nécessiterait de nombreuses heures de travail, ce qui épuiserait vos ressources déjà mises à rude épreuve. Sans une certaine forme d’automatisation, cette tâche peut devenir presque insurmontable. C’est dans cette optique que de nouveaux outils de gestion de la configuration ont été développés pour répondre au besoin de déployer de nouveaux serveurs avec des configurations et des mises à jour préétablies, ce qui a permis un processus d’automatisation plus fluide et plus facile à gérer. Pour maintenir la synchronisation de ces serveurs et gérer les mises à jour sur un large éventail d’hôtes dans un centre de données ou un environnement cloud, des outils d’automatisation comme Puppet, SaltStack, Chef et Ansible répondent à ce besoin.

Choisir les bons outils de gestion à utiliser pour votre infrastructure est une décision cruciale. C’est pourquoi nous passons en revue les options disponibles pour ces projets. Ces outils offrent le plus d’avantages aux DevOps et aux sysadmins. Nous espérons que ces informations pourront vous orienter dans la bonne direction. S’il est vrai que tous les outils de configuration mentionnés ci-dessus permettront très probablement d’accomplir ces tâches, chacun d’entre eux offre des méthodologies et des rôles quelque peu différents pour atteindre cet objectif. Cet article a pour but de vous montrer certaines des différences essentielles que chaque plate-forme de gestion logicielle offre. Cela vous permettra de prendre une décision plus éclairée, car nous essayons d’aborder chaque titre logiciel et ses avantages, puis d’offrir une vue d’ensemble à la fin

.

Puppet

Puppet est l’un des outils de gestion les plus anciens et les plus fiables de notre liste. De ce fait, il offre une base de soutien plus large au sein de la communauté Puppet ainsi que de l’équipe Puppet. Puppet fournit également une édition open-source de son logiciel qui peut être installée sur une grande variété de systèmes d’exploitation. La version entreprise du logiciel est toutefois capable d’englober des systèmes plus importants comme AIX d’IBM ou le matériel F5 Big-IP. Il convient de noter que le serveur maître de Puppet ne peut être installé que sur des systèmes d’exploitation Unix/Linux.

Un déploiement Puppet est généralement composé d’un serveur maître et de plusieurs machines clientes (qui sont appelées agents). Puppet est l’un des outils de cette liste qui utilise son propre langage unique qui est basé sur Ruby. Le DSL (ou Domain Specific Language) de Puppet est utilisé pour décrire l’état souhaité de votre système dans un fichier, appelé fichier manifeste. Les fichiers manifestes sont fondamentalement un ensemble de configurations ou de tâches qui déterminent la façon dont les ressources de votre réseau et de votre système d’exploitation (comme les services, les paquets et les fichiers) sont configurées. Puppet compile ensuite les fichiers manifestes dans des catalogues et pousse chaque catalogue vers son nœud désigné afin que le nœud soit reconfiguré à l’état souhaité dans l’ensemble de l’infrastructure.

Puppet offre en outre une interface utilisateur Web intuitive et simple qui est utilisée pour effectuer un nombre plus important de tâches, notamment la gestion des nœuds en temps réel. En outre, parce que Puppet est mis en place dans une forme d’architecture multi-maître, si le maître actuellement actif tombe en panne, un autre maître remplacera le maître précédent pour éviter une disponibilité dégradée.

Puppet met à jour la configuration des nœuds en demandant aux clients de vérifier les manifestes mis à jour sur le maître, puis de tirer les nouvelles configurations vers le bas à partir du serveur maître. En raison de cette fonctionnalité, Puppet est plus orienté vers l’administrateur système que beaucoup d’autres outils notés ici. Un inconvénient de Puppet est qu’il n’y a pas d’exécution à distance immédiate disponible pour les noeuds. En outre, Puppet a une courbe d’apprentissage plus raide, en raison de la connaissance requise du DSL de Puppet et des langages de programmation Ruby.

Top

SaltStack

SaltStack (également appelé Salt) est l’un des outils les plus récents de cette liste. Il est cependant toujours très pertinent dans le domaine de la gestion de la configuration logicielle. Salt dispose d’une communauté relativement active et d’un support efficace. Salt est conçu pour permettre une communication à faible latence et à haut débit, ainsi que la transmission de données entre les nœuds pour l’exécution à distance. Salt est conçu pour fonctionner avec les systèmes d’exploitation Unix/Linux et Windows, mais le serveur Salt Master ne peut fonctionner que sur les systèmes d’exploitation Unix/Linux.

SaltStack est composé d’un Salt Master, qui est le serveur Salt central, et de clients qui sont appelés Salt Minions, qui s’exécutent en tant qu’agents sur chacune des machines des nœuds. La maîtrise du langage de Salt est relativement facile car ses configurations lisibles par l’homme utilisent Python et des fichiers YAML, qui est l’une des structures de données les plus naturelles et les plus simples. Alors que Puppet fonctionne de manière à ce que les nœuds demandent les mises à jour, Salt fonctionne à l’inverse. Le maître Salt pousse toutes les configurations vers toutes les machines clientes. En outre, Salt sert de serveur de fichiers asynchrone, ce qui augmente la vitesse des transferts de fichiers qui servent les subordonnés de Salt. La vitesse de déploiement est l’un des principaux objectifs de la philosophie de Salt.

Salt peut également fonctionner dans une configuration multi-maître. Si un serveur maître Salt tombe en panne, les agents se connecteront à un autre maître répertorié dans les configs. Cette fonctionnalité augmente la disponibilité et la redondance du système dans son ensemble. Un autre avantage de Salt est qu’il permet l’exécution parallèle de plusieurs commandes à la fois. Ces commandes sont cryptées via AES (Advanced Encryption Standard) et transmises aux nœuds clients via le protocole SSH. Un dernier avantage de Salt est qu’il peut gérer plusieurs maîtres. Salt propose également une interface utilisateur Web ; toutefois, ses capacités et ses fonctionnalités sont limitées.

Top

Chef

Chef a commencé comme un outil de déploiement interne de serveur à serveur avant d’être finalement publié comme logiciel open-source en 2009. Un avantage important de Chef est qu’il offre également une grande communauté de soutien avec une documentation et des conseils étendus. Le logiciel Chef master et node fonctionne à la fois sur les systèmes Unix/Linux, mais seules les versions client et station de travail peuvent être déployées sur des serveurs Windows.

Les options de configuration de Chef se composent de livres de cuisine et de recettes. Les recettes sont les fichiers de définition qui peuvent être combinés avec des attributs, des fichiers, des bibliothèques et d’autres recettes pour construire des Cookbooks. Ces cookbooks peuvent ensuite être utilisés pour le déploiement des clients.

Chef se compose de 3 éléments principaux :

  • Station de travail Chef – La station de travail Chef est utilisée par les ingénieurs système pour créer, tester et déployer les cookbooks sur les serveurs maîtres Chef.
  • Serveur maître de Chef – Les serveurs de Chef sont essentiellement le hub où toutes les données de configuration de Chef sont stockées. Ces informations comprennent les livres de cuisine, les données de serveur et d’autres infos pertinentes.
  • Client Chef – Le client Chef est les machines de nœud final gérées par les serveurs maîtres Chef. Ces serveurs tirent et exécutent périodiquement des configurations de livres de cuisine à partir du serveur maître Chef.

Le langage de programmation de Chef est similaire à celui de Puppet, dans la mesure où il utilise un DSL (Domain Specific Language) propre à Chef, mais il prend également en charge les scripts écrits en Ruby.

Chef est principalement configuré comme un serveur maître Chef, ainsi que comme un serveur de secours au cas où le serveur maître Chef central tomberait en panne. Si une panne survient, le serveur maître de secours remplacera le serveur maître Chef central. C’est ainsi que la redondance est intégrée à l’environnement Chef. Chef offre également une automatisation supplémentaire du cloud et de l’infrastructure, en plus des flux de travail automatisés, qui sont utilisés pour fournir une livraison continue aux machines clientes. Il convient de noter que le langage principal favorise les programmeurs, car il exige l’utilisation de scripts orientés DSL/Ruby dans les livres de cuisine. Chef et son infrastructure sont très stables et conçus pour être fiables. Chef propose également un ordre d’exécution séquentiel, par opposition, par exemple, à Salt, qui propose une exécution parallèle.

Top

Ansible

Ansible est l’un des outils les plus modernes utilisés comme solution de gestion de la configuration. Il est sans doute l’un des logiciels les plus populaires en raison de sa simplicité et de sa configuration directe. Comme les outils précédents, Ansible prend en charge les machines clientes Windows et Unix/Linux, mais le serveur maître Ansible nécessite un serveur basé sur Unix/Linux.

Contrairement aux outils précédents, seul un maître Ansible est nécessaire pour fonctionner car Ansible utilise les protocoles SSH (ou RDP pour Windows) pour ouvrir une connexion aux serveurs clients afin d’exécuter ses commandes séquentielles. Ansible est similaire à Puppet dans la mesure où les fichiers de configuration Ansible sont basés sur Python et utilisent des fichiers YAML pour les données structurées. Ces fichiers sont appelés Playbooks. Ansible prend également en charge une API Python, qui peut être utilisée pour répondre à des événements spécifiques afin d’exercer un contrôle sur les nœuds eux-mêmes. Ansible peut également être utilisé via une interface de ligne de commande. L’utilisation d’une interface CLI de cette manière ne nécessiterait pas l’utilisation d’un fichier de configuration pour une tâche simple telle que le redémarrage d’un serveur. Pour des tâches plus complexes, un playbook est nécessaire puisque le serveur maître pousse les informations vers les nœuds clients. Ansible est également adapté à l’exécution à distance en temps réel de commandes ou à la gestion d’applications.

En ce qui concerne la redondance, Ansible est généralement configuré comme un seul serveur maître actif (appelé instance primaire) car aucun agent n’est nécessaire pour s’y connecter. Un maître secondaire peut être configuré pour prendre le relais si le serveur maître tombe en panne. Comme Ansible utilise une approche sans agent, il peut déployer des changements ou pousser des mises à jour relativement rapidement sur tous les nœuds par un ingénieur. Un inconvénient d’Ansible est que les ordinateurs clients ne vérifient pas les changements de configuration périodiques sur le maître primaire.

Top

Conclusion

En termes simples, un gestionnaire de configuration fournit une couche d’abstraction entre une configuration existante des serveurs et son état souhaité. Cet objectif est atteint en se concentrant davantage sur un résultat spécifique au lieu des tâches verbeuses nécessaires pour les accomplir.

Dans notre examen de ces quatre produits, si nous cherchons une conclusion basée uniquement sur la popularité, le grand gagnant est Ansible. Cela est dû au fait qu’un groupe beaucoup plus large d’administrateurs choisit d’utiliser Ansible comme outil principal de gestion de la configuration par rapport aux autres produits de cet article. Ansible a ses avantages car sa structure et son paradigme sont davantage orientés vers un rôle de SysOps. Salt est similaire à cet aspect, mais il est différent de Puppet et Chef car ils sont plus orientés vers les développeurs. En outre, Ansible est l’une des options les plus faciles de cette liste à mettre en place, à configurer et à commencer à utiliser immédiatement.

Puppet, d’autre part, serait celui qui est le plus approchable et le plus fiable du point de vue de la facilité d’utilisation. Bien que, comme souligné précédemment, une connaissance pratique de Ruby soit nécessaire pour profiter pleinement de son large éventail de fonctionnalités, de sa structure et de son évolutivité. La configuration de Puppet peut devenir très granulaire et parfois compliquée, mais c’est le pari le plus sûr si vous recherchez un environnement logiciel non hétérogène.

Si vous recherchez un outil de configuration rationalisé vers une infrastructure plus uniforme, Ansible et Salt seraient plus adaptés à cet objectif. Salt est en soi l’un des outils les plus fiables et les plus robustes de cette liste, mais il est rabaissé d’un cran en raison de la difficulté pour les débutants de comprendre certaines options de configuration plus profondes disponibles dans l’interface utilisateur Web. Cependant, il compense cette difficulté par ses options d’évolutivité avancées et un environnement de travail accessible du point de vue des SysOps ou des administrateurs. Il existe également de multiples addons disponibles qui améliorent et étendent les capacités de l’interface utilisateur, ce qui améliore la convivialité et la fonctionnalité.

Chef en soi est un outil très simple et bien conçu. Il offre une approche améliorée pour la facilité d’accès et un plus grand niveau de praticité que Puppet. Comme mentionné précédemment, Chef peut poser une courbe d’apprentissage notable pour les SysOps ou les administrateurs système qui manquent d’expérience orientée développement, car il nécessite une compréhension plus large des langages de programmation et une expérience.

En conclusion, Ansible est un choix direct pour la gestion de configuration d’entrée de gamme en raison de la documentation disponible, de sa structure et de sa facilité d’accès. Puppet est également un outil solide, mais un utilisateur ou une équipe devra apprendre de nouvelles procédures et fonctions de codage afin de conquérir la courbe d’apprentissage plus raide lors de l’utilisation de sa programmation DSL (Domain Specific Language). En termes de convivialité, d’évolutivité et d’options multi-environnements, Salt trouvera un écho plus clair auprès des administrateurs système qui souhaitent tirer parti de ses nombreuses options et de ses capacités d’évolutivité très attrayantes. Chef a une présentation et une structure bien conçues et offre un niveau considérable de stabilité. La courbe d’apprentissage peut s’avérer difficile au départ, car elle est davantage orientée vers les compétences d’un programmeur. Tous ces outils jouent un rôle spécifique dans la configuration de votre infrastructure et de ses états souhaités. Leur utilisation dépendra entièrement de vos besoins de configuration, du support personnel et du niveau de commodité nécessaire à leur mise en œuvre.

Top

Nous aimerions que vous nous rejoigniez !

Donnez-nous un coup de fil au 800.580.4985, ou ouvrez un chat ou un ticket avec nous pour parler avec l’un de nos conseillers compétents en matière de solutions ou d’hébergement expérimenté pour apprendre comment vous pouvez tirer parti de ces techniques dès aujourd’hui !

  • .

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.