Puppet, Salt, Chef i Ansible: A Comparison

Czas czytania: 8 minut

Który z nich jest odpowiedni dla Ciebie?

Spis treści

I. Puppet II. SaltStack III. Chef IV. Ansible IV. Conclusion

Wprowadzenie

Konfigurowanie pojedynczego serwera z wymaganym oprogramowaniem jest w miarę prostym zadaniem. Jeśli jednak na wielu serwerach trzeba zainstalować takie samo lub podobne oprogramowanie i konfiguracje, proces ten wymaga wielu roboczogodzin, co uszczupla i tak już nadwyrężone zasoby. Bez jakiejś formy automatyzacji, zadanie to może stać się niemal nie do pokonania. Z myślą o tym zadaniu opracowano nowe narzędzia do zarządzania konfiguracją, aby odpowiedzieć na potrzebę wdrażania nowych serwerów z gotowymi konfiguracjami i aktualizacjami, co pozwoliło na bardziej płynny i łatwiejszy do zarządzania proces automatyzacji. Aby utrzymać synchronizację tych serwerów i zarządzać aktualizacjami w szerokim zakresie hostów w centrum danych lub środowisku chmury, narzędzia automatyzacji, takie jak Puppet, SaltStack, Chef i Ansible, spełniają tę potrzebę.

Wybór odpowiednich narzędzi do zarządzania infrastrukturą jest krytyczną decyzją. Dlatego właśnie dokonujemy przeglądu dostępnych opcji dla tych projektów. Narzędzia te oferują najwięcej korzyści zarówno dla DevOps, jak i sysadminów. Mamy nadzieję, że te informacje wskażą Ci właściwy kierunek. Podczas gdy prawdą jest, że wszystkie narzędzia konfiguracyjne wymienione powyżej najprawdopodobniej wykonają te zadania, każde z nich oferuje inną metodologię i rolę w nieco inny sposób, aby osiągnąć ten cel. Ten artykuł ma na celu pokazać niektóre z istotnych różnic, jakie zapewnia każda platforma zarządzania oprogramowaniem. To pozwoli Ci podjąć bardziej świadomą decyzję, ponieważ staramy się dotknąć każdego tytułu oprogramowania i jego korzyści, a następnie zaoferować przegląd na końcu

.

Puppet

Puppet jest jednym z najstarszych i najbardziej zaufanych narzędzi do zarządzania w naszym zestawieniu. Z tego powodu oferuje szerszą bazę wsparcia w ramach społeczności Puppet, jak również od zespołu Puppet. Puppet dostarcza również open-source’ową edycję swojego oprogramowania, która może być zainstalowana na wielu różnych systemach operacyjnych. Wersja enterprise oprogramowania jest jednak w stanie objąć większe systemy, takie jak IBM AIX czy F5 Big-IP. Należy zauważyć, że serwer główny Puppet może być zainstalowany tylko na systemach operacyjnych Unix/Linux.

Wdrożenie Puppet składa się zwykle z serwera głównego i wielu maszyn klienckich (zwanych agentami). Puppet jest jednym z narzędzi na tej liście, które używa swojego własnego, unikalnego języka opartego na Ruby. Puppet DSL (Domain Specific Language) służy do opisywania pożądanego stanu systemu w pliku, który nazywany jest plikiem manifestu. Pliki manifestów są zasadniczo zestawem konfiguracji lub zadań, które określają, jak skonfigurowane są zasoby sieciowe i system operacyjny (takie jak usługi, pakiety i pliki). Puppet następnie kompiluje pliki manifestów w katalogi i przesyła każdy katalog do wyznaczonego węzła, dzięki czemu węzeł ten jest rekonfigurowany do pożądanego stanu w całej infrastrukturze.

Puppet dodatkowo oferuje intuicyjne i proste webowe UI, które jest wykorzystywane do realizacji większej liczby zadań, w tym zarządzania węzłami w czasie rzeczywistym. Dodatkowo, ponieważ Puppet jest skonfigurowany w formie architektury multi-master, jeśli aktualnie aktywny master ulegnie awarii, inny master zastąpi poprzedniego, aby uniknąć pogorszenia dostępności.

Puppet aktualizuje konfigurację węzłów poprzez sprawdzanie przez klientów, czy w serwerze nadrzędnym znajdują się zaktualizowane manifesty, a następnie ściąga nowe konfiguracje z serwera nadrzędnego. Ze względu na tę cechę Puppet jest bardziej zorientowany na administratora systemu niż wiele innych wymienionych tutaj narzędzi. Wadą Puppeta jest to, że nie ma natychmiastowego zdalnego wykonania dostępnego dla węzłów. Dodatkowo, Puppet ma bardziej stromą krzywą uczenia się, ze względu na wymaganą znajomość Puppet DSL i języków programowania Ruby.

Top

SaltStack

SaltStack (zwany również Salt) jest jednym z nowszych narzędzi na tej liście. Jest jednak wciąż bardzo istotne w dziedzinie zarządzania konfiguracją oprogramowania. Salt ma stosunkowo aktywną społeczność i efektywne wsparcie. Salt został zaprojektowany tak, aby umożliwić niską latencję, szybką komunikację i transmisję danych pomiędzy węzłami do zdalnego wykonania. Salt jest zaprojektowany do pracy z systemami operacyjnymi Unix/Linux i Windows, ale główny serwer Salt może pracować tylko na systemach operacyjnych Unix/Linux.

SaltStack składa się z Salt Master, który jest centralnym serwerem Salt, oraz klientów, którzy są nazywani Salt Minions, którzy działają jako agenci na każdym z węzłów. Opanowanie języka Salt jest stosunkowo proste, ponieważ jego czytelne dla człowieka konfiguracje wykorzystują Pythona i pliki YAML, co jest jedną z bardziej naturalnych i prostych struktur danych. Podczas gdy Puppet działa w taki sposób, że węzły żądają aktualizacji, Salt działa w opozycji do tego. Salt Master wypycha wszystkie konfiguracje do wszystkich maszyn klienckich. Dodatkowo, Salt pełni rolę asynchronicznego serwera plików, co zwiększa szybkość transferu plików, które są obsługiwane przez Salt Minions. Szybkość wdrażania jest jednym z głównych założeń filozofii Salt.

Salt może również działać w konfiguracji multi-master. Jeśli serwer główny Salt ulegnie awarii, agenci połączą się z innym serwerem głównym wymienionym w konfiguracji. Ta cecha zwiększa ogólną dostępność i redundancję systemu jako całości. Dodatkową zaletą Salt jest to, że pozwala na równoległe wykonywanie wielu komend jednocześnie. Komendy te są szyfrowane za pomocą AES (Advanced Encryption Standard) i przesyłane do węzłów klienckich za pomocą protokołu SSH. Ostatnią zaletą Salt jest to, że może zarządzać wieloma masterami. Salt oferuje również interfejs WWW, jednak ma on ograniczone możliwości i funkcje.

Top

Chef

Chef rozpoczął działalność jako wewnętrzne narzędzie do wdrażania serwerów, zanim został ostatecznie wydany jako oprogramowanie open-source w 2009 roku. Istotną zaletą Chefa jest to, że oferuje on również dużą społeczność wsparcia z obszerną dokumentacją i wskazówkami. Oprogramowanie Chef master i node działa zarówno na systemach Unix/Linux, ale tylko wersje klienckie i stacje robocze mogą być wdrażane na serwerach Windows.

Opcje konfiguracyjne Chefa składają się z Książek kucharskich i Receptur. Receptury to pliki definicji, które mogą być łączone z atrybutami, plikami, bibliotekami i innymi recepturami w celu stworzenia książek kucharskich. Te książki kucharskie mogą być następnie użyte do wdrożenia klienta.

Chef składa się z 3 głównych komponentów:

  • Stacja robocza Chef – Stacja robocza Chef jest używana przez inżynierów systemowych do tworzenia, testowania i wdrażania książek kucharskich na serwery główne Chef.
  • Chef Master Server – Serwery Chef są zasadniczo węzłem, w którym przechowywane są wszystkie dane konfiguracyjne Chef. Informacje te obejmują książki kucharskie, dane serwerów i inne istotne informacje.
  • Klient Chef – Klient Chef to maszyny węzłów końcowych zarządzane przez serwery główne Chef. Serwery te okresowo pobierają i wykonują konfiguracje książek kucharskich z serwera głównego Chef.

Język programowania Chefa jest podobny do Puppeta, ponieważ używa języka DSL (Domain Specific Language) unikalnego dla Chefa, ale obsługuje również skrypty napisane w Ruby.

Chef jest przede wszystkim skonfigurowany jako serwer główny Chefa, a także jako serwer zapasowy na wypadek awarii centralnego serwera głównego Chefa. Jeśli wystąpi awaria, zapasowy serwer główny zastąpi centralny serwer główny Chef. W ten sposób redundancja jest włączona do środowiska Chef. Chef oferuje również dodatkową automatyzację chmury i infrastruktury, oprócz zautomatyzowanych przepływów pracy, które są wykorzystywane do zapewnienia ciągłego dostarczania do maszyn klienckich. Jedno zastrzeżenie, na które należy zwrócić uwagę; podstawowy język faworyzuje programistów, ponieważ wymaga użycia skryptów DSL/Ruby w książkach kucharskich. Chef i jego infrastruktura są bardzo stabilne i zbudowane z myślą o niezawodności. Chef oferuje również sekwencyjną kolejność wykonywania, w przeciwieństwie do, na przykład, Salt, który zapewnia równoległe wykonywanie.

Top

Ansible

Ansible jest jednym z bardziej nowoczesnych narzędzi wykorzystywanych jako rozwiązanie do zarządzania konfiguracją. Jest to prawdopodobnie jedno z najpopularniejszych oprogramowań ze względu na swoją prostotę i łatwość konfiguracji. Podobnie jak poprzednie narzędzia, Ansible obsługuje zarówno komputery klienckie z systemem Windows, jak i Unix/Linux, ale główny serwer Ansible wymaga serwera opartego na systemie Unix/Linux.

W przeciwieństwie do poprzednich narzędzi, do działania potrzebny jest tylko serwer główny Ansible, ponieważ Ansible używa protokołów SSH (lub RDP w przypadku systemu Windows) do otwierania połączeń z serwerami klienckimi w celu wykonywania sekwencyjnych poleceń. Ansible jest podobny do Puppet w tym sensie, że pliki konfiguracyjne Ansible są oparte na Pythonie i wykorzystują pliki YAML jako dane strukturalne. Pliki te nazywane są Playbookami. Ansible obsługuje również API Pythona, które może być używane do reagowania na określone zdarzenia w celu sprawowania kontroli nad samymi węzłami. Z Ansible można również korzystać za pomocą interfejsu wiersza poleceń. Użycie interfejsu CLI w ten sposób nie wymaga użycia pliku konfiguracyjnego, jeśli chodzi o proste zadania, takie jak restartowanie serwera. W przypadku bardziej złożonych zadań konieczny jest playbook, ponieważ serwer główny przesyła informacje do węzłów klienckich. Ansible nadaje się również do zdalnego wykonywania poleceń w czasie rzeczywistym lub zarządzania aplikacjami.

W odniesieniu do nadmiarowości Ansible jest zwykle skonfigurowane jako jeden aktywny serwer główny (zwany instancją podstawową), ponieważ nie jest wymagane łączenie się z nim agentów. W razie awarii serwera głównego można skonfigurować drugi serwer główny, który przejmie jego zadania. Ponieważ Ansible wykorzystuje podejście bezagentowe, inżynier może stosunkowo szybko wdrażać zmiany lub aktualizacje do wszystkich węzłów. Wadą Ansible jest to, że komputery klienckie nie sprawdzają okresowych zmian konfiguracji na serwerze głównym.

Top

Wniosek

W uproszczeniu, menedżer konfiguracji zapewnia warstwę abstrakcji między istniejącą konfiguracją serwera a jego pożądanym stanem. Cel ten jest osiągany poprzez skupienie się na konkretnych rezultatach, a nie na zadaniach potrzebnych do ich osiągnięcia.

W naszym przeglądzie tych czterech produktów, jeśli szukamy wniosków opartych wyłącznie na popularności, zdecydowanym zwycięzcą jest Ansible. Wynika to z faktu, że znacznie większa grupa administratorów wybiera Ansible jako podstawowe narzędzie do zarządzania konfiguracją w porównaniu z innymi produktami opisanymi w tym artykule. Ansible ma swoje zalety, ponieważ pod względem struktury i paradygmatu jest ukierunkowane bardziej na rolę SysOps. Salt jest pod tym względem podobny, ale w przeciwieństwie do Puppet i Chef jest bardziej zorientowany na programistów. Dodatkowo, Ansible jest jedną z łatwiejszych opcji na tej liście do skonfigurowania, skonfigurowania i rozpoczęcia używania od razu.

Puppet, z drugiej strony, jest tym, który jest najbardziej przystępny i niezawodny z punktu widzenia użyteczności. Chociaż, jak już wcześniej wspomniano, znajomość Rubiego jest niezbędna do pełnego wykorzystania jego szerokiego zakresu funkcji, struktury i skalowalności. Konfiguracja Puppeta może stać się bardzo szczegółowa i czasami skomplikowana, ale jest to najbezpieczniejszy wybór jeśli szukasz nieheterogenicznego środowiska programistycznego.

Jeśli szukasz narzędzia konfiguracyjnego, które jest usprawnione w kierunku bardziej jednolitej infrastruktury, Ansible i Salt będą bardziej odpowiednie do tego celu. Salt sam w sobie jest jednym z bardziej niezawodnych i solidnych narzędzi na tej liście, ale jest obniżony o jedno oczko z powodu trudności w zrozumieniu niektórych głębszych opcji konfiguracyjnych przez początkujących użytkowników. Jednak nadrabia to zaawansowanymi opcjami skalowalności i przystępnym środowiskiem pracy z perspektywy SysOps lub administratora. Dostępnych jest również wiele dodatków, które poprawiają i rozszerzają możliwości UI, co zwiększa użyteczność i funkcjonalność.

Chef sam w sobie jest bardzo prostym i dobrze zaprojektowanym narzędziem. Oferuje on ulepszone podejście do łatwości dostępu i większy poziom praktyczności niż Puppet. Jak już wcześniej wspomniano, Chef może stanowić istotną przeszkodę w nauce dla administratorów systemów, którzy nie mają doświadczenia w programowaniu, ponieważ wymaga szerszego zrozumienia języków programowania i doświadczenia.

Podsumowując, Ansible jest prostym wyborem do zarządzania konfiguracją na poziomie podstawowym ze względu na dostępną dokumentację, strukturę i łatwość dostępu. Puppet jest również solidnym narzędziem, ale użytkownik lub zespół będzie musiał nauczyć się nowych procedur kodowania i funkcji, aby pokonać bardziej stromą krzywą uczenia się podczas korzystania z programowania DSL (Domain Specific Language). Jeśli chodzi o użyteczność, skalowalność i opcje wielośrodowiskowe, Salt będzie miał największy oddźwięk wśród administratorów systemów, którzy chcą skorzystać z jego wielu opcji i bardzo atrakcyjnych możliwości skalowania. Chef ma dobrze zaprojektowany układ, strukturę i oferuje znaczny poziom stabilności. Na początku mogą wystąpić pewne trudności z krzywą uczenia się, ponieważ jest on bardziej zorientowany na umiejętności programisty. Wszystkie te narzędzia pełnią określoną rolę podczas konfigurowania infrastruktury i jej pożądanych stanów. Ich wykorzystanie będzie całkowicie zależało od Twoich potrzeb konfiguracyjnych, osobistego wsparcia i poziomu wygody potrzebnego do ich wdrożenia.

Top

Chcielibyśmy, abyś do nas dołączył!

Zadzwoń do nas pod numer 800.580.4985, lub otwórz czat lub bilet, aby porozmawiać z jednym z naszych doświadczonych doradców ds. rozwiązań lub hostingu, aby dowiedzieć się, jak możesz skorzystać z tych technik już dziś!

  • .

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.