Zamierzam zorientować tę odpowiedź tak, jakby pytanie brzmiało „jakie są zalety szefa kuchni-solo”, ponieważ to najlepszy sposób, jaki znam, aby uwzględnić różnice między podejściami.
Moje podsumowanie jest zgodne z innymi: użyj serwera szefa kuchni, jeśli chcesz zarządzać dynamicznym, zwirtualizowanym środowiskiem, w którym często będziesz dodawać i usuwać węzły. Serwer szefa kuchni jest również dobrym CMDB , jeśli go potrzebujesz. Użyj szefa kuchni solo, jeśli masz mniej dynamiczne środowisko, w którym węzły nie zmieniają się zbyt często, ale role i przepisy będą się zmieniać. Wielkość i złożoność środowiska jest mniej lub bardziej nieistotna. Oba podejścia bardzo dobrze się skalują.
Jeśli wdrażasz szefa kuchni solo, użyj cronjob z rsync, „git pull” lub innym idempotentnym mechanizmem przesyłania plików, aby zachować pełną kopię repozytorium szefa kuchni na każdym węźle. Cronjob powinien być łatwo konfigurowalny, aby (a) nie uruchamiał się wcale i (b) działał, ale bez synchronizacji lokalnego repozytorium. Dodaj katalog nodes / do swojego repozytorium szefów kuchni z plikiem json dla każdego węzła. Twoja współpraca z cronjob może być tak wyrafinowana, jak chcesz, jeśli chodzi o identyfikację odpowiedniego pliku węzłów (chociaż zalecałbym po prostu $ (nazwa hosta -s) .json. Możesz także utworzyć konto opscode i skonfigurować klienta z hostowanym szefem kuchni, jeśli nie ma innego powodu niż możliwość korzystania z noża do pobierania społecznościowych książek kucharskich i tworzenia szkieletów.
Podejście to ma kilka zalet, oprócz oczywistego „braku konieczności administrowania serwerem”. Kontrola źródła będzie ostatecznym arbitrem wszystkich zmian konfiguracji, repozytorium obejmie wszystkie węzły i listy uruchomieniowe, a każdy serwer będący w pełni niezależny ułatwi wygodne scenariusze testowania.
Serwer-szef wprowadza dziurę, w której używasz „wysyłania noża”, aby zaktualizować książkę kucharską, i musisz samodzielnie załatać tę dziurę (na przykład za pomocą haka po zatwierdzeniu) lub ryzykować, że zmiany strony zostaną po cichu nadpisane przez kogoś, kto „załaduje nóż” to przestarzały przepis z przestarzałego lokalnego repozytorium na swoim laptopie. Jest to mniej prawdopodobne w przypadku szefa kuchni-solo, ponieważ wszystkie zmiany zostaną zsynchronizowane z serwerami bezpośrednio z głównego repozytorium. Problemem jest dyscyplina i liczba współpracowników. Jeśli jesteś programistą solo lub bardzo małym zespołem, przesyłanie książek kucharskich za pośrednictwem interfejsu API nie jest bardzo ryzykowne. W większym zespole może się tak zdarzyć, jeśli nie wprowadzisz dobrych kontroli.
Dodatkowo, dzięki chef-solo możesz przechowywać wszystkie role, niestandardowe atrybuty i listy runów swoich węzłów jako pliki node.json w głównym repozytorium szefa kuchni. Dzięki serwerowi szefa kuchni role i listy Run są modyfikowane na bieżąco za pomocą interfejsu API. Z szefem kuchni solo możesz śledzić te informacje w ramach kontroli wersji. W tym miejscu wyraźnie widać konflikt między środowiskiem statycznym i dynamicznym. Jeśli twoja lista węzłów (bez względu na to, jak długa może być) nie zmienia się często, bardzo przydatne jest posiadanie tych danych w kontroli wersji. Z drugiej strony, jeśli często odradzasz nowe węzły i niszczysz stare (nigdy więcej nie widzisz nazwy hosta lub fqdn), utrzymywanie tego w kontroli wersji jest po prostu niepotrzebnym kłopotem, a posiadanie API do wprowadzania zmian jest bardzo wygodne. Serwer-szef kuchni ma również całe funkcje ukierunkowane na zarządzanie dynamicznymi środowiskami chmurowymi, takie jak opcja nazwy w „nożowym bootstrapie”, która pozwala zastąpić fqdn jako domyślny sposób identyfikacji węzła. Ale w środowisku statycznym funkcje te mają ograniczoną wartość, szczególnie w porównaniu z posiadaniem ról i list kontrolnych w kontroli wersji ze wszystkim innym.
Wreszcie, środowiska testowania receptur można skonfigurować w locie, prawie bez dodatkowej pracy. Możesz wyłączyć cronjobs działające na serwerze i wprowadzić zmiany bezpośrednio w jego lokalnym repozytorium. Możesz przetestować zmiany, uruchamiając szefa kuchni-solo, a zobaczysz dokładnie, jak serwer skonfiguruje się w produkcji. Po przetestowaniu wszystkiego możesz sprawdzić zmiany i ponownie włączyć lokalne cronjobs. Pisząc przepisy, nie możesz jednak korzystać z interfejsu API „Search”, co oznacza, że jeśli chcesz pisać przepisy dynamiczne (np. Loadbalancery), będziesz musiał zhakować to ograniczenie, zbierając dane z plików json w twój katalog węzłów /, który prawdopodobnie będzie mniej wygodny i nie będzie zawierał niektórych danych dostępnych w pełnej CMDB. Po raz kolejny bardziej dynamiczne środowiska będą sprzyjać podejściu opartemu na bazie danych, mniej dynamiczne środowiska będą w porządku z plikami json na dysku lokalnym. W środowisku serwerowym, w którym szef kuchni musi wykonywać wywołania API do centralnej bazy danych, będziesz zależny od zarządzania wszystkimi środowiskami testowymi w tej bazie danych.
Ten ostatni można również wykorzystać w nagłych wypadkach. Jeśli rozwiązujesz krytyczny problem na serwerach produkcyjnych i rozwiązujesz go przez zmianę konfiguracji, możesz wprowadzić tę zmianę natychmiast w repozytorium serwera, a następnie przesłać ją w górę do serwera głównego.
To są główne zalety szefa kuchni solo. Są też inne, na przykład brak konieczności administrowania serwerem lub płacenia za gospodarza, ale są to stosunkowo niewielkie obawy.
Podsumowując: jeśli jesteś dynamiczny i wysoce zwirtualizowany, serwer-serwer zapewnia wiele wspaniałych funkcji (omówionych gdzie indziej), a większość zalet szefa-solo będzie mniej zauważalna. Istnieją jednak określone, często niewymienione zalety dla szefa kuchni-solo, szczególnie w bardziej tradycyjnych środowiskach. Pamiętaj, że wdrożenie w chmurze niekoniecznie oznacza, że masz dynamiczne środowisko. Jeśli nie możesz na przykład dodać więcej węzłów do systemu bez wydania nowej wersji oprogramowania, prawdopodobnie nie jesteś dynamiczny. Wreszcie, z wysokiego poziomu, CMDB może być przydatny do dowolnej liczby rzeczy tylko stycznie związanych z administracją i konfiguracją systemu, takich jak księgowość i wymiana informacji między zespołami. Skorzystanie z samego serwera-szefa kuchni może być tego warte.
Ujawnienie: Pracuję dla Opscode.
Główną zaletą Chef Server nad Solo jest możliwość korzystania z wyszukiwania z twoją infrastrukturą. Klasycznym przykładem jest moduł równoważenia obciążenia z serwerami WWW. Moduł równoważenia obciążenia może automatycznie aktualizować swoją konfigurację, gdy serwery WWW są dodawane i usuwane z infrastruktury, po prostu je wyszukując. Solo jest po prostu tym, że pojedyncze komputery, podczas gdy Chef Server zapewnia możliwość zapytania o takie rzeczy jak „wszystkie maszyny z więcej niż 4 gigabajtami pamięci RAM” lub „master bazy danych”.
Serwer szefa daje również możliwość zarządzania infrastrukturą bez kopiowania tarballi, wizualizacji infrastruktury za pomocą konsoli zarządzania i zarządzania, które komputery są uruchomione, które wersje książek kucharskich z środowiskami. Są inne korzyści, ale te są poza moją głową. Jeśli chcesz wypróbować serwer szefa kuchni bez jego instalowania, po prostu zarejestruj konto Opscode Hosted Chef, pierwsze 5 węzłów jest bezpłatne.
źródło
chef-server zarządza książkami kucharskimi i danymi konfiguracyjnymi twoich węzłów.
Dodajesz książki kucharskie do serwera szefa kuchni za pomocą narzędzia noża, a następnie dajesz każdemu węzłowi listę uruchomionych przepisów, aby pobierały książki kucharskie, których potrzebują, gdy węzeł konfiguruje się za pomocą klienta szefa kuchni. Ponieważ szef-klient działa w tle, twoje węzły będą okresowo sprawdzać, czy na twoim serwerze-szefie są zaktualizowane książki kucharskie.
chef-server przechowuje również twoje dane konfiguracyjne i zmienne, dzięki czemu możesz zmienić ustawienia, aby twoje węzły były automatycznie pobierane. Jest to dobre w przypadku bardziej dynamicznych ustawień, które nie powinny lub nie mogą być zakodowane w przepisach.
źródło