Je regarde des solutions de déploiement automatisées pour mon équipe et je joue avec le chef depuis quelques jours. J'ai été capable d'obtenir une application Web simple en fonction d'une base rouge rouge VM à l'aide de Chef-Solo.
Notre objectif final est d'utiliser le chef (ou un autre système) pour déployer automatiquement les topologies de l'application au cloud car nous exécutons des constructions. Notre processus fonctionnerait essentiellement comme ceci:
Quels sont les avantages et/ou les cas d'utilisation pour obtenir un serveur de chef de chef?
Y a-t-il des avantages majeurs pour avoir un serveur de chef de chef détenir et acquérir les livres de recettes de SCM vs. à l'aide de Chef-Solo et d'avoir un script qui tire les livres de recettes de SCM?
Je vais orienter cette réponse comme si la question était "quels sont les avantages du chef-solo", car c'est la meilleure façon possible de couvrir les différences entre les approches.
Mon résumé Recommandation est en ligne avec d'autres: Utilisez un CHEF-Server si vous devez gérer un environnement dynamique et virtualisé dans lequel vous allez ajouter et supprimer des nœuds souvent. Un serveur de chefs est également un bon CMDB , si vous en avez besoin. Utilisez Chef-Solo si vous avez un environnement moins dynamique où les nœuds ne changent pas trop souvent, mais les rôles et les recettes seront. La taille et la complexité de votre environnement sont plus ou moins non pertinentes. Les deux abordent très bien.
Si vous déployez Chef-Solo, utilisez un cronjob avec RSYNC, "Git Pull" ou un autre mécanisme de transfert de fichiers idempotent pour maintenir une copie complète du référentiel de chefs de chaque nœud. Le cronjob doit être facilement configurable pour (A) non exécuté du tout et (b) exécuter, mais sans synchroniser le référentiel local. Ajoutez des nœuds/répertoires dans votre référentiel de chef avec un fichier JSON pour chaque nœud. Votre cronjob peut être aussi sophistiqué que vous le souhaitez en ce qui concerne l'identification du bon nodefile (bien que je recommanderais simplement $ (HostName -S) .json. Vous pouvez également créer un compte OPSCode et configurer un client avec le chef hébergé, si pour Aucune autre raison que de pouvoir utiliser un couteau pour télécharger des livres de recettes communautaires et créer des squelettes.
Cette approche présente plusieurs avantages, outre l'évidence "ne pas avoir à administrer un serveur". Votre contrôle source sera l'arbitre final de toutes les modifications de la configuration, le référentiel comprendra tous les nœuds et les lignes de lignes, et chaque serveur entièrement indépendant facilite certains scénarios de test pratiques.
Chef-Server introduit un trou dans lequel vous utilisez le "Couteau de téléchargement" pour mettre à jour un livre de recettes et vous devez corriger ce trou vous-même (par exemple avec un crochet post-validation) ou des changements de site de risque étant écrasé en silence par une personne "Télécharger des couteaux". S une recette obsolète du référentiel local obsolète de son ordinateur portable. Cela est moins susceptible de se produire avec le Chef-Solo, car toutes les modifications seront synchronisées directement sur les serveurs du référentiel principal. La question ici est la discipline et le nombre de collaborateurs. Si vous êtes un développeur solo ou une très petite équipe, le téléchargement de livres de cuisine via l'API n'est pas très risqué. Dans une équipe plus grande, elle peut être si vous ne mettez pas de bons contrôles en place.
De plus, avec Chef-Solo, vous pouvez stocker tous les rôles de vos nœuds, les attributs personnalisés et les lignes de roulement comme fichiers nœud.json dans votre référentiel principal de chef. Avec le chef-serveur, les rôles et les roulements sont modifiés à la volée à l'aide de l'API. Avec Chef-Solo, vous pouvez suivre ces informations dans le contrôle de la révision. C'est là que le conflit entre des environnements statiques et dynamiques peut être clairement vu. Si votre liste de nœuds (peu importe combien de temps cela pourrait être) ne change pas souvent, si ces données de contrôle de révision sont très utiles. D'autre part, si vous reprochez de nouveaux nœuds et que vous détruisez de nouveaux nœuds (ne jamais voir leur nom d'hôte ou leur nom d'hôte ou la FQDN) le maintien du contrôle de révision n'est qu'un problème inutile, et avoir une API à modifier est très pratique. Chef-Server dispose également de fonctionnalités entières vers la gestion des environnements de cloud dynamiques, comme l'option Nom sur "Couteau bootstrap" qui vous permet de remplacer FQDN comme moyen par défaut d'identifier un nœud. Mais dans un environnement statique, ces caractéristiques ont une valeur limitée, notamment par rapport aux rôles et aux rouleurs en contrôle de la révision avec tout le reste.
Enfin, les environnements de test de recette peuvent être mis en place à la volée pour presque pas de travail supplémentaire. Vous pouvez désactiver les cronjobs en cours d'exécution sur un serveur et apporter des modifications directement à son référentiel local. Vous pouvez tester les modifications en exécutant Chef-Solo et vous verrez exactement comment le serveur se configurera en production. Une fois que tout est testé, vous pouvez enregistrer les modifications et réactiver les cronjobs locaux. Lorsque vous écrivez des recettes, cependant, vous ne seriez pas en mesure d'utiliser l'API "Search", ce qui signifie que si vous souhaitez écrire des recettes dynamiques (par exemple, Whibalancer), vous devrez pirater cette limitation, rassembler les données des fichiers JSON dans Vos nœuds/répertoires, qui sont susceptibles d'être moins pratiques et manqueront certaines des données disponibles dans la CMDB complète. Une fois encore, des environnements plus dynamiques favoriseront l'approche axée sur la base de données, moins d'environnements dynamiques ira bien avec les fichiers JSON sur le disque local. Dans un environnement de serveur où un chef exécuté doit effectuer des appels d'API dans une base de données centrale, vous dépendez de la gestion de tous les environnements de test dans cette base de données.
La dernière peut également être utilisée en cas d'urgence. Si vous résolvez un problème critique sur les serveurs de production et que vous le résolvez avec une modification de la configuration, vous pouvez modifier immédiatement le référentiel du serveur, puis le pousser en amont vers le maître.
Ce sont les principaux avantages du Chef-Solo. Il y en a d'autres, comme ne pas avoir à administrer un serveur ou de payer pour chef hébergé, mais ce sont des préoccupations relativement mineures.
Pour résumer: Si vous êtes dynamique et très virtualisé, CHEF-Server fournit un certain nombre d'excellentes caractéristiques (couvertes ailleurs) et la plupart des avantages du chef-solo seront moins perceptibles. Cependant, il existe des avantages définis et souvent intrinsèques au Chef-Solo, en particulier dans des environnements plus traditionnels. Notez que être déployé sur le nuage ne signifie pas nécessairement que vous avez un environnement dynamique. Si vous ne pouvez pas, par exemple, ajoutez plus de nœuds à votre système sans libérer une nouvelle version de votre logiciel, vous n'êtes probablement pas dynamique. Enfin, à partir d'une perspective de haut niveau, un CMDB peut être utile pour n'importe quel nombre de choses uniquement liées tangentiellement liées à l'administration et à la configuration système telles que la comptabilité et le partage d'informations entre les équipes. L'utilisation de Chef-Server peut valoir la peine pour cette fonctionnalité seule.
DIVULGATION: Je travaille pour OPSCODE.
L'avantage majeur du serveur Chef sur Solo est la possibilité d'utiliser la recherche avec votre infrastructure. L'exemple classique est un équilibreur de charge avec des serveurs Web. L'équilibreur de charge peut mettre à jour automatiquement sa configuration car des serveurs Web sont ajoutés et supprimés de l'infrastructure, simplement en les recherchant. Solo est juste que, des machines simples, tandis que Chef Server apporte la possibilité d'interroger des choses comme des "toutes les machines avec plus de 4 gigues de RAM" ou "le maître de la base de données".
Chef Server vous offre également la possibilité de gérer votre infrastructure sans copier des builles autour de votre infrastructure avec la console de gestion et de gérer les machines qui fonctionnent quelles versions de livres de livres avec des environnements. Il y a d'autres avantages, mais ceux-ci sont ceux de la tête. Si vous souhaitez essayer le serveur Chef sans l'installer, inscrivez-vous simplement pour un compte Chef Hosted OPSCODE, les 5 premiers nœuds sont gratuits.
chef-Server gère les livres de livres et les données de configuration pour vos nœuds.
Vous ajoutez des livres de recettes à Chef-Server à l'aide de l'outil Couteau, puis donnez à chaque nœud une liste d'exécution de recettes afin de saisir les livres de recettes dont ils ont besoin lorsque le nœud se définit à l'aide de Chef-Client. Étant donné que Chef-Client fonctionne en arrière-plan, vos nœuds vérifieront périodiquement s'il y a mis à jour des livres de recettes dans votre chef-serveur.
chef-Server contient également vos données de configuration et vos variables afin que vous puissiez modifier les paramètres de vos nœuds pour récupérer automatiquement. C'est bon pour des réglages plus dynamiques qui ne devraient pas ou ne peuvent pas être codés dans vos recettes.