Chef-client ne mettant pas à jour un livre de recettes depuis le serveur

9

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-clientsur 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/apache2sont 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.

Rory
la source
Accédez à l'interface Web chef-serveur et vérifiez si les modifications dans le livre de recettes sont là.
Draco Ater
1
Assurez-vous que vous avez couru knife cookbook upload <cookbook_name>. Si cela ne le résout pas, essayez de remplacer la version, puis de l'exécuter knife cookbook list <cookbook_name>pour vous assurer que vous la téléchargez correctement. Sinon, exécutez knife cookbook download(dans un autre répertoire) pour dérouler ce que le serveur pense être le bon code.
Tejay Cardon

Réponses:

6

Il y a quelques choses auxquelles je peux penser qui pourraient vous aider.

  1. 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.

  2. 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 knifeversion, de la chef-serverversion, de la chef-clientversion ainsi qu'un journal de débogage knife cookbook upload apache2 -VVseraient utiles pour un débogage plus approfondi.

Mike Fiedler
la source
1
Merci beaucoup pour cette réponse ... cela m'a amené à voir que nous avions des contraintes de livre de cuisine dans notre environnement de production, pas dans nos environnements / production.rb mais fixées par berkshelf! Je ne savais même pas que ça pouvait faire ça. Quoi qu'il en soit, après avoir téléchargé à nouveau notre environnement production.rb, un nouveau chef a récupéré notre dernier livre de recettes d'application.
Colin Curtin du
2

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.

zedfauji
la source
1

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 listmais 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.

Michael Grubb
la source
Assurez-vous que vous avez exécuté le téléchargement du livre de cuisine au couteau <cookbook_name>
Net Runner