Jaka jest różnica między Juju a Puppet / Chef?

80

Próbowałem zapytać firmę zewnętrzną o kluczowe różnice między Juju a Puppet / Chef. Strony trzecie nie są zbyt dobrze zaznajomione z Juju i nie mogą powiedzieć. Po prostu stwierdzili, że inni mają duży impet i trudno byłoby pokonać ich przewagę.

Czy najbliżsi Juju chętnie podkreślą zalety tego oprogramowania i dlaczego wyprzedzi Puppet / Chef na arenie zarządzania konfiguracją?

znak
źródło

Odpowiedzi:

48

Mark, to świetne pytanie i było to pierwsze pytanie, które ktoś mi powiedział o Juju. Oto niektóre z dużych różnic.

  • Juju hermetyzuje usługi - urok określa wszystkie sposoby, w jakie usługa musi ujawniać lub wykorzystywać dane konfiguracyjne do / z innych usług. Jak urok działa, to sprawa tego uroku. W tym celu może korzystać z dowolnego narzędzia, od skryptów powłoki po szefa kuchni w trybie solo.

  • Juju organizuje obsługę administracyjną - juju śledzi zasoby, którymi dysponuje, i może je dodawać lub usuwać w razie potrzeby. Obecnie tymi zasobami są maszyny AWS EC2, chmury OpenStack (takie jak HP Cloud), Microsoft Azure, Joyent, maszyny typu bare metal przez MAAS oraz lokalny dostawca LXC / KVM.

  • Juju ułatwia udostępnianie - każdy może wnieść urok do Juju Charm Store ; te uroki są sprawdzane i recenzowane przez społeczność Juju.

Oto kilka innych porównań dokonanych przez ludzi w Internecie:

Spamapy
źródło
1
Puppet zajmuje się także opisywaniem zasobów, udostępnianiem maszyn wirtualnych i udostępnianiem modułów . Czy możesz wyjaśnić, w jaki sposób Juju robi to inaczej lub lepiej, albo rozwiązuje inny problem?
poolie 17.04.13
W czasie tej odpowiedzi nie był świadomy dostawcy chmury marionetek. Moduły marionetkowe nie miały odstępów między nazwami podczas ostatniego sprawdzania, a zatem stwarzają problemy z udostępnianiem, które mogą wymagać od użytkownika zmodyfikowania kodu modułu marionetkowego, aby z niego skorzystać.
SpamapS
W marionetce są przestrzenie nazw . Nie korzystałem dużo z Puppet, ale rozumiem, że problemy występują najczęściej, gdy dwa moduły próbują zarządzać tą samą logiczną rzeczą. Czy Juju ma jakiś systematyczny sposób, aby temu zapobiec?
bilard
Przestrzenie nazw w marionetce przeszły ostatnie zmiany, aby ułatwić udostępnianie działającego samodzielnego modułu lalek. W przeszłości potrzebny był odpowiednik zmiennych globalnych do komunikacji między dwoma modułami. Juju nie zajmuje się w żaden sposób kształtem ani formą konfiguracji instancji, jest jedynie ułatwieniem dla aranżacji, więc nie, nie zapobiegnie to walce dwóch uroków o jeden plik.
SpamapS
1
Cześć @SpamapS, To dotyczy twojego drugiego punktu (aka Juju organizuje zarządzanie). W marionetce możemy zdefiniować relacje za pomocą „wymagaj”, „powiadamiaj” itd. Czy nie możemy po prostu używać tych konstrukcji do udostępniania informacji? A może Juju zapewnia inny poziom semantyki aranżacji?
Denis Weerasiri
33

(Oświadczenie - jestem założycielem Puppet i CEO Puppet Labs)

Okropnie nie znam juju , ale z tego, co mogę powiedzieć, siedzą nieco na różnych poziomach. Puppet świetnie radzi sobie z zachowaniami i możliwościami samych maszyn, podczas gdy juju wydaje się przede wszystkim rozmawiać o zestawach maszyn i głównie o tym, jak sprawić, by maszyny zachowywały się w określony sposób w stosunku do zewnętrznych narzędzi, takich jak Puppet lub skrypty powłoki.

Naszą strategią z Puppet jest budowanie najlepszego stosu od podstaw, podczas gdy juju wydaje się być konkretną warstwą stosu i pozostawiając inne warstwy innym narzędziom. Tak więc, chociaż możesz rozwiązać cały problem za pomocą Puppet (choć czasem przy odrobinie więcej pracy, niż byś chciał), musisz zintegrować juju z innymi narzędziami, aby zrobić dużo.

Naprawdę, juju wydaje się być lokalną wersją CloudFormation od Amazon, choć bez wykresu i tym podobnych. Można go używać z Puppet itp., Ale nie zastępuje go.

Luke Kanies
źródło
6
Nie jestem pewien, czy punting jest tutaj właściwym słowem ... to tak, jakby powiedzieć punt punt budujący oprogramowanie do autotools / scons / setup.py. Gdyby pakiety próbowały wykonać każdy krok każdej kompilacji, nie mielibyśmy żadnych pakietów!
SpamapS
9

Oto kolejne spojrzenie na to, jak Juju pasuje do innych narzędzi automatyzacji:

Jestem odpowiedzialny za strategię chmurową w Canonical, firmie stojącej za Ubuntu i Juju. Juju nie jest konkurentem Puppet ani Chef. Juju może zainstalować Puppet lub Chef, a za pomocą Charm, enkapsulacji usługi przez Juju, możesz zadzwonić do istniejących modułów Puppet lub paragonów Chef.

Czym jest Juju? Juju umożliwia natychmiastowe wdrażanie, integrację i skalowanie stosu / usług / aplikacji IT. Natychmiastowe korzyści IT bez bólów. Albo za pomocą wiersza polecenia lub GUI.

Więc Juju jest bliżej PaaS niż Devops, ponieważ możesz budować swoją chmurę (Juju jest domyślnym instalatorem OpenStack firmy Canonical), infrastrukturę, która się na niej opiera (serwery WWW / aplikacji / db, Hadoop, MongoDB itp.), Ale większość zauważalnie, Juju pozwala na wdrażanie i natychmiastową integrację aplikacji (relacja add pomiędzy Wordpress i MySQL automatycznie konfiguruje tabele i dane Wordpress wewnątrz MySQL).

Serwery aplikacji (java, php, node.js, scala itp.) Mogą współpracować z kontrolą wersji, dlatego możliwe jest automatyczne wdrażanie i skalowanie aplikacji. W przeciwieństwie do PaaS, nie jesteś ograniczony do konkretnego stosu oprogramowania, ale nadal zyskujesz natychmiastowe korzyści z wdrażania, integracji i skalowania. Pomyśl o tym jako o elastycznym PaaS lub FlexiPaaS, który natychmiast wdraża, integruje i skaluje usługi oprogramowania bez ograniczania lub blokowania.

Źródło - Ostrzeżenie: wymagane logowanie.

Jorge Castro
źródło
3

Mówiąc najprościej, juju zawiera w sobie odnajdywanie usług, magazyn kluczowych wartości i zarządzanie konfiguracją. Lalek / szef kuchni itp. Są czystym zarządzaniem konfiguracją.

Juju jest oparte na zdarzeniach i wykorzystuje centralny „węzeł ładowania początkowego” do śledzenia i koordynowania zdarzeń. Lalek i szef kuchni mogą sprawić, że będą pojawiać się na podstawie wydarzeń, jednak zazwyczaj wykonują odpowiednią pracę zgodnie z harmonogramem.

Afaik, nie możesz uruchomić juju w stanie rozproszonym lub bez agenta, a jest to możliwe w przypadku większości systemów zarządzania konfiguracją.

W przeważającej części kukły itp. Są językami specyficznymi dla domeny, podczas gdy juju jest systemem, a nie językiem.

J0hnG4lt
źródło