10 najlepszych narzędzi do zarządzania konfiguracją, o których musisz wiedzieć


W ciągu kilku krótkich lat DevOps przestało być marginalnym ruchem, a stało się koniecznością dla każdego lidera IT. Wokół niego jest dużo szumu, ale jest w nim też dużo wiedzy praktycznej. Udostępnianie środowisk, wdrażanie aplikacji, utrzymywanie infrastruktury — to wszystko są krytyczne, ale delikatne zadania, które tradycyjnie wykonuje się ręcznie. Co by było, gdybyśmy mogli sprawić, by maszyna robiła to wszystko za nas, nie tylko oszczędzając godziny pracy, ale także usuwając element błędu ludzkiego?

Dlaczego warto korzystać z funkcji zarządzania konfiguracją?

Oprogramowanie do zarządzania konfiguracją umożliwia korzystanie z przetestowanych i sprawdzonych praktyk tworzenia oprogramowania do zarządzania centrami danych i udostępniania ich w czasie rzeczywistym za pomocą plików definicji w postaci zwykłego tekstu. Niektórzy uważają rozwiązania CM za "DevOps in a Box", ale to nie jest w porządku. DevOps to współpraca między ludźmi, podczas gdy narzędzia CM to właśnie to: narzędzia do automatyzacji stosowania stanów konfiguracji. Jak każde inne narzędzie, są one przeznaczone do rozwiązywania określonych problemów w określony sposób. To, jak skutecznie to robią, zależy od wiedzy i umiejętności osoby, która je dzierży.

Ułatwiliśmy szybkie zapoznanie się z każdym narzędziem i porównanie go z alternatywami, dzięki czemu możesz znaleźć odpowiednie dla siebie narzędzie do zarządzania konfiguracją (i wyjaśnić, dlaczego nie wybrałeś opcji X, Y i Z).

Korzyści i zagrożenia

Automatyzacja zmian w stanie konfiguracji infrastruktury to miecz obosieczny: możesz wprowadzać zmiany bardzo szybko, ale ktoś lub coś innego musi je zweryfikować. Zastanawiając się, które narzędzie do zarządzania konfiguracją wybrać, należy również zastanowić się, jakich narzędzi uzupełniających będziesz używać, aby uniknąć kosztownych skutków automatyzacji wdrażania błędów w infrastrukturze jako kodzie. Co więcej, narzędzia do zarządzania konfiguracją oprogramowania (lub narzędzia SCM) są przyjazne dla kontroli wersji i tekstu, możemy wprowadzać zmiany w kodzie, a zmiany mogą być wprowadzane jako żądanie scalenia i wysyłane do przeglądu.

Dzięki narzędziom do zarządzania konfiguracją wiele implementacji konfiguracji specyficznych dla systemu operacyjnego jest abstrahowanych. Ten sam plik konfiguracyjny może być używany do zarządzania np. instalacją Apache HTTPD zarówno w systemach Red Hat, jak i Ubuntu.

Zła konfiguracja może stanowić ogromne zagrożenie dla cyberbezpieczeństwa, powodując naruszenia danych i inne cyberataki. Jeśli automatyzujesz konfigurację infrastruktury, musisz pomyśleć o cyberbezpieczeństwie, bezpieczeństwie informacji i zarządzaniu ryzykiem informacyjnym.

Powinieneś także pomyśleć o tym, jak bezpieczne są Twoje narzędzia do zarządzania konfiguracją i czy nie dajesz im dostępu do zbyt wielu poufnych informacji. Przemyśl zarządzanie ryzykiem dostawców i miej pod ręką ramy zarządzania ryzykiem stron trzecich oraz przeprowadź ocenę ryzyka dla bezpieczeństwa cybernetycznego.

1. CFEngine

CFEngine to jedno ze starszych narzędzi do zarządzania konfiguracją typu open source, które zapewnia konfigurację automatyzacji dla ogromnych systemów komputerowych, w tym ujednolicone zarządzanie serwerami, systemami, użytkownikami, wbudowanymi urządzeniami sieciowymi, urządzeniami mobilnymi i nie tylko. Porównujemy to do Puppet, również uznanej technologii:

"CFEngine działa na C, w przeciwieństwie do Ruby, który używa Puppet. C to niższy poziom z tych dwóch języków, a jednym z głównych zarzutów dotyczących CFEngine jest to, że krzywa uczenia się jest bardzo stroma. Oznacza to jednak, że CFEngine ma znacznie mniejsze zużycie pamięci, działa szybciej i ma znacznie mniej zależności."

2. Marionetka

Coroczny raport Puppet "State of DevOps" jest jednym z najlepszych źródeł informacji na temat trendów w DevOps. Znajomość mocnych i słabych stron platformy Puppet jest coraz ważniejsza dla osób zajmujących się operacjami. Puppet używa języka deklaratywnego lub Ruby do opisania konfiguracji systemu. Jest zorganizowany w moduły, a pliki manifestu zawierają pożądane cele stanu, aby zachować wszystko zgodnie z wymaganiami.

"Często mówi się, że Puppet to narzędzie, które zostało stworzone z myślą o administratorach systemu. Krzywa uczenia się jest mniej imponująca, ponieważ Puppet jest przede wszystkim oparty na modelach. Zrozumienie struktur danych JSON w manifestach Puppet jest znacznie mniej zniechęcające dla administratora systemu, który spędził życie w wierszu poleceń, niż składnia Ruby.

Wersja open source Puppet jest dostępna bezpłatnie, podczas gdy Puppet Enterprise jest bezpłatna dla maksymalnie 10 węzłów. Uwaga: po zainstalowaniu Puppet każdy węzeł (serwer fizyczny, urządzenie lub maszyna wirtualna) w infrastrukturze będzie miał zainstalowanego agenta Puppet.

Porównujemy Puppet do Chefa, jego najbliższego konkurenta: Puppet vs. Chef

3. Szef kuchni

Obok Puppet, Chef jest drugim graczem wagi ciężkiej na rynku platform CM i automatyzacji. Zarządza serwerami w chmurze, lokalnie lub w środowisku hybrydowym. Niezależność od chmury pozwala zarządzać zarówno centrum danych, jak i środowiskami chmurowymi jednocześnie, nawet w przypadku zmiany dostawcy chmury.

"Podobnie jak Puppet, Chef jest również napisany w Ruby, a jego CLI również korzysta z DSL opartego na Ruby. Chef wykorzystuje model master-agent, a oprócz serwera głównego, instalacja Chefa wymaga również stacji roboczej do sterowania masterem. Agenty można instalować ze stacji roboczej za pomocą narzędzia "nóż", które wykorzystuje SSH do wdrażania, zmniejszając obciążenie związane z instalacją".

Zobacz, jak wypada w porównaniu z nowicjuszem CM Ansible: Ansible vs. Chef

4. Ansible (w języku angielskim)

Nowsze niż Chef czy Puppet, Ansible to najlepsze narzędzie do zarządzania konfiguracją, wdrażania, orkiestracji typu open source, a także silnik automatyzacji. W rzeczywistości jest zawarty w popularnych dystrybucjach Linuksa, takich jak Fedora. Pomaga w automatyzacji infrastruktury IT, od dostarczania oprogramowania i zarządzania konfiguracją po wdrażanie aplikacji, zapewniając duży wzrost wydajności.

"Obecnie ich rozwiązania składają się z dwóch ofert: Ansible i Ansible Tower, przy czym ta ostatnia zawiera interfejs użytkownika i pulpit nawigacyjny platformy. Pomimo tego, że jest stosunkowo nowym graczem na arenie w porównaniu z konkurentami, takimi jak Chef czy Puppet, zyskał dość przychylną reputację wśród profesjonalistów DevOps dzięki prostym operacjom i prostym możliwościom zarządzania".

Sprawdź zalety i wady korzystania z Ansible: 5 najlepszych i najgorszych atrybutów Ansible

Ansible to jedno z naszych ulubionych narzędzi. Możesz użyć Ansible do wykonania tego samego polecenia na wielu serwerach z wiersza poleceń. Można go również użyć do automatyzacji zadań (takich jak dodawanie użytkowników, instalowanie pakietów i aktualizowanie konfiguracji serwera) za pomocą podręczników napisanych w języku YAML, ułatwiających komunikację między zespołami technicznymi i nietechnicznymi. Ansible jest prosty, bezagentowy i łatwy do odczytania zarówno dla programistów, jak i osób niebędących programistami.

Brak agentów oznacza mniejsze obciążenie serwerów. Połączenie SSH jest wymagane w trybie wypychania (domyślnie), ale tryb ściągania jest dostępny w razie potrzeby. Podręczniki można pisać za pomocą minimalnej liczby poleceń lub skalować za pomocą bardziej złożonych zadań automatyzacji, w tym ról, zmiennych i modułów.

5. Stos soli

Główny dostawca ideału "infrastruktury jako kodu", SaltStack zyskał sporą rzeszę zwolenników, mimo że pojawił się na rynku stosunkowo późno ze względu na wiele integracji z dostawcami chmury, takimi jak Google Cloud, Amazon Web Services (AWS) itp

"Salt, podobnie jak Ansible, jest rozwijany w Pythonie. Został również opracowany w odpowiedzi na niezadowolenie z hegemonii Puppet/Chef, zwłaszcza ich powolnego tempa wdrażania i ograniczania użytkowników do Ruby. Salt jest mniej więcej w połowie drogi między Puppet a Ansible - obsługuje Pythona, ale także zmusza użytkowników do pisania wszystkich poleceń CLI w Pythonie lub niestandardowym DSL o nazwie PyDSL. Wykorzystuje serwer główny i rozmieszczonych agentów zwanych sługusami do kontrolowania i komunikowania się z serwerami docelowymi, ale jest to implementowane przy użyciu biblioteki komunikatów ZeroMq w warstwie transportowej, co czyni ją o kilka rzędów wielkości szybszą niż Puppet/Chef.

Porównujemy Ansible z SaltStack, dwoma nowszymi graczami w CM: Ansible vs. Salt

6. Dok

Od czasu uruchomienia w 2013 roku Docker jest względnym nowicjuszem, który szturmem podbił świat DevOps i tworzenia oprogramowania. Kluczem do sukcesu Dockera jest jego lekka technologia konteneryzacji:

>

"Ich technologia wdraża aplikacje ze wszystkimi niezbędnymi częściami w kontenerze, zapewniając w ten sposób, że będzie działać na każdym serwerze Linux, niezależnie od konfiguracji i/lub ustawień. Kontenery można tworzyć, konfigurować i zapisywać jako szablony do użycia na innych hostach z uruchomionym aparatem platformy Docker. Te szablony można następnie wykorzystać do tworzenia większej liczby kontenerów z tym samym systemem operacyjnym, konfiguracją i plikami binarnymi".

7. Konfiguracja DSC programu PowerShell

Rozwiązaniem firmy Microsoft dla CM, które nie da się prześcignąć technologiom open source, jest PowerShell DSC:

"DSC to nowa platforma zarządzania w środowisku Windows PowerShell, która umożliwia wdrażanie danych konfiguracyjnych dla usług oprogramowania i zarządzanie nimi oraz zarządzanie środowiskiem, w którym te usługi działają.
Konfiguracja DSC udostępnia zestaw rozszerzeń języka programu Windows PowerShell, nowych poleceń cmdlet programu Windows PowerShell i zasobów, których można użyć do deklaratywnego określenia sposobu skonfigurowania środowiska oprogramowania. Zapewnia również środki do konserwacji istniejących konfiguracji i zarządzania nimi".

8. Narzędzie konfiguracyjne TeamCity

TeamCity jest również jednym z serwerów do zarządzania i ciągłej integracji opracowanym przez Jet Brains i opartym na języku programowania Java.

Dowiedz się więcej o TeamCity i Jenkins w zakresie ciągłej integracji.

9. Narzędzie konfiguracyjne JUJU

Juju to narzędzie typu open source, które kładzie nacisk głównie na zmniejszenie kosztów operacyjnych oprogramowania nowej generacji. Juju oferuje takie funkcje, jak konfiguracja, skalowanie, szybkie wdrażanie, integracja itp. JUJU nie podaje jasnych instrukcji dotyczących korzystania z dostawcy chmury OpenStack.

10. Ster kierunku

Rudder to narzędzie do zarządzania infrastrukturą IT typu open source, które działa na bazie CFEngine. Unikalna funkcja zarządzania zasobami Rudder jest w stanie zidentyfikować węzły, a także ich charakterystykę, co może okazać się przydatne podczas wykonywania działań związanych z zarządzaniem konfiguracją. Ten CMT wykorzystuje zarządzanie zasobami do identyfikowania węzłów do zarządzania konfiguracją.

Ster kierunku zależy od lekkiego agenta lokalnego, który jest zainstalowany w każdym zarządzanym systemie. Interfejs sieciowy Ruddera po stronie serwera jest zbudowany w języku Scala, a jego lokalny agent jest napisany w języku C.

Zaplanuj sukces

Niezależnie od tego, jakiego narzędzia używasz do zarządzania konfiguracją, sposobem na rozpoczęcie projektu automatyzacji jest odkrycie, co masz. Automatyzacja słabych procesów lub słabo zrozumianej infrastruktury to szybki i kosztowny sposób na zwielokrotnienie problemów. Aby w pełni wykorzystać wszelkie narzędzia do automatyzacji, należy najpierw zrozumieć, gdzie już znajdują się miny lądowe.

Powiązane artykuły