Puppet - pobierz listę pakietów i wersji

11

Czy można powiedzieć marionetce, aby skompilowała katalog dla jednego (lub wszystkich) węzłów i zapisała gdzieś te konkretne dane?

Jestem szczególnie zainteresowany uzyskaniem wszystkich potrzebnych pakietów i ich wersji na węzeł, ale odpowiednie jest również ogólne podejście do uzyskiwania dowolnych danych.

Michal Bryxí
źródło

Odpowiedzi:

13

AKTUALIZACJA

Ta oryginalna odpowiedź jest już nieaktualna. Zaktualizowane polecenie dla Puppet 3.x to:

puppet resource package

Jeśli szukasz wszystkich pakietów i wersji zainstalowanych w węźle, niezależnie od tego, czy są one zainstalowane przez Puppet, czy nie, następujące polecenie jest wbudowane i można je uruchomić w dowolnym węźle Puppet:

ralsh package

Spowoduje to wyświetlenie danych w postaci manifestu marionetkowego na standardowe wyjście.

Ralsh będzie działał dla każdego typu zasobu, który ma instanceszaimplementowaną metodę (użytkownicy, grupy itp.).

Jeśli chcesz centralnie sprawdzić katalog YAML pod kątem wszystkich zasobów zdefiniowanych w manifestach Puppet, Twój Puppetmaster już buforuje te informacje /var/lib/puppet/client_yaml/catalogi po prostu musisz je przeanalizować za pomocą wybranego parsera YAML. Usługa Inventory Puppet, która została wprowadzona całkiem niedawno, może być również dla ciebie dobrą opcją; możesz zrobić z storeconfigs, jeśli używasz starszej wersji, takiej jak 0.25.x.

jgoldschrafe
źródło
Jednym z problemów związanych z tym podejściem jest to, że nie zezwala na wiele wersji tego samego pakietu, co jest typowe dla pakietu jądra w dystrybucjach opartych na Red Hat.
Paul Gear
Nie jestem pewien, czy to naprawdę odpowiada na pytanie: polecenie wyświetla listę aktualnie zainstalowanych pakietów, a nie pakietów wymaganych przez Puppet. Interesuje mnie lista tych ostatnich, do których można ją nakarmić rpmorphan.
Tim Landscheidt
@ TimLandscheidt, czy pytasz o pełną listę packagezasobów, które Puppet wymienia w katalogu dla węzła? Jeśli nie masz ochoty analizować katalogu w pamięci podręcznej, najlepszym rozwiązaniem byłoby zapytanie do PuppetDB. Interfejs API zapytania jest dostępny tutaj .
jgoldschrafe
@ jgoldschrafe Wreszcie zająłem się instalowaniem PuppetDB i rzeczywiście robi to, co chcę. Mogę zapytać o wszystkie zasoby pakietu, dla których „zapewnienie” nie jest równe „nieobecny” dla określonego hosta, i użyć wyniku JSON do przesłania listy do rpmorphan. Dzięki!
Tim Landscheidt,