Czy istnieje sposób, aby zmusić kukiełkę do zrobienia pewnych rzeczy w pierwszej kolejności? Na przykład potrzebuję go, aby zainstalować RPM na wszystkich serwerach, aby dodać repozytorium yum (Społeczność IUS) przed zainstalowaniem któregokolwiek z pakietów.
26
Odpowiedzi:
Jeśli chcesz się upewnić, że repozytorium jest zainstalowane na wszystkich serwerach, sugeruję coś takiego
Następnie dla każdego rozszerzającego się węzła
base
możesz powiedziećZapewni to
bar
nie zostanie zainstalowany, dopóki nie zostanie zdefiniowane repozytorium IUSźródło
Chociaż etapy mogą sobie z tym poradzić, podobnie jak konkretne zależności yum repo, lepiej jest zadeklarować ogólny związek.
Po prostu włóż
Yumrepo <| |> -> Package <| provider != 'rpm' |>
manifest lalek.Dzięki temu wszystkie typy yumrepo zostaną przetworzone przed wszelkimi pakietami, które nie mają „rpm” jako dostawcy. To ostatnie wykluczenie polega na tym, że mogę użyć (na przykład) pakietu RPM do wydania epel, aby pomóc zainstalować repozytorium yum.
źródło
(Znalazłem to pytanie po tym, jak odpowiedziałem prawie tak samo ... więc pomyślałem, że moja odpowiedź dotyczy również tutaj i warto je powtórzyć (bezpieczniej jest mieć odpowiedź w dwóch miejscach ..)
O ile rozumiem, właśnie po to są etapy - pozwalają grupować i porządkować wykonania klas. Używam „etapów” do aktualizacji i konfiguracji APT na serwerach Debiana, co powinno być bardzo podobne do tego, co zamierzasz zrobić z YUM.
Przede wszystkim deklarujesz etap „mniam” na najwyższym poziomie (powyżej „węzłów”), aby klasy w etapie „mniam” były wykonywane przed „głównymi”:
Następnie przypisujesz etap do klas. Możesz to zrobić w definicji węzła:
źródło
Możesz użyć tagów . Umożliwiłoby to oznaczenie instalatora repozytorium
firstrun
czymś,następnie uruchomić
i wykona tylko moduły / instrukcje pasujące do znacznika.
źródło
Kluczową rzeczą, której musisz użyć, jest słowo kluczowe wymagające - „Oceń jedną lub więcej klas, dodając wymaganą klasę jako zależność”.
Przykładem użycia repozytorium apt może być:
(Na podstawie tego przykładu ładowania marionetek ).
Możesz więc zobaczyć, jak każdy etap wymaga, aby poprzedni został wykonany jako pierwszy. Zostawię cię, abyś zastanowił się, jak zastosować to do yum, ponieważ nie wiem, gdzie to przechowuje swoje pliki.
źródło
Puppet czyta konfigurację od góry do dołu, więc jeśli włączysz klasę z repozytorium yum jako pierwsze w tej klasie, repozytorium to zostanie dodane przed czymkolwiek innym.
Jeśli użyjesz wymaganych ustawień pakietu, upewnisz się, że wymagany typ zasobu jest obecny przed dodaniem pakietu, jako taki:
Powyższy kod doda repozytorium przed dodaniem pakietu.
źródło
require
słowa kluczowego, które zostało zrobione w drugiej części.Coś takiego działało dla mnie:
Zawarłem coś takiego na mysite.pp. W ten sposób twoje moduły kukiełkowe są wolne od odniesień do repozytorium yum.
źródło