Meilleure stratégie pour maîtriser les versions des livres de cuisine du chef

10

Je cherche des idées sur la gestion des versions des livres de cuisine du chef. Je sais que vous épinglez des versions spécifiques dans l'environnement, mais je ne sais pas comment procéder.

Nous utilisons un bibliothécaire-chef qui installe des livres communautaires tiers dans le dossier des livres de cuisine. Nous ne touchons jamais à ces livres et nous mettons simplement à jour des versions plus récentes de temps en temps.

Nous avons également nos livres de recettes spécifiques au site d'où nous incluons ceux de la communauté ( include_recipe).

Théoriquement, nous pourrions spécifier des versions spécifiques des livres de communauté dont dépendent nos livres personnalisés, puis définir nos versions de livre de cuisine dans la configuration de l'environnement, mais le problème est que ces livres de communauté peuvent s'appuyer sur d'autres livres sans versions spécifiées. Et cette dépendance imbriquée profonde pourrait continuer.

Il n'y a donc aucune garantie que lorsque vous téléchargez un livre de recettes sur le serveur du chef, cela ne cassera pas la production, car les livres de cuisine dépendants peuvent également changer.

La seule solution que je peux voir pour le moment est de spécifier chaque version de livre de cuisine que nous utilisons dans la configuration de l'environnement, y compris les communautés et les personnalisées. Mais ensuite, je dois parcourir chaque livre de cuisine et trouver ces versions.

Nous effectuons également des mises à jour de bibliothécaire-chef de temps en temps et j'imagine qu'il pourrait devenir difficile de retrouver les versions qui ont changé et de ne pas oublier de mettre à jour la version dans l'environnement le moment venu.

Veuillez partager votre expérience et vos meilleures pratiques. Je suis sûr que ce sera super utile pour d'autres personnes.

gansbrest
la source

Réponses:

11

Ce n'est pas longtemps après que j'ai commencé à utiliser Chef sérieusement que je me suis heurté à ces mêmes problèmes. Je n'ai trouvé un certain sens de la raison que lorsque j'ai commencé à faire quatre choses sur le plan opérationnel. Notez que ceux-ci peuvent ne pas être considérés comme des "meilleures pratiques" par certains membres de la communauté Chef. Néanmoins, c'est ainsi que j'ai apporté la raison, la répétabilité et l'ordre à mon monde.

  1. Créez vos propres recettes. J'ai complètement cessé d'utiliser les livres de cuisine communautaires et j'ai simplement créé mes propres recettes, selon mes spécifications. De cette façon, je gère et contrôle mes propres dépendances. Beaucoup s'opposeraient à cela, mais honnêtement - si j'avais lu d'abord certains des codes Ops et des recettes de la communauté, je n'aurais probablement pas choisi Chef comme solution pour commencer. Je garde mes recettes simples et conformes à ma façon de travailler. Je n'ai précisément aucun livre de cuisine communautaire dans mon référentiel.
  2. Soyez discipliné sur les mises à niveau. Si je mets à jour une recette, je m'assure qu'elle fonctionne partout et je passe par les tracas supplémentaires de la déployer partout, même si elle perturbe mon flux de travail et ajoute de la friction. À long terme, c'est la clé de la santé mentale du chef. Dans les cas extrêmes, si j'ai besoin de variations pour certains hôtes, comme un environnement de test vs de production, je les code dans le livre de recettes. Mais ma philosophie est que la version la plus récente de chaque livre de cuisine devrait pouvoir être appliquée en toute sécurité partout où elle est nécessaire.
  3. Utilisez Chef Solo pour tout. Tous les quelques mois, je me dis que je devrais réutiliser Chef Server. L'édition communautaire s'améliore, mais l'ensemble du paradigme ne semble jamais correspondre à mon monde. Et chaque fois que j'essaye, je fais face à la paume et je me botte. Le paradigme Chef Server est adapté à un monde avec des serveurs à longue durée de vie qui ont besoin de changements fréquents de systèmes. Je modifie si rarement les systèmes que le fait que mes serveurs se connectent constamment à un serveur chef pour des mises à jour est tout simplement idiot. Et j'ai de bien meilleurs outils pour m'assurer que mes hôtes sont en bonne santé. Mon travail se situe dans un monde de machines virtuelles jetables, où elles ne peuvent survivre qu'à un ou deux changements de configuration. J'utilise maintenant Chef Solo exclusivement et j'appuie les modifications sur mes hôtes, tout en poussant exactement les mêmes livres de cuisine à tous les hôtes qui en ont besoin.
  4. Évitez de compiler des logiciels pendant les exécutions de Chef. Le cas le plus extrême (c'est-à-dire stupide) pour moi impliquait la compilation de ruby-1.9.3 à partir de la source chaque fois que j'amorçais une nouvelle boîte. Mais la création de packages personnalisés peut souvent être pénible. Une fois que j'ai découvert l'excellent outil fpm , il est devenu trivial d'emballer mes propres rpms, debs et gems et j'ai rendu ma vie beaucoup plus efficace et facile.

J'espère que cela aide quelqu'un!

- METTRE À JOUR -

Près de trois ans plus tard, ces principes m'ont été utiles. Mais j'ajouterai encore un conseil, et c'est vraiment pour les mêmes raisons que j'ai préféré le chef-solo au chef.

  1. UTILISER ANSIBLE AU LIEU
plateformes
la source
3

Il y a 2 problèmes:

  1. gérer les versions du livre de recettes dans différents objets d'environnement
  2. gérer la version de la recette dans le noeud run_list.

L'article Essentials of cookbook versionsest la meilleure référence pour les versions de livres de cuisine. Selon # 1, vous avez raison, car il est difficile de gérer différentes versions de livres de recettes pour servir un ensemble de configurations différent, en particulier il est mélangé à des dépendances de livres de recettes où la plupart des livres de recettes du site de livres de recettes ne font pas bien ce travail. La configuration peut donc se casser. et si vous n'avez pas géré les versions en testant le comportement d'exécution de n'importe quel composant, il se casse simplement. C'est donc une mauvaise idée de télécharger un livre de recettes sans spécifier le numéro de version dans votre objet d'environnement. Gérez donc les versions du livre de recettes dans l'objet environnement et testez soigneusement lors de la promotion de la version de tout nouveau livre de recettes. Je gère généralement l'objet environnement dans SCM et je n'ai pas téléchargé sur le serveur chef via un travail automatisé jusqu'à ce que le livre de recettes modifié puisse fonctionner correctement avec le reste des autres composants existants.

Selon # 2, c'est un sujet délicat car c'est là que la dépendance de recette réelle fonctionne sur chaque nœud. En un mot, pour les nœuds critiques, vous feriez mieux de contrôler la dépendance des recettes en spécifiant la version de la recette dans la liste d'exécution des nœuds / rôles. Je fais à peine cela parce que c'est un contrôle de grain fin et coûte plus cher en test / promotion. Cependant, pour le rôle / nœud critique, ce n'est pas une mauvaise idée mais fournissez une assurance sur les changements de configuration.

shawmzhu
la source