110 votes

Comment les petits peuvent-ils apprendre et utiliser efficacement Puppet ?

Il y a six mois, dans notre projet à but non lucratif, nous avons décidé de commencer à migrer notre gestion de système vers un environnement contrôlé par Puppet car nous prévoyons une augmentation substantielle du nombre de nos serveurs d'ici un an.

Depuis que la décision a été prise, nos informaticiens sont devenus un peu trop agacés un peu trop souvent. Leurs principales objections sont :

  • "Nous ne sommes pas des programmeurs, nous sommes des administrateurs système";
  • Les modules sont disponibles en ligne mais beaucoup diffèrent les uns des autres; les roues sont souvent réinventées, comment décider lesquelles choisir;
  • Le code dans notre référentiel n'est pas assez transparent, pour comprendre comment quelque chose fonctionne, ils doivent parcourir de manière récursive des manifestes et des modules qu'ils ont peut-être même écrits il y a un certain temps;
  • Un nouveau démon nécessite l'écriture d'un nouveau module, les conventions doivent être similaires à celles des autres modules, un processus difficile;
  • "Laissons simplement tourner et voyons comment ça marche";
  • Des tonnes d'extensions à peine connues dans les modules de la communauté : 'trocla', 'augeas', 'hiera'... comment nos administrateurs système peuvent-ils suivre?

Je comprends pourquoi une grande organisation enverrait ses administrateurs système suivre des cours de Puppet pour devenir des maîtres de Puppet. Mais comment les plus petits acteurs pourraient-ils apprendre Puppet à un niveau professionnel s'ils ne suivent pas de cours et l'apprennent essentiellement via leur navigateur et leur éditeur?

5voto

fartheraway Points 4886

Je travaille également pour une organisation à but non lucratif et j'étais responsable d'introduire initialement des boîtes Linux en interne et peu de temps après Puppet pour les gérer. Il y a quelques choses spécifiques que nous avons faites qui ont vraiment aidé à faire avancer les choses.

Tout d'abord, j'ai essayé de rester à l'écart des modules tiers. Les outils intégrés gèrent 90% de notre gestion. Le plus grand utilitaire tiers que j'utilise est le module pare-feu. Tous les faits personnalisés, etc. sont développés avec toute l'équipe impliquée. Nous avons développé un module de modèle et maintenons la gestion des fichiers, des paquets, des services, etc. tous standardisés sur ce modèle.

Deuxièmement, après avoir standardisé l'utilisation des modules intégrés, nous avons commencé à utiliser Git et Crucible d'Atlassian - gratuit pour les organisations à but non lucratif, au passage - pour effectuer des revues de tous les changements de configuration. Cela fournit la transparence souhaitée.

Troisièmement, j'ai automatisé la configuration de Puppet afin que de nouveaux hôtes puissent être ajoutés automatiquement avec un ensemble par défaut d'options. Il existe plusieurs manières de résoudre cela. Comme j'avais déjà un environnement Kickstart complet, j'ai choisi d'ajouter un script là-bas.

4voto

user269867 Points 408

"Nous ne sommes pas des programmeurs, nous sommes des administrateurs système"

Comme les temps ont changé, pour le pire : un barbu comme moi était attendu d'être un meilleur programmeur que des programmeurs professionnels, sinon n'aurait jamais pu passer pour un administrateur système.

Maintenant, nous avons des "administrateurs système", qui sont essentiellement des utilisateurs de bureau Windows qui ont à un moment donné basculé vers Linux et ne peuvent pas programmer, et ne trouvent rien de mal à cela.

L'éléphant dans la pièce est pourquoi la direction tolère une telle attitude destructrice. Destructrice pour qui ou quoi? Pour l'entreprise et pour l'infrastructure.

Revenons au sujet de Puppet[, CFEngine, Chef] : dès qu'une solution comme celle-ci est mise en place, on perd. Tout le monde perd. Pourquoi? Parce que celui qui propose l'idée n'est pas capable de concevoir une gestion de configuration encapsulée sous forme de packages système Kickstart[, JumpStart, Automated Installer, AutoYaST, Ignite-UX, NIM] propres et bien organisés. Lorsque vous devez utiliser un outil de piratage automatisé comme Puppet (ou Chef, ou CFEngine), cela signifie que vous manquez de compétences pour concevoir et mettre en œuvre un processus qui, par ce même design, appliquerait des systèmes entièrement gérés, automatiques et non interactifs.

Un autre point important est que si vous devez avoir Puppet ou une telle solution pour corriger quelqu'un qui pirate la configuration du système ou de l'application à la main, cela revient également à ne pas avoir l'expérience nécessaire pour concevoir un processus, et dans ce processus un cadre où la configuration est emballée dans des composants distincts. En effet, celui qui met en œuvre Puppet et ses semblables, n'a aucune notion de propriétaires de composants, de versions, de gestion de configuration, de Modèle de Maturité des Capacités. Ce problème se propage rapidement dans l'industrie.

Travailler avec Puppet m'a également aidé à apprendre Ruby, qui a remplacé Bash comme mon langage de programmation système par défaut."

Pourquoi Ruby est-il nécessaire, alors qu'une gestion de configuration complète de bout en bout peut être encapsulée dans les sections preinst, postinst, prerm, et postrm des packages système, simplement en utilisant des programmes shell Bourne, AWK, et sed ? Que quelqu'un s'embarrasse à apprendre un langage ésotérique de Ruby, et un dialecte de celui-ci dans le contexte de Puppet, est totalement inutile. Le problème de la gestion de configuration est facile à résoudre (et de fait, il a été résolu) avec des programmes shell et AWK, et un peu de sed(1) ici et là en guise de colle.

C'est formidable de voir votre manifeste Puppet configurer une machine entière ou un nouveau service à partir de zéro.

C'est encore plus impressionnant de le voir fait par Kickstart, AutoYaST, ou JumpStart, sans une seule ligne de code, et de pouvoir interroger le système d'exploitation en utilisant les outils intégrés, sans avoir besoin de logiciels ésotériques supplémentaires, aucune architecture client-serveur requise (SSH est largement suffisant, bien plus que suffisant), et de voir votre système d'exploitation être conscient de chaque changement qui lui est apporté.

5. Séparez le code des données. Il s'agit de l'un des concepts les plus difficiles à apprendre. Inclure des valeurs telles que les hôtes de surveillance dans le code de votre module est mauvais. Les mettre dans un magasin de données (base de données, yaml (Hiera l'utilise par défaut), csv, peu importe) que vos modules peuvent consommer est bon. Un exemple est une application web qui utilise Mysql. Ce que cela permet, c'est la possibilité de pousser le code et les données séparément. Cela simplifie votre processus de développement.

...Ou vous pourriez simplement modéliser vos fichiers de configuration avec des variables shell, y compris des backquotes (par exemple ls -1...) et écrire un script shell qui utilise AWK pour appeler eval(1) et développer toutes les variables dans le modèle, en exploitant ainsi le même puissant analyseur dont disposent les shells en interne. Pourquoi compliquer les choses, alors qu'elles peuvent être vraiment, vraiment simples ? Où stockerez-vous les valeurs de configuration ? Eh bien, où bon vous semble, comme par exemple dans les fichiers pkginfo(4), ou une base de données comme Oracle, ou à peu près n'importe où. Pas besoin de solutions ultra complexes. La bibliothèque que je mentionne ci-dessus pourrait simplement être sourcée depuis les sections preinst ou postinst des packages système, éliminant ainsi la redondance et exploitant un morceau de code central...

Mais par-dessus tout, je trouve que la citation ci-dessus est un exemple de la prochaine génération d'administrateurs système ayant besoin d'être formée non pas par des administrateurs système, mais par des ingénieurs système. Trouvez-vous un barbu et engagez-vous comme apprenti.

1 votes

Vous semblez avoir oublié votre réponse à la question de l'auteur.

0 votes

Cette réponse semble être principalement une discussion sur les opinions, les attitudes et les outils, et ne répond pas vraiment à la question posée.

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