Jakie pytania należy zadać, decydując się na szefa kuchni, czy lalkę?

16

Zaraz rozpocznę nowy projekt, który częściowo będzie wymagał wdrożenia wielu identycznych węzłów około trzech różnych klas:

  • Węzły danych , w których będą uruchamiane fragmenty MongoDB.
  • Węzły aplikacji , w których będą uruchamiane instancje aplikacji Ruby on Rails i starszej aplikacji ASP.NET MVC.
  • Przetwarzanie węzłów , które będą uruchamiać zadania żądane przez węzły aplikacji.

Wszystkie węzły będą działały na instancjach Ubuntu 10.04, chociaż będą miały zainstalowane inne pakiety.

Znam trochę szefa kuchni z poprzednich projektów, choć nie uważam się za eksperta. Starając się zachować należytą staranność, badałem alternatywne możliwości. Mamy wielu pracowników, którzy są długoletnimi użytkownikami Puppet i zachęcili mnie do obejrzenia.

Mam jednak problem z oceną obu opcji. Szefowie kuchni i Marionetki mają wiele terminów związanych z tą samą domeną - pakiety , zasoby , atrybuty i tak dalej, i mają wspólną historię, która wynika z różnych podejść do tego samego problemu. W pewnym sensie są bardzo podobne. Ale wiele informacji porównawczych, które znalazłem, takich jak ten artykuł , jest trochę nieaktualnych.

Gdybyś dzisiaj rozpoczynał ten projekt, jakie pytania zadałbyś sobie, decydując, czy powinieneś użyć Chef czy Puppet do zarządzania konfiguracją? (Uwaga: nie chcę odpowiedzi na pytanie „Czy powinienem używać szefa kuchni czy marionetki?”)

John Feminella
źródło
aktualizacja w 2016 roku: następuje masowa migracja z dala od szefa kuchni i marionetki. Nie zaleca się im nowego projektu. Walka jest teraz możliwa do walki z solą. (ansible jest łatwiejsze do skonfigurowania i rozpoczęcia + działa nad SSH, sól jest łatwiejsza, gdy infrastruktura staje się duża i złożona + szybciej)
user5994461

Odpowiedzi:

12

Zarówno Marionetka, jak i Szef Kuchni mogą robić to, co chcesz. Najlepiej będzie zacząć robić to, co próbujesz, i zdecydować, które narzędzie Ci się najbardziej podoba. Myślę, że najważniejsze pytania, które musisz zadać, to:

Chcesz DSL? - Przepisy kulinarne są napisane w rubinie, marionetka ma DSL. To, czy DSL jest dobry, czy zły wybór, jest jedną z największych różnic między szefem kuchni a marionetką. Link, który opublikowałeś do porównania Bitfield Consulting, zawiera kilka dobrych komentarzy na ten temat, które powinieneś przeczytać, jeśli jeszcze tego nie zrobiłeś. Uważam również, że ten post na blogu jest przydatny, pamiętaj też o przeczytaniu komentarzy.

Czy znasz ruby? - Jeśli nie znasz rubinu, rozpoczęcie pracy z szefem kuchni może być trudniejsze lub wymagać większej inwestycji czasu, ponieważ musisz nauczyć się nowego języka. Puppet ma swój własny język, od którego łatwo zacząć. Począwszy od marionetki 2.6, manifesty można również pisać w rubinie .

Na Open Source Bridge w 2009 roku mieli panel autorów i przedstawicieli szefów kuchni, marionetek, bcfg2, cfengine i automateit, które można oglądać na bliptv, który ma 1,75 godziny dyskusji na temat narzędzi do zarządzania konfiguracją.

Opscode / Chef mówi również o różnicy między nim a marionetką w swoich FAQ .

Myślę, że brak znajomości właściwych pytań może wynikać z braku zbyt dużego doświadczenia w pracy z którymkolwiek z nich. Gdy zaczniesz z nich korzystać, zaczniesz dostrzegać różnice między nimi. Proponuję przyjść z rzeczywistymi problemami, które rozwiążesz z szefem kuchni lub marionetką, a następnie zacznij próbować je rozwiązać i zobacz, co lubisz w nich. Dzięki Opscode / Chef oferują one hostowane rozwiązanie , w którym możesz bezpłatnie skonfigurować 5 węzłów.

Mark McKinstry
źródło
3
Szef kuchni ma również DSL, różnica polega na tym, że jest to wewnętrzna Ruby DSL, podczas gdy DSL Puppet jest zewnętrzna. Od tego czasu Puppet dodało również czysto Ruby DSL, ale nie jest zachęcany ani rekomendowany przez użytkowników marionetek, ani Puppet Labs.
jtimberman
1
„czy chcesz wiedzieć, że rubin” to pytanie nr 1. Nadal mam nadzieję na system oparty na Pythonie. :)
Sirex,
Połączone artykuły na blogu są bardzo pomocne na początek dla osób szukających porównania szefa kuchni i lalek.
Clinton
6

Pozwól, że powiem najpierw - jeśli nie używasz ani marionetki, ani szefa kuchni; nie ma złej odpowiedzi. Albo będzie o wiele lepszy niż to, co teraz robisz.

Jako lider zespołu wybrałem Puppet dla mojego zespołu. Gdybym był tylko zespołem, wybrałbym zamiast tego szefa kuchni. Dlatego:

Podczas gdy moja wiedza z pewnością dotyczy administracji systemów, moim doświadczeniem jest programowanie. Po to poszedłem do szkoły i nie jestem obcy pisaniu pełnych aplikacji (nie tylko skryptów). Chociaż nie znałem Ruby, chcę, a szef kuchni byłby świetną wymówką, aby nauczyć się obu.

Jednak mój zespół jest pełen administratorów systemów, z niewielkim lub żadnym doświadczeniem programistycznym, oprócz sporadycznego skryptu powłoki. Dla nich pisanie modułu marionetkowego przypomina pisanie pliku konfiguracyjnego. Jest deklaratywny, nie ma iteratorów i ogólnie jest bardziej przyjazny dla administratora.

Zespoły pełne programistów wykonujących czynności sysadmin preferują szefa kuchni. Ponieważ DSL Puppet jest deklaratywny, kolejność (nawet w poszczególnych plikach) nie ma znaczenia, a to frustruje wielu przyzwyczajonych do bardziej typowego języka programowania.

Słyszałem też wiele razy, że szef kuchni jest o wiele bardziej przyjazny dla chmury niż Puppet, ale Puppet skupił się na swoim produkcie Puppet Enterprise w ubiegłym roku. Nie mogę mówić z doświadczenia na temat zdolności chmurowych obu produktów.

Ze względu na powyższe cechy stereotyp (i często jest poprawny) mówi, że Puppet jest bardziej wszechobecny w przedsiębiorstwie na fizycznych urządzeniach, na których szef kuchni rządzi startupami w chmurze. Oczywiście są wyjątki, ale to, co widziałem, zdecydowanie popiera stereotyp.

Jeśli jest to jednoosobowy zespół, oceń oba i wybierz, który ci się podoba. Jeśli jednak, podobnie jak ja, masz zespół ludzi, upewnij się, że potrzeby swojego zespołu mają pierwszeństwo przed osobistymi preferencjami, to pozwoli Ci zaoszczędzić później, gdy spróbujesz uzyskać wpisowe.

Justin Ellison
źródło
2
Komentarz Justina jest najlepszym podejściem. Osobiście wolę szefa kuchni, ponieważ była to pierwsza opcja CM, której się nauczyłem, ale w praktyce i biorąc pod uwagę obecną siłę zespołu w marionetce, zwykle wybieram marionetkę z czystymi projektami infrastrukturalnymi, podczas gdy zespół ds. Aplikacji głównie DevOps jest bardziej stronniczy w stosunku do szefa kuchni. Używaj tego, co najlepsze i praktyczne dla Twoich potrzeb.
5

Pełne ujawnienie, nie korzystamy z żadnego z nich, chociaż oceniliśmy je wewnętrznie, próbując zdecydować o systemie zarządzania konfiguracją. Więc nie uważaj mnie za eksperta od wszystkiego.

  • Jak łatwo jest skonfigurować instancję?
  • Jaka konfiguracja jest wymagana od klienta, aby mógł się komunikować z serwerem?

I tak dalej. Ale możesz bardzo łatwo odpowiedzieć na te pytania: skonfiguruj je! Przygotowanie próbki do pracy to kilka godzin czasu dla każdego produktu, a biorąc pod uwagę, że do czego użyjesz tego, prawdopodobnie będzie używany przez długi czas, czas jest tego wart. Nie tylko możesz poczuć, jak radzą sobie z konkretnymi platformami (tj. Opartymi na Debianie i apt, opartymi na RPM i mniam), ale na pewno pomoże ci poczuć aplikacje.

Należy również pamiętać, że wszystkie funkcje na świecie nie nadrobią trudnego interfejsu, a ponadto mogą ujawnić problemy specyficzne dla Twojej infrastruktury - tj. Co się stanie, jeśli pliki konfiguracyjne zostaną zaktualizowane w innej kolejności niż oczekiwano?

To moja rada; Chef i Puppet nie są wcale tacy trudni do skonfigurowania jednego serwera i jednego lub dwóch klientów i dają ci doświadczenie z pierwszej ręki na obu. Dodatkowo, jeśli zaczniesz go konfigurować i zdasz sobie sprawę z jego ogromnego bólu, będziesz już miał wiedzę przed przystąpieniem do niej.

Andrew M.
źródło
5

Jeśli w twoim projekcie są ludzie, którzy mają już doświadczenie ze Puppet, sugeruję, abyś po prostu używał Puppet.

Szef kuchni i Marionetka są dość podobne, a oba projekty są równie wysokiej jakości. Jeśli masz dostęp do osób, które mają już doświadczenie Puppet, po prostu użyj Puppet.

robbyt
źródło
2

Powyższe jest zdecydowanie dobrą wskazówką, lubię zadawać te ogólne pytania, ilekroć rozważam nową zależność od strony trzeciej.

  • Jaki jest wiek projektu?
  • Jak aktywna jest społeczność (listy mailingowe, błędy, irc itp.)?
  • Czy dobra, solidna dokumentacja zawiera standardowe praktyki?

Są to dobre wskaźniki ogólnego powodzenia projektu i mogą w pewnym stopniu przewidywać długość życia.

ScottZ
źródło
Wiek jest albo łatwy, albo trudny do oceny: szef kuchni został założony przez firmę, która używała Puppet, ale był niezadowolony z niektórych rzeczy. Jest kilka lat nowszy, ale może być postrzegany jako widelec.
freiheit
0

Spróbuj znaleźć ludzi, którzy używają Chef lub Puppet od ponad kilku miesięcy i zapytaj ich o swoje doświadczenia.

Mike Bailey
źródło
0

Dla mnie jest to ściśle związane z tradycją konkretnej społeczności. Historycznie szef kuchni był bliżej facetów RubyOnRails. Również duża popularność szefa kuchni w społeczności ROR, ponieważ Engineyard zbudował swoją infrastrukturę na szczycie szefa kuchni.

AB
źródło