Warum scheitert die Bereitstellung von Puppets eines RPM, obwohl das Paket verfügbar ist?

532
Nathan Basanese

Wir haben sichergestellt, dass das Paket verfügbar ist, und es sogar manuell heruntergeladen und auf einem der Zielserver installiert.

Wenn wir jedoch Puppet ausführen, um unsere aktualisierten REST-Pakete zu installieren, wird folgende Fehlermeldung angezeigt:

err: /Stage[main]/zone_v1::Packages/Package[prod-connect]/ensure: change from 6.27.2-35935 to 6.27.2-36212 failed: Could not update: Execution of '/usr/bin/yum -d 0 -e 0 -y install prod-connect-6.27.2-36212' returned 1: Error: Nothing to do 

Es ist kein Fehler in Fabric, Puppet oder dem RPM-Repository. Auf dem lokalen Computer scheint etwas falsch konfiguriert zu sein, bei dem sich Fabric zur Ausführung des Befehls Marionette anmeldet.

2

1 Antwort auf die Frage

1
Nathan Basanese

//, Also haben wir uns am nächsten Morgen mit dem Installationsproblem befasst und konnten das Marionettenupdate auf den Maschinen in unserer Testzone erfolgreich fortsetzen, um die neuen RPMs zu installieren und die Server in Ordnung zu bringen.

Wir denken, das Problem ist, dass der Yum-Cache auf den Zielservern nicht aktualisiert wurde, um zu wissen, welches Build für prod-connect-6.27.2-36212 verfügbar war und daher nicht installiert werden konnte.

Wenn man sich die Ausgabeprotokollausgabe des Bereitstellungsjobs ansieht, hat es den Anschein, dass dieser Befehl nur für einige Computer ausgeführt wurde, wenn tatsächlich einige das Paket nicht erfüllten.

Diese Situation hat sich bereits ergeben, als ein Build, das in unser RPM-Repository gepusht wurde, auf einem Computer nicht angezeigt wurde, bei dem versucht wurde, "yum install" zu installieren.

Die Lösung bestand darin, den Befehl 'yum clean all' auszustellen, damit der Rechner seine lokalen Repository-Metadaten auffrischen und somit den neu geschobenen Build "sehen" kann.

Dies ist normalerweise kein Problem, wenn zwischen dem Hochladen des Engineering-Teams in unser RPM-Repository und dem Versuch der Bereitstellung ein längerer Zeitraum liegt. Der Grund dafür ist, dass CEntOS 6 seine lokalen Repository-Metadaten regelmäßig und automatisch aktualisiert.

Die Lösung: Stellen Sie sicher, dass Sie, wenn noch nicht vorhanden, im Skript für die Implementierungsstruktur einen Schritt hinzufügen, der für alle Computer in ALLEN Zonen "alles sauber machen" muss.

Dies sollte hoffentlich vermieden werden, wenn wir einen Build zur Verfügung stellen und ihn sofort in einem Cluster bereitstellen möchten.