Marionneter tout ou pas?


10

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.


Je conseillerais de ne pas essayer de "marionnettiser" aucun de vos systèmes Windows. Oh, et en lisant notre FAQ sur le type de questions que vous devriez poser ici.
HopelessN00b

7
La quantité de choses que vous marionnettes et la quantité de choses qu'elles ont devraient être directement proportionnelles à la quantité que vous vous souciez de la tâche accomplie pour vous. Commencez petit, lancez simplement la configuration ntp ou rsyslog. Puis construisez à partir de là si et comme vous en avez besoin, quand vous en avez besoin.
Sirex

1
Étant donné que vous avez déjà beaucoup de serveurs à ma place, ma suggestion est que vous commenciez simplement avec les bits qui sont communs à chaque système, puis que vous commenciez à entrer dans des choses plus spécifiques en fonction du temps.
Zoredache

1
La prise en charge de Windows s'est considérablement améliorée dans les versions récentes de Puppet. Je gère des centaines de nœuds Windows avec Puppet. Puppet sur les nœuds POSIX est beaucoup plus simple et puissant, mais l'utilisation de Puppet pour au moins certaines choses sur Windows peut être incroyablement utile.
czervik

Réponses:


16

La mesure dans laquelle vous pouvez marionnettiser un environnement entier dépend de plusieurs variables:

  • La volonté du personnel d'automatisation d'écrire l'automatisation pour tous. peu. chose.
  • Le conditionnement culturel qui permet "Je vais juste changer cette chose, c'est une chose de toute façon" pour devenir "Je vais juste changer cette chose dans ce manifeste de marionnettes, et l'appliquer maintenant; c'est juste une chose unique . "
  • Le degré d'hétérogénéité dans un environnement.

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.


13

MARIONNETTE TOUTES LES CHOSES

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, facterest 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.


6

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

  1. Installer Apache
  2. Définir les configurations de base
  3. Ajouter des vhosts à Apache
  4. Configurer tous les paramètres supplémentaires
  5. Démarrez Apache

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.

class role::web_cust1 {
  include apache
  apache::vhost {'www.domain.com': }
  apache::vhost {'www.domain2.com': priority => '99', }
  include php
  include php-fpm
  include mysql
}

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.


J'utilise la hiérarchie des modules de rôle et cela fonctionne bien. Cela facilite la création d'un environnement dans lequel plusieurs serveurs peuvent jouer plusieurs rôles (c'est-à-dire que certains des serveurs role :: web peuvent également être role :: storage).
Andy Shinn

5

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.