J'ai un livre de cuisine de chef (pour apache2). Il ne fonctionne pas sur un nœud. J'essaie donc de le modifier et de le mettre à jour, mais le nœud ne semble pas télécharger la nouvelle version. J'ai pu tout télécharger sur le serveur chef à partir de ma machine locale avec knife upload .
, cela réussit, et imprime qu'il a téléchargé les bits du livre de recettes apache2 que j'ai modifiés.
Lorsque j'exécute manuellement (en tant que root) chef-client
sur le nœud, je peux le voir contacter le serveur, obtenir la liste des exécutions, etc. Cependant, les fichiers de recette /var/cache/chef/cookbooks/apache2
sont les anciens fichiers. Et la recette échoue (car elle n'a pas les modifications que j'ai apportées).
Comment puis-je amener le client chef sur le nœud à utiliser la nouvelle version mise à jour du livre de recettes apache2? Dois-je augmenter le numéro de version dans le livre de recettes (je ne l'ai pas fait)?
chef-client -l debug
production:
[2015-01-30T10:51:31+01:00] DEBUG: Synchronizing cookbook apache2
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_ldap.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_xsendfile.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_auth_openid.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_setenvif.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_python.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_authz_host.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_proxy_ajp.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_expires.rb, as the cache is up to date.
(lots of this for all files)
Je suis nouveau au chef, donc j'ai peut-être fait une erreur de débutant.
knife cookbook upload <cookbook_name>
. Si cela ne le résout pas, essayez de remplacer la version, puis de l'exécuterknife cookbook list <cookbook_name>
pour vous assurer que vous la téléchargez correctement. Sinon, exécutezknife cookbook download
(dans un autre répertoire) pour dérouler ce que le serveur pense être le bon code.Réponses:
Il y a quelques choses auxquelles je peux penser qui pourraient vous aider.
Vérifiez que la version du livre de recettes que vous téléchargez est la version la plus récente
Un problème courant avec la version du livre de recettes est que vous pouvez modifier la version 1.0.0 du livre de recettes localement et le télécharger, mais le serveur Chef a déjà la version 1.0.1 du livre de recettes téléchargée. Dans ce cas, les clients Chef récupèrent généralement la dernière version (sauf indication contraire) et vos modifications ne seront jamais synchronisées avec le cache local.
Vous pouvez voir toutes les versions actuelles du livre de recettes sur Chef Server via:
knife cookbook show apache2
Une solution à cela est celle que vous avez mentionnée - augmentez votre numéro de version au-delà de ce qui existe sur Chef Server, c'est-à-dire 1.0.2 et téléchargez.
Une autre méthode consiste à supprimer tous les autres livres de recettes apache2 de Chef Server et à télécharger à nouveau celui que vous souhaitez. Cela ne nécessite aucune mise à jour du numéro de version, et le résultat final est que Chef Server aurait un seul livre de recettes apache2.
Validez que vos modifications sont bien effectuées sur Chef Server
Utiliser
knife cookbook show apache2 <cookbook version> recipes default.rb
Remplacer la version, le chemin et le nom de fichier - par exemple si vous souhaitez afficher un modèle nommé foo.erb:knife cookbook show apache2 0.1.0 templates foo.erb
Cette commande demandera le fichier au serveur Chef et affichera la sortie dans votre terminal. Il s'agit d'un moyen simple de déterminer si les modifications que vous avez apportées sont téléchargées via
knife cookbook upload
.Au-delà de cela, si cela ne vous aide pas, l'ajout des détails de la
knife
version, de lachef-server
version, de lachef-client
version ainsi qu'un journal de débogageknife cookbook upload apache2 -VV
seraient utiles pour un débogage plus approfondi.la source
Déboguez d'abord toutes les versions des livres de recettes sur le serveur, puis vérifiez la version du livre de recettes que le client télécharge. s'il est ancien, vérifiez simplement si le serveur a une version mise à jour. si c'est également oui, veuillez aller à l'interface utilisateur du serveur chef et vérifier env. vous avez peut-être configuré un environnement dans lequel la contrainte des livres de cuisine est spécifiée. Veuillez mettre à jour la version là-bas et elle recommencera à fonctionner.
la source
Une autre cause de ceci peut être que toutes les dépendances du livre de recettes ne sont pas présentes sur le chef-serveur. Je suis tombé sur cela tout à l'heure, et la nouvelle version de mon livre de cuisine apparaissait
knife cookbooks list
mais mon client n'utilisait pas la nouvelle version. Après quelques débogages, j'ai découvert que Berkshelf, ni couteau avaient téléchargé la nouvelle dépendance pour mon livre de cuisine. Après avoir téléchargé cela, le client a commencé à utiliser la nouvelle version.la source