Question Pouvez-vous utiliser la gestion de la configuration (Puppet / Chef) derrière un pare-feu?


Je suis chargé de la conception et de la mise en œuvre de la gestion de la configuration (Chef) pour une infrastructure où les serveurs de production sont entièrement segmentés et isolés derrière une boîte de connexion.

 ---------------------------------
| Production | Staging, Test, Dev |
 ---------------------------------

Le seul moyen de mettre des fichiers en production est avec une connexion sftp. Seules deux personnes ont la capacité de passer directement à la production. Une exception pourrait être faite pour permettre à un système d'automatisation étroitement contrôlé (comme Jenkins) de copier des fichiers en production.

Normalement, je vous recommande de configurer un seul serveur Chef dans le cloud, mais les serveurs de production ne peuvent pas avoir d'accès externe. (Sans convaincre certaines personnes très réticentes).

Une solution que je vois est d'utiliser deux serveurs Chef

 ---------------------------------------
| chef-production | chef-local         |
| Production      | Staging, Test, Dev |
 ---------------------------------------

L'utilisation de deux serveurs de chef pose des problèmes que je ne sais pas vraiment résoudre.

  • Comment puis-je synchroniser les livres de recettes de la production et des serveurs locaux?
  • Comment pourrions-nous ajouter de nouveaux noeuds de production au serveur de chef de production, sans que l'un des administrateurs ait à exécuter la commande knife?
  • Comment pourrions-nous apporter des modifications aux étiquettes de données en production?

Je suis ouvert à d'autres suggestions. J'envisage de ne pas utiliser de serveur principal et d'utiliser plutôt chef-zero ou chef-solo. D'après ce que j'ai compris, ce n'est pas la meilleure solution lorsque plusieurs environnements sont utilisés.


5
2018-04-22 22:17


origine




Réponses:


Je déteste ce genre d’environnement sans confiance, mais je l’ai compris; Vous devez faire face aux besoins des entreprises ...

Vous pouvez résoudre le problème de maintien de synchronisation des livres de cuisine avec un pipeline CI / CD pour vos livres de cuisine, de sorte qu'ils soient déployés automatiquement sur les deux serveurs Chef. Vous voudrez peut-être tirer parti de choses telles que le repérage minutieux des livres de recettes, mais rendre disponible les mises à jour (même si elles ne sont pas utilisées activement) ne pose pas de problème. Sous-chef est un outil que ma société a ouvert à source ouverte pour aider les gens à démarrer l'automatisation du test des livres de recettes et de leur téléchargement sur un serveur Chef. Il faudrait le modifier pour prendre en compte plusieurs serveurs principaux, mais la majorité d’entre eux sont là.

Étant donné que Chef12 possède les deux fonctionnalités pour "Organisations" et "Contrôle d'accès basé sur les rôles" (chacune d'entre elles n'étant auparavant disponible que dans le produit payant), vous pouvez établir des autorisations de sorte que seules les personnes spécifiées puissent modifier l'environnement de production, ou que Production était une organisation distincte située sur le même serveur Chef.

L'ajout de nouveaux nœuds au serveur Prod Chef nécessitera une sorte d'amorçage. Les détails varient considérablement en fonction de votre environnement. Toutefois, si l'installateur est installé dans cet environnement, vous pouvez le définir en tant que tâche à l'exécution unique lorsque vous démarrez ou déployez à partir d'un modèle de machine virtuelle. Si vous avez des outils pour faire tourner des machines virtuelles via une API, il ne devrait pas être trop pénible de l'étendre à l'ajout des commandes d'amorçage. (Chef est après tout un système basé sur une API.)

Votre question sur les étiquettes de données est trop large pour ici.

Gardez à l’esprit qu’avoir plusieurs chefs-serveurs nécessitera de séparer knifeconfigs, vous devrez donc vous rappeler de passer un indicateur de configuration pour chaque élément ou des commandes d’emballage pour knife associer un fichier de configuration. À moins bien sûr que vous ne disposiez de l’automatisation nécessaire knife.

Chef-Zero est destiné aux tests locaux où vous utiliseriez Chef-Solo, mais vous voulez chercher. Cela n'a pas vraiment de sens pour gérer vos boîtes de prod.

Certaines entreprises utilisent Chef-Solo pour leurs environnements non testés de manière "au besoin". Personnellement, je n'aime pas ça. J'aime Solo pour des tests locaux (comme avec Vagrant), ou si vous configurez des systèmes avec l'intention qu'ils soient immuables. Si vous allez avoir des serveurs de longue durée (en grande partie sans état et fréquemment détruits, Chef-Server standard vous aidera à empêcher les configs de dériver avec le temps.


4
2018-04-23 00:33



Bonnes idées, je ne sais pas comment ajouter une liste de tâches à un nœud, lorsque je ne peux pas exécuter de couteau moi-même. Jenkins ou quelque chose pourrait-il me lancer un couteau? - spuder
Si vous vouliez envelopper des choses que vous utiliseriez autrement knife pour dans un outil, je considérerais utiliser Rundeck. Vous pouvez également définir une liste de lecture et un environnement sur un nœud dans le cadre de chef-bootstrap. - gWaldo
J'aime particulièrement Rundeck en général, car vous pouvez utiliser l'authentification LDAP, gérer les autorisations sur les projets et les travaux, et le journal http vous fournit des traces d'audit de "qui a fait quoi, quand". - gWaldo