Warum wechselt Puppet die Umgebungen und dann wieder zurück?

Warum wechselt Puppet die Umgebungen und dann wieder zurück?

Dies ist mit Puppet 5.5.22 und Foreman 1.22.0-develop. Ich weiß, dass dies eine veraltete Foreman- und Puppet-Installation ist, aber bis ich sie durch neue Versionen ersetze (ein bald anstehendes Projekt), muss ich mich mit ihnen befassen.

# puppet agent -tv
Notice: Local environment: 'production' doesn't match server specified node environment 'development', switching agent to 'development'.
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Retrieving locales
Info: Loading facts
Notice: Local environment: 'development' doesn't match server specified environment 'test', restarting agent run with environment 'test'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Retrieving locales
Info: Loading facts
Info: Caching catalog for servername.example.com
Info: Applying configuration version '1694623566'
Notice: Applied catalog in 12.93 seconds

Ich verstehe, dass die ursprüngliche lokale Umgebung „Produktion“ entweder aus /etc/puppet/puppet.conf stammen kann oder die Standardeinstellung ist, wenn in dieser Datei keine Umgebung angegeben ist. In diesem Fall ist Letzteres der Fall (lokal keine Umgebung angegeben).

Die Knotenumgebung „Entwicklung“ wurde für diesen Host in Foreman festgelegt (der ENC oder externe Knotenklassifizierer für diese Puppet-Installation) und ist die gewünschte korrekte Umgebungszuweisung.

Die Umgebung „Test“ ist die Umgebung, die Foreman derzeit allgemein und allgemein für alle unsere Hosts einstellt, und es ist die Umgebung, in der sich dieser bestimmte Host befand, bevor ich sie über die Foreman-Benutzeroberfläche in „Entwicklung“ geändert habe. (Mit anderen Worten, „Test“ ist eigentlich unsere Produktionsumgebung; die Umgebung mit der Bezeichnung „Produktion“ wird derzeit nicht verwendet.)

Ich habe versucht, die Foreman-Dokumentation zu konsultieren und konnte dort nichts über die Grundlagen der Funktionsweise von Umgebungszuweisungen finden. Die Dokumentation beschränkte sich auf einen Überblick über die Benutzeroberfläche, der für die Fehlerbehebung nicht hilfreich ist.


Wahrscheinlich damit verbunden gibt es noch eine weitere Merkwürdigkeit: servername.example.com erscheintzweimalin der Benutzeroberfläche von Foreman.

Leistung Name Betriebssystem Puppet-Umgebung Modell Host-Gruppe Letzter Bericht Aktionen
[drehendes Rad] Servername Debian [version] Entwicklung [Bladeservername] Hostgruppenname [leer] [Schaltfläche „Bearbeiten“]
[Power-Symbol, grau] Servername Debian [version] prüfen Standard-PC [Versionsinfo] [leer] Vor 6 Minuten [Schaltfläche „Bearbeiten“]

Wenn ich versuche, die Umgebung für einen der Einträge durch Klicken auf die Schaltfläche „Bearbeiten“ zu bearbeiten, und dann auf „Senden“ klicke, wird neben dem Feld „Name“ in Rot „ist bereits vergeben“ angezeigt, als ob ich versuchen würde, einen neuen Host-Eintrag zu erstellen.

Wenn ich jedoch stattdessen den Host mit dem Kontrollkästchen links in der Listenansicht auswähle und dann nach oben gehe und "Aktion auswählen" -> "Umgebung ändern" wähle, dannerscheintzu funktionieren. Beide Einträge zeigen dann „Entwicklung“ in der Benutzeroberfläche an. Aber der nächste Puppet-Lauf auf Servername erzeugt die Ausgabe, die oben in diesem Beitrag angezeigt wird, und wenn man dann die Foreman-Benutzeroberfläche aktualisiert, wird wieder ein Eintrag mit „Entwicklung“ und ein Eintrag mit „Test“ angezeigt.

Was könnte die Ursache dafür sein? Wie kann ich Umgebungen Hosts zuweisen und dafür sorgen, dass dies beibehalten wird?

Antwort1

Ich habe das gelöst.

Unser Puppet-Setup weist eine gewisse Eigenart auf, da noch irgendwo ein Überbleibsel der Puppet 3-Konfiguration vorhanden ist – ich bin mir nicht sicher, wo genau, aber der Servereintrag in der Liste, der sich selbst auf „Test“ zurücksetzen würde, zeigte auch seinen Puppet-Master als den alten Puppet-Server an. Dieser Puppet-Server existiert nicht mehr, ABER der neue Foreman-Server hat auch diesen Namen. Ziemlich kompliziert und ich verstehe nicht ganz, woher die beiden unterschiedlichen Einträge kamen, aber ich habe die flatternde Umgebungszuweisung wie folgt behoben:

  1. Löschen beider Host-Einträge in der Foreman-Benutzeroberfläche (lesen Sie die Bestätigungsmeldung sorgfältig durch und stellen Sie sicher, dass dadurch NICHT die Hosts oder Datenträger gelöscht werden und dass in der Bestätigung nur die beiden beabsichtigten Host-Einträge aufgeführt sind).
  2. Auf dem Puppet-Server (d. h. über die Kommandozeile am Foreman-Server angemeldet) wirdpuppet cert clean servername.example.com
  3. Löschen Sie auf dem Servernamen.example.com das Verzeichnis /var/lib/puppet/ssl/(ich habe verwendet, find /var/lib/puppet/ssl/ -deleteobwohl ein rm -rf /var/lib/puppet/ssl/genauso gut funktionieren würde).
  4. Bearbeiten Sie auf dem Servernamen.example.com die Datei, die unter der Kopfzeile /etc/puppet/puppet.conffestgelegt werden soll .environment = development[agent]
  5. Puppet wird auf Servername.Example.com erneut mit ausgeführt puppet agent -tv.

Dadurch wurde der Code aus der Entwicklungsumgebung korrekt angewendet, ohne dass irgendwo Warnungen über nicht übereinstimmende Umgebungen angezeigt wurden. Die Foreman-Benutzeroberfläche zeigt jetzt nur einen Eintrag für diesen Server an und gibt dessen Umgebung korrekt an development.

verwandte Informationen