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.