83 votes

Pourquoi utiliser Chef/Puppet plutôt que Shell Shell ?

Nouveau dans les outils Puppet et Chef. Il semble que le travail qu'ils font peut être fait avec des scripts Shell. Peut-être qu'il était fait dans Shell Shell jusqu'à ce que ceux-ci arrivent.

Je suis d'accord pour dire qu'ils sont plus lisibles. Mais, y a-t-il d'autres avantages par rapport à Shell Shell en plus d'être simplement lisibles ?

57voto

Paul Gear Points 3883

Un langage spécifique à un domaine fait une grande différence dans la quantité de code que vous écrivez. Par exemple, on pourrait dire qu'il n'y a pas beaucoup de différence entre :

chmod 640 /my/file

et

file { "/my/file":
    mode => 640,
}

mais il y a une grande différence entre les deux :

FILE=/my/file
chmod 640 $FILE
chown foo $FILE
chgrp bar $FILE
wget -O $FILE "http://my.puppet.server/dist/$FILE"
     # where the URL contains "Hello world"

et

file { "/my/file":
    mode => 640,
    owner => foo,
    group => bar,
    content => "Hello world",
}

Que se passe-t-il si le wget échoue ? Comment votre script gérera-t-il cela ? Et que se passe-t-il s'il y a quelque chose après cela dans votre script qui nécessite que $FILE soit là avec le bon contenu ?

On pourrait dire qu'on pourrait simplement mettre echo "Hello world" > $FILE dans le script, sauf que dans le premier exemple, le script doit être exécuté sur le client, alors que Puppet compile tout cela sur le serveur. Ainsi, si vous modifiez le contenu, il vous suffit de le modifier sur le serveur et il le modifie pour autant de systèmes que vous voulez mettre. Et Puppet gère automatiquement les dépendances et les problèmes de transfert pour vous.

Il n'y a tout simplement pas de comparaison possible - les outils de gestion de la configuration appropriés vous font gagner du temps et de la complexité. Plus vous essayez de faire, plus les Shell Shell semblent inadéquats, et plus vous économiserez d'efforts en le faisant avec Puppet.

31voto

kenchilada Points 449

Ce sera une opinion impopulaire, mais les systèmes de gestion de la configuration ne sont pas nécessairement meilleurs. Parfois, la simplicité est vraiment la meilleure solution.

Il existe une courbe d'apprentissage et des frais administratifs liés au système de configuration que vous choisissez. Après tout, vous introduisez une dépendance. Comme avec toute automatisation, vous devez également veiller à ce que la sécurité soit maintenue dans les configurations déployées.

Je n'ai eu que quelques cas où nous avons déployé la gestion de la configuration et où elle s'est arrêtée. C'était toujours lorsqu'il y avait un grand nombre de systèmes avec une configuration répétitive et un besoin d'effectuer des déploiements configurables à l'emporte-pièce.

24voto

ewwhite Points 193555

Vous avez répondu à votre propre question...

L'automatisation devient plus évolutive et formalisée . Puppet et Chef sont considérés comme des standards de nos jours (vérifiez les annonces d'emploi ).

Les Shell Shell bricolés ensemble ont leur place, mais ils sont no évolutive dans le contexte du mouvement DevOps. La lisibilité en fait partie.

14voto

digitalextremist Points 335

Chef facilite grandement la gestion et version la mise en place d'une infrastructure complexe, en particulier dans tout type d'environnement cloud, par rapport au fait de devoir ftp ou scp manuellement un tas de Shell Shell organisés de manière non standardisée. En fonction du nombre de dépendances que vous devez gérer, la taille de ce gain peut varier considérablement, ce qui rend la décision de passer à une solution CM non évidente pour beaucoup de gens.

Le véritable avantage (souvent méconnu) du chef est le suivant idempotence . Être capable d'être certain de l'état d'une ressource quelle que soit la combinaison de recettes exécutées avec des intérêts qui se chevauchent est un énorme avantage par rapport à la configuration Shell Shell. Si vous avez Shell Shell pour la configuration maintenant, demandez-vous combien d'entre eux peuvent être exécutés plusieurs fois sans conséquences involontaires/indésirables ?

Une solution de gestion de contenu appropriée permet de garantir le succès à grande échelle en simplifiant l'automatisation multiplateforme et la collaboration entre les équipes. Bien qu'il soit possible d'accomplir tout cela avec un groupe bien organisé, correctement maintenu et versionné de Shell Shell ; vous devez vous demander " pourquoi ". Chef/Puppet et les technologies similaires ont vu le jour parce qu'un groupe de SysOps talentueux en avait assez de devoir résoudre ces mêmes problèmes encore et encore et a entrepris de nous offrir une meilleure option.

Les pièces maîtresses :

  • Idempotence
  • Facilité de gestion des dépendances (versioning)
  • Organisation normalisée (acceptée au niveau de l'industrie)
  • Abstraction permettant de séparer les tâches de configuration du serveur des détails du niveau système.
  • Capacité à tirer parti de la connaissance de la communauté (qui est garantie pour embrasser tous les principes ci-dessus)

11voto

Volkan Vardar Points 96

Les outils modernes de gestion de la configuration, tels que Puppet et Chef, vous permettent de définir la état d'un système au lieu de s'inquiéter de activités nécessaire pour obtenir un serveur configuré.

Par exemple, votre commande chmod suppose que le fichier existe, que l'utilisateur propriétaire du fichier existe, que les répertoires ont été créés, et ainsi de suite. Votre script doit donc tenir compte de toutes ces conditions préalables.

Les outils de gestion de la configuration basés sur l'état sont plus simples : il suffit de s'assurer que le fichier a les bonnes permissions. La manière d'y parvenir est le problème de l'outil.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X