Remarque: il y a beaucoup de questions théoriques.
Récemment, je lis à propos de Puppet (et des systèmes similaires), ce qui, comme je le crois, peut beaucoup faciliter mon travail. Mais j'essaie - et malheureusement pas - de comprendre ce que je peux "marionnettiser". Je peux imaginer des "clouds" ou des clusters HA, où se trouve la même configuration sur plusieurs serveurs. Mais qu'en est-il des postes de travail? J'ai un pc (centos avec kvm), un ordinateur portable (fedora) et un serveur personnel, peut-il (ou doit-il) être marionnettisé? Quels sont les (dés) avantages? Ou dans notre entreprise, nous avons des centaines de serveurs (principalement avec des centos), mais chacun d'eux est un peu différent. Vous ne pouvez pas décider s'il vaut mieux avoir beaucoup de configurations sur un seul endroit. (Dés) avantages? Je serai heureux de toutes vos opinions ou liens avec ce sujet.
Réponses:
La mesure dans laquelle vous pouvez marionnettiser un environnement entier dépend de plusieurs variables:
Il est certainement possible de marionnettiser tout ce qui peut être marionnettisé, mais pour y arriver, il faut la bonne culture et l'adhésion de tous ceux qui peuvent toucher un appareil compatible avec les marionnettes. Certains appareils sont fondamentalement difficiles à gérer de cette façon, des choses comme les postes de travail et la marionnette est meilleur comme outil de transfert que comme moteur de gestion de configuration.
Puppet est génial lorsque vous gérez une flotte de machines virtuelles faisant toutes la même chose. Victoire totale, et pas beaucoup d'efforts pour y arriver.
À l'autre extrémité du spectre, vous avez ce que j'avais lors de mon dernier emploi, soit 200+ serveurs fournissant 130 services et seulement un petit groupe d'entre eux le faisant avec plus d'une machine. Il y a absolument des entreprises (et des universités) qui ont lancé ce genre de choses, mais cela demande beaucoup d'efforts et nécessite beaucoup d'adhésion. Cela nécessite que la première étape de votre processus de déploiement de nouvelle machine ne soit pas «Installer le système d'exploitation», mais «créer des manifestes».
En fin de compte, c'est un problème culturel d'effort vs d'efficacité que vous devrez résoudre parmi tout votre personnel informatique.
la source
Tout ce qui est raisonnablement similaire sur tous les systèmes (ou un sous-ensemble d'entre eux), ou que vous pouvez baser un modèle sur un fait dont vous pouvez vous sortir,
facter
est un jeu équitable.Les choses vraiment uniques que vous ne devriez probablement pas déranger et devraient simplement servir les configurations à partir d'un fichier.
Ce qui tombe dans l'une ou l'autre catégorie est une décision que nous ne pouvons pas prendre sans connaître intimement votre environnement, c'est donc à vous de comprendre.
la source
Je pense que d'autres ont couvert le pourquoi donc je vais essayer le comment. Je pense qu'en comprenant comment quelqu'un pourrait utiliser Puppet pour faire ce que vous voulez, cela rendra la décision plus claire.
Faites d'abord le cas de base
Votre module Puppet pour Apache ne devrait pas faire grand-chose par défaut. Installez Apache, configurez-le à une norme minimale et démarrez le service. Faites en sorte que cela fonctionne sur toutes les distributions que vous devez prendre en charge.
Ajoutez de la flexibilité en second
Nous devons ajouter des vhosts. Vous vous retrouverez avec un système qui peut supprimer des fichiers ou les supprimer d'un ensemble de répertoires conf.d ou vhosts.d / en fonction de vos besoins. Même chose avec l'activation ou la configuration des modules.
Utilisez des classes de rôles ou de groupes d'hôtes pour lier vos blocs de construction
Je pense que la meilleure façon d'utiliser Puppet est de s'assurer qu'il est additif. En utilisant les exemples ci-dessus, nous devrions avoir un module qui
Plutôt que de surcharger notre module Apache par défaut pour faire exactement ce dont nous avons besoin pour un hôte ou un groupe particulier, nous devons gérer ceci est une classe de rôle ou de groupe d'hôtes.
Encore une fois additif.
Mettre des cas spéciaux à Hiera
Je suis un grand fan de laisser Hiera de Puppet, le considérer comme une base de données pour Puppet, stocker les bits spéciaux. Si un certain hôte ou groupe d'hôtes a besoin d'un paramètre spécial, mettez d'abord une valeur par défaut saine dans le module afin que les utilisateurs normaux n'aient pas besoin de le savoir. Ensuite, insérez des données pour ces hôtes ou groupes d'hôtes spéciaux afin que Hiera puisse les consommer et les transmettre à Puppet si nécessaire.
Mon cas d'utilisation est le port d'écoute. Certains serveurs ont un vernis ou un haproxy devant eux. Par défaut, le module Puppet dispose du port 80 d'Apache, mais si Hiera trouve des données, il remplacera cette valeur par défaut.
la source
Je suis actuellement dans la transition entre Puppetize des systèmes raisonnablement similaires à Puppetize tout et je suis convaincu qu'à long terme, Puppetize tout est une meilleure approche.
Si vous contrôlez la version de vos manifestes Puppet (nous le faisons tous, à droite), vous bénéficiez de tous les avantages du contrôle de version pour votre infrastructure. Votre équipe devient ingénieur d'exploitation. Ceci est aussi important pour les systèmes spéciaux et ponctuels que pour les élevages homogènes de bovins. Vous obtenez un journal de qui a changé quelque chose, quand ils l'ont changé, quel était le changement exact et la possibilité d'annuler le changement.
Personnellement, je trouve aussi que me forcer à faire chaque changement via Puppet me fait réfléchir plus attentivement au changement. Lorsque j'écris des manifestes, je suis plus attentif à chaque changement que je ne pirate généralement la ligne de commande.
Vos modules Puppet seront également améliorés. Avez-vous plus d'un module Nginx? Cela signifie peut-être que votre module Nginx n'est pas génial, et vous devez le rendre suffisamment flexible pour répondre à tous vos besoins particuliers. Au moins, résumez les similitudes dans un module Nginx de base que vous étendez pour les modules "personnalisés".
De plus, dans quelle mesure êtes-vous confiant de pouvoir restaurer tous vos serveurs à besoins spéciaux à leur état actuel (en ce qui concerne la configuration) lorsque la catastrophe se produit? Si chaque modification nécessaire pour obtenir un serveur Ubuntu d'usine dans votre wiki interne est marionnettisée, vous pouvez facilement reconstruire l'état actuel de votre wiki, y compris l'ajustement de la mémoire Tomcat d'hier par Bob.
Enfin, cela peut être très difficile. La gestion de nombreux serveurs très différents peut conduire à un code hacktastic Puppet si vous ne prenez pas le temps de bien faire les choses. Si vous n'utilisez pas Puppet Enterprise, pensez à hiera et / ou à une ENC telle que Foreman pour séparer vos données de vos manifestes. Chaque jour, marionnette quelque chose d'autre. Demandez à un collègue de conduire pendant que vous expliquez comment cela fonctionne dans Puppet. Chaque changement deviendra plus facile.
la source