Chef-Client aktualisiert kein Kochbuch vom Server


9

Ich habe ein Kochbuch (für apache2). Es funktioniert nicht auf einem Knoten. Ich versuche es zu optimieren und zu aktualisieren, aber der Knoten scheint die neue Version nicht herunterzuladen. Ich konnte alles von meinem lokalen Computer mit auf den Chef-Server hochladen, was knife upload .erfolgreich war, und druckte aus, dass die von mir geänderten Apache2-Kochbuchbits hochgeladen wurden.

Wenn ich chef-clientden Knoten manuell (als Root) ausführe , kann ich sehen, dass er den Server kontaktiert, die Ausführungsliste abruft usw. Die Rezeptdateien in /var/cache/chef/cookbooks/apache2sind jedoch die alten Dateien. Und das Rezept schlägt fehl (weil es nicht die Änderungen enthält, die ich vorgenommen habe).

Wie bringe ich den Chef-Client auf dem Knoten dazu, die neue aktualisierte Version des Apache2-Kochbuchs zu verwenden? Muss ich die Versionsnummer im Kochbuch erhöhen (ich habe dies nicht getan)?

chef-client -l debug Ausgabe:

[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)

Ich bin neu im Koch, also hätte ich vielleicht einen Anfängerfehler gemacht.


Gehen Sie zur Webschnittstelle von Chef-Server und überprüfen Sie, ob die Änderungen im Kochbuch vorhanden sind.
Draco Ater

1
Stellen Sie sicher, dass Sie gelaufen sind knife cookbook upload <cookbook_name>. Wenn sich das nicht beheben lässt, versuchen Sie, die Version zu starten und dann auszuführen knife cookbook list <cookbook_name>, um sicherzustellen, dass Sie sie wirklich richtig hochladen. Führen Sie alternativ knife cookbook download(in einem anderen Verzeichnis) aus, um den vom Server für richtig gehaltenen Code abzurufen.
Tejay Cardon

Antworten:


6

Ich kann mir ein paar Dinge vorstellen, die Ihnen helfen könnten.

  1. Stellen Sie sicher, dass die Kochbuchversion, die Sie hochladen, die neueste Version ist

    Ein häufiges Problem bei der Versionierung von Kochbüchern besteht darin, dass Sie möglicherweise die Kochbuchversion 1.0.0 lokal ändern und hochladen, auf dem Chef Server jedoch bereits die Kochbuchversion 1.0.1 hochgeladen wurde. In diesem Fall rufen Chef-Clients normalerweise die neueste Version ab (sofern nicht anders angegeben), und Ihre Änderungen werden niemals mit dem lokalen Cache synchronisiert.

    Sie können alle aktuellen Versionen des Kochbuchs auf Chef Server anzeigen über: knife cookbook show apache2

    Eine Lösung hierfür ist die von Ihnen erwähnte: Erhöhen Sie Ihre Versionsnummer über die auf Chef Server vorhandene Version, dh 1.0.2, und laden Sie sie hoch.

    Eine andere Methode besteht darin, alle anderen Apache2-Kochbücher von Chef Server zu entfernen und das gewünschte erneut hochzuladen. Dies erfordert keine Aktualisierung der Versionsnummer, und das Endergebnis ist, dass Chef Server ein einziges Apache2-Kochbuch haben würde.

  2. Überprüfen Sie, ob Ihre Änderungen tatsächlich zu Chef Server gelangen

    Verwenden von knife cookbook show apache2 <cookbook version> recipes default.rb Version, Pfad und Dateiname ersetzen - zum Beispiel, wenn Sie eine Vorlage mit dem Namen foo.erb anzeigen möchten:knife cookbook show apache2 0.1.0 templates foo.erb

    Dieser Befehl fordert die Datei vom Chef Server an und zeigt die Ausgabe in Ihrem Terminal an. Auf diese Weise können Sie auf einfache Weise feststellen, ob die von Ihnen vorgenommenen Änderungen über hochgeladen werden knife cookbook upload.

Wenn dies nicht hilft, ist es außerdem hilfreich, die Details von knifeVersion, chef-serverVersion, chef-clientVersion sowie ein Debug-Protokoll von hinzuzufügen, um das Debuggen knife cookbook upload apache2 -VVfortzusetzen.


1
Vielen Dank für diese Antwort ... es hat mich dazu gebracht zu sehen, dass wir Kochbucheinschränkungen in unserer Produktionsumgebung hatten, nicht in unseren Umgebungen / Production.rb, sondern von Berkshelf! Ich wusste nicht einmal, dass es das kann. Wie auch immer, nach dem erneuten Hochladen unserer Production.rb-Umgebung hat ein neuer Koch unser neuestes App-Kochbuch aufgenommen.
Colin Curtin

2

Debuggen Sie zuerst alle Kochbuchversionen auf dem Server und überprüfen Sie dann, welche Kochbuchversion der Client herunterlädt. Wenn es alt ist, überprüfen Sie einfach, ob der Server eine aktualisierte Version hat. Wenn dies auch der Fall ist, gehen Sie zur Benutzeroberfläche des Chef-Servers und suchen Sie nach env. Möglicherweise haben Sie eine Umgebung eingerichtet, in der die Einschränkungen für Kochbücher angegeben sind. Bitte aktualisieren Sie die Version dort und es wird wieder funktionieren.


1

Eine weitere Ursache kann sein, dass nicht alle Abhängigkeiten des Kochbuchs auf dem Chef-Server vorhanden sind. Ich bin gerade darauf gestoßen, und die neue Version meines Kochbuchs wurde angezeigt, knife cookbooks listaber mein Kunde hat die neue Version nicht verwendet. Nach einigem Debuggen stellte ich fest, dass Berkshelf oder Messer die neue Abhängigkeit für mein Kochbuch hochgeladen hatten. Nachdem ich das hochgeladen hatte, begann der Client mit der Verwendung der neueren Version.


Stellen Sie sicher, dass Sie Messer Kochbuch Upload <Kochbuchname>
Net Runner
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.