Myślę, że inni opisali powód, dlatego spróbuję tego. Wydaje mi się, że dzięki zrozumieniu, w jaki sposób ktoś może wykorzystać Puppet do robienia tego, co chcesz, decyzja stanie się bardziej zrozumiała.
Najpierw wykonaj podstawową sprawę
Twój moduł Puppet dla Apache'a domyślnie nie powinien wiele robić. Zainstaluj Apache, skonfiguruj go do minimalnego standardu i uruchom usługę. Spraw, by działało to na wszystkich dystrybucjach, które potrzebujesz obsługiwać.
Po drugie dodaj elastyczność
Musimy dodać vhosty. Skończysz z systemem, który może upuszczać pliki lub usuwać je z zestawu katalogów conf.d lub vhosts.d / zgodnie z potrzebami. To samo dotyczy włączania lub konfigurowania modułów.
Użyj klas ról lub grup hostów, aby związać swoje bloki konstrukcyjne
Myślę, że najlepszym sposobem na użycie Puppet jest upewnienie się, że jest addytywny. Korzystając z powyższych przykładów, powinniśmy mieć moduł, który to robi
- Zainstaluj Apache
- Ustaw podstawowe konfiguracje
- Dodaj vhosty do apache
- Skonfiguruj dodatkowe ustawienia
- Uruchom Apache
Zamiast przeciążać nasz domyślny moduł Apache, aby robić dokładnie to, czego potrzebujemy dla konkretnego hosta lub grupy, powinniśmy sobie z tym poradzić, to rola lub klasa grupy hostów.
class role::web_cust1 {
include apache
apache::vhost {'www.domain.com': }
apache::vhost {'www.domain2.com': priority => '99', }
include php
include php-fpm
include mysql
}
Znowu dodatek.
Umieść specjalne przypadki w Hiera
Jestem wielkim fanem wynajmu Puppet's Hiera, pomyśl o tym jako o bazie danych Puppet, przechowującej specjalne bity. Jeśli określony host lub grupa hostów potrzebuje specjalnego ustawienia, najpierw umieść w module rozsądne ustawienie domyślne, aby zwykli użytkownicy nie musieli o tym wiedzieć. Następnie wstaw dane dla tych specjalnych hostów lub grup hostów, aby Hiera mogła je wykorzystać, przekazując je w razie potrzeby Puppet.
Mój przypadek użycia to Listen port. Niektóre serwery mają przed sobą Lakier lub haproxy. Domyślnie moduł Puppet używa portu 80 w Apache, ale jeśli Hiera znajdzie dane, zastąpi to ustawienie domyślne.