Comment Juju «coexiste-t-il» avec Chef, poussant le processus d'automatisation «un peu plus loin»?

15

Il est clair d' après ce post que Juju se trouve sur une couche différente de celle de Chef Server. Juju se situe au niveau de la couche d' orchestration ou de service , tandis que Chef se situe davantage au niveau de la couche de serveur ou de configuration individuelle .

Dans l' une des pages principales de Canonical sur Juju , il est indiqué que Juju est conçu pour "coexister" avec des outils comme Chef et Puppet, poussant le processus "un peu plus loin". J'ai parcouru Internet au cours des dernières semaines à ce sujet et je ne peux pas trouver une bonne explication de la façon dont un outil comme Chef coexistera avec Juju.

Donc, pour décomposer la question primordiale dans le titre: (intérêt particulier pour Juju de travailler avec un serveur Chef)

  • Quel est un exemple de charme "écrit en Chef"? Est-ce simplement un charme écrit en bash qui appelle ensuite la chef-solocommande? Si oui, un charme peut-il appeler la chef-clientcommande pour travailler de concert avec un serveur Chef?
  • Où est le chevauchement entre Juju et Chef? Par exemple, le charme apache2 a son config-changedcrochet où il fait des changements de configuration qui, dans le monde du Chef, auraient lieu dans une recette en appliquant un fichier de modèle. Si un charme Juju devait fonctionner avec un livre de recettes Chef sur le déploiement d'un service apache2 (cluster), il semblerait presque qu'un charme "apache2-chef" devrait être écrit afin que vous puissiez séparer les tâches. Dans ce cas, le charme d'apache2 dans le Charm Store serait moins qu'utile.
  • Si des rôles Chef sont appliqués aux nœuds (unités de service) déployés / gérés par Juju et que votre administrateur système décide de modifier les règles de pare-feu pour un rôle serveur particulier et que cela se fait dans le rôle Chef, Juju va-t-il jamais remplacer ces modifications?
  • Plus simplement, Juju peut-il être un wrapper Chef Server, comme Ironfan ?

Je considère Chef Server comme le comment tandis que Juju peut faire le comment , mais apporte également quoi à la table. Cela signifie que l'état réel actuel des services et des machines peut être interrogé et utilisé. Vous ne pouvez pas faire cela dans Chef Server. Mon objectif est d'intégrer la capacité de sensibilisation et d'orchestration des services de Juju dans une infrastructure gérée par Chef Server.

Il semble presque qu'un ensemble complet de charmes devrait être écrit là où toutes les tâches / informations de configuration gérées par Chef sont omises.

J'aimerais entendre les pesées de quelqu'un chez Canonical (comme Jorge Castro) et d'Opscode (comme A. Jacob ou J. Timberman).

Ian D. Rossi
la source

Réponses:

13

des questions géniales!

le tl; dr

Je voudrais décomposer vos questions en quelques commentaires ... Tout d'abord, voici quelques approches générales pour intégrer chef et juju:

  • les crochets charms peuvent utiliser des recettes de chef existantes qui fonctionnent en solo sur les unités de service (recommandé)

  • les unités de service juju s'inscrivent auprès d'un chef-serveur existant à l'aide d'un service subordonné chef-nœud

Ces idées n'ont pas encore été mises en œuvre / testées pour le chef, mais les équivalents de marionnettes existent.

la réponse ... euh ... pas si courte

Voici un peu plus une ventilation de deux approches pour intégrer chef et juju:

Juju comme top-dog

Ici, juju dirige le spectacle. La plus grande valeur apportée par juju est la coordination des événements lors de la gestion de configuration distribuée ... d'où le surnom "orchestration de service". Les charmes Juju se composent de crochets qui sont appelés par juju au "bon moment" lors de la coordination de la gestion des services. La mise en œuvre de ces crochets est à peu près ouverte. Ce sont des scripts shell, du code source, des manifestes de marionnettes ou ... des recettes de chef.

Juju décompose des morceaux de n'importe quelle configuration de service en:

  • "installation" .. les bits qui sont spécifiques à l'installation d'un service particulier sur un nœud

  • "relation" .. les bits de configuration nécessaires pour relier ce service à un autre service

La clé pour utiliser des recettes de chef comme implémentations de crochets est exactement cela ... vous devez vous assurer que les recettes que vous utilisez respectent cette séparation des préoccupations. Sinon, rien n'empêche d'utiliser des livres de cuisine standard. Vous pouvez tirer parti des recettes existantes que vous avez dépensé du temps / de l'argent pour développer .... Vous devez simplement vous assurer que vous pouvez appeler les éléments spécifiques à la relation séparément des éléments spécifiques à l'installation.

Nous avons besoin de quelques exemples de cela, mais je pense que ce sera un chef populaire b / c qui a un excellent dsl, un excellent outil de création de modèles et est beaucoup plus agréable à utiliser que bash lors de l'écriture d'une configuration complexe. Pour une config simple, les recettes du chef sont un peu trop imo, donc cette méthode d'intégration est à peu près la meilleure des deux mondes ... et a de sérieuses jambes à l'avenir.

Chef en tant que top-dog

L'idée ici est d'intégrer les services juju dans une infrastructure gérée chef-serveur existante. Pour ce faire, vous devez écrire un charme subordonné chef-nœud. Ce service subordonné serait rattaché aux services juju principaux et enregistrerait effectivement ces services en tant que nœuds (en particulier des rôles) auprès du serveur chef. Les sous-marins peuvent être attachés au démarrage du service juju, ou à tout moment plus tard dans le cycle de vie de chaque service.

Je pense que ce serait assez similaire au sous-nœud de marionnettes. Toutes les clés, rôles, etc. nécessaires seraient spécifiés via la configuration du charme subordonné chef-nœud. Je commencerais par là. Une approche plus sophistiquée consisterait à ce que le sous-chef-nœud interroge à la fois le service principal auquel il est attaché et son chef-serveur pour déterminer dynamiquement les rôles, mais ce serait un peu plus difficile que de simplement les spécifier dans la configuration du sous-marin.

Des avis

Je recommanderais certainement la méthode 1 ci-dessus, si possible. Avoir la couche de coordination sur le dessus des outils de configuration fonctionnera probablement bien à long terme. Inutile de dire que les infrastructures du monde réel peuvent être un combo ou une variation des deux approches pendant un certain temps ... en particulier pendant la migration. La coexistence prévue à l'aide de la méthode 2 ne fonctionnerait probablement que si les composants gérés par les deux outils étaient quelque peu orthogonaux entre eux. Je ne sais pas exactement à quoi cela ressemblerait. Peut-être que juju et chef gèrent des services séparés relativement découplés? Je soupçonne que cela pourrait bien fonctionner pour laisser juju gérer les services primaires et que le chef gère plus d'aspects de l'infrastructure. Je ne sais pas. C'est une discussion un peu plus longue :)

Remarque ... vous pouvez également utiliser juju pour gérer le chef-serveur lui-même ... même les grandes installations complexes multi-niveaux chef-serveur. Je n'ai pas regardé le charme chef-serveur récemment, mais s'il ne gère pas actuellement la hiérarchisation et la séparation des services, il peut certainement être fait pour.

Je serais ravi de voir plus d'exemples des deux types d'intégration de chef mentionnés ci-dessus ... cela fait partie de ma liste de souhaits / tâches depuis un certain temps, mais n'a pas encore atteint une hauteur suffisante en priorité pour se faire ... s'il vous plaît, aidez-moi si ça t'intéresse!

ok, c'est une bonne partie de la randonnée:) ... Commençons par là, puis nous pourrons entrer plus en détail dans les blocs de commentaires suivants.

m_3
la source
des trucs super ici. "Je soupçonne que cela pourrait bien fonctionner pour laisser juju gérer les services primaires et que le chef gère plus d'aspects d'infrastructure." C'est ce qui m'intéresse vraiment, car nous partageons ce même soupçon. Comme vous l'avez dit, le DSL et les modèles de Chef sont parfaits pour la configuration. Cependant, il existe d'autres aspects de Chef Server (sacs de données) qui seraient difficiles à abandonner, dans votre première méthode. Juju, étant au niveau du service, devrait être le meilleur chien, mais je pense que cela devrait permettre à Chef de faire ce qu'il fait le mieux dans le modèle Chef Server. Doit fonctionner pour les développeurs et les administrateurs. Mais peut-être pas besoin de Chef Server.
Ian D. Rossi