Puppet - Liste der Pakete und Versionen abrufen

11

Ist es möglich, Puppet anzuweisen, einen Katalog für einen (oder alle) Knoten zu erstellen und diese bestimmten Daten irgendwo zu speichern?

Ich bin speziell daran interessiert, alle benötigten Pakete und deren Versionen pro Knoten zu erhalten, aber ein allgemeiner Ansatz zum Abrufen von Daten ist auch geeignet.

Michal Bryxí
quelle

Antworten:

13

AKTUALISIEREN

Diese ursprüngliche Antwort ist jetzt veraltet. Der aktualisierte Befehl für Puppet 3.x lautet:

puppet resource package

Wenn Sie nach allen Paketen und Versionen suchen, die auf einem Knoten installiert sind, unabhängig davon, ob sie von Puppet installiert wurden oder nicht, ist der folgende Befehl integriert und kann auf jedem Puppet-Knoten ausgeführt werden:

ralsh package

Dadurch werden die Daten in einer Puppet-Manifestform an stdout ausgegeben.

Ralsh funktioniert für jeden Ressourcentyp mit dem instances Methode implementiert ist (Benutzer, Gruppen usw.).

Wenn Sie den YAML-Katalog zentral auf alle in Puppet-Manifesten definierten Ressourcen untersuchen möchten, speichert Ihr Puppetmaster diese Informationen bereits im Cache /var/lib/puppet/client_yaml/catalogund Sie müssen sie nur mit dem YAML-Parser Ihrer Wahl analysieren. Der kürzlich eingeführte Puppeninventarservice ist möglicherweise auch eine gute Option für Sie. Sie können mit storeconfigs auskommen, wenn Sie mit einer älteren Version wie 0.25.x arbeiten.

jgoldschrafe
quelle
Ein Problem bei diesem Ansatz besteht darin, dass nicht mehrere Versionen desselben Pakets zulässig sind, wie dies beim Kernel-Paket in Red Hat-basierten Distributionen üblich ist.
Paul Gear
Ich bin mir nicht sicher, ob dies wirklich die Frage beantwortet: Der Befehl listet die aktuell installierten Pakete auf, nicht die von Puppet benötigten Pakete. Ich interessiere mich für eine Liste der letzteren, um sie zu füttern rpmorphan.
Tim Landscheidt
@ TimLandscheidt, fragen Sie nach der vollständigen Liste der packageRessourcen, die Puppet im Katalog für einen Knoten auflistet? Wenn Sie nicht bereit sind, den zwischengespeicherten Katalog zu analysieren, ist es am besten, PuppetDB abzufragen. Die Abfrage-API finden Sie hier .
Jgoldschrafe
@jgoldschrafe Endlich habe ich PuppetDB installiert und es macht tatsächlich das, was ich will. Ich kann alle Paketressourcen abfragen, bei denen "sicherstellen" nicht gleich "nicht vorhanden" für einen bestimmten Host ist, und das JSON-Ergebnis verwenden, um eine Liste an rpmorphan zu senden. Vielen Dank!
Tim Landscheidt