Co to jest Terraform i dlaczego się trzęsie
Opublikowany: 2024-03-12Zarządzanie konfiguracją jest istotną częścią metodologii DevOps, a narzędzia takie jak Ansible, Chef, Puppet, Terraform czy SaltStack stanowią serce ekosystemów tworzenia oprogramowania.
Terraform jest przykładem nowej generacji systemów orkiestracji konfiguracji, oferujących nową warstwę funkcji i funkcjonalności. Przyjrzyjmy się, czym jest Terraform i dlaczego się trzęsie.
Terraform to narzędzie do orkiestracji konfiguracji, które współpracuje z dowolną chmurą, niezależnie od tego, czy jest to prywatny system lokalny, czy system publiczny, i umożliwia bezpieczne i wygodne projektowanie, zarządzanie i ulepszanie infrastruktury w postaci kodu. Jako część stosu Hashicorp, obejmującego także Vagrant, Packer, Consul, Vault i Nomad, Terraform pomaga udostępnić dowolną aplikację napisaną w dowolnym języku w dowolnej infrastrukturze.
Oto zalety używania Terraform zamiast Ansible, Chef, Puppet lub SaltStack:
- Orkiestracja, a nie tylko konfiguracja
- Niezmienna infrastruktura
- Kod deklaratywny, a nie proceduralny
- Architektura tylko dla klienta
Poniżej wyjaśnimy bardziej szczegółowo, dlaczego jest to tak ważne.
Terraform, narzędzie do orkiestracji serwerów
Wszystkie powyższe narzędzia zostały stworzone z myślą o konfiguracji serwerów, co oznacza, że ich podstawowym celem jest instalacja i zarządzanie oprogramowaniem na już istniejących serwerach. Terraform koncentruje się bardziej na udostępnianiu serwerów, a wdrażanie kontenerów oprogramowania pozostawia Dockerowi lub Packerowi. Gdy całą infrastrukturę chmurową potraktujemy jak kod, a wszystkie parametry połączymy w deklaratywne pliki konfiguracyjne, wszyscy członkowie zespołu mogą z łatwością nad nimi współpracować, tak jak robiliby to nad każdym innym kodem.
Usługi doradcze Terraform mogą znacznie zwiększyć efektywność udostępniania serwerów i zarządzania infrastrukturą, zapewniając bezproblemową integrację z istniejącymi narzędziami, takimi jak Docker czy Packer, do wdrażania kontenerów oprogramowania. Wykorzystując Terraform w połączeniu z doradztwem eksperckim, zespoły mogą usprawnić zarządzanie infrastrukturą chmurową, traktując ją jak kod, umożliwiając płynniejszą współpracę i zoptymalizowane wykorzystanie zasobów.
Niezmienna infrastruktura
W przypadku Chef, Salt, Puppet lub Ansible każda aktualizacja oprogramowania musi zostać uruchomiona na miejscu. Zatem każdy serwer tworzy unikalny zapis aktualizacji w całym cyklu ich życia. Może to często prowadzić do tak zwanego dryfu konfiguracji, gdy różnice w tych konfiguracjach prowadzą do błędów, które można wykorzystać jako exploity i naruszenia bezpieczeństwa. Terraform rozwiązuje ten problem, wykorzystując podejście oparte na niezmiennej infrastrukturze , w którym każda nowa aktualizacja dowolnego parametru tworzy osobną migawkę konfiguracji, co oznacza wdrożenie nowego serwera i, jeśli zajdzie taka potrzeba, anulowanie obsługi starego. W ten sposób aktualizacja środowiska programistycznego przebiega sprawnie, łatwo i jest całkowicie odporna na błędy, a powrót do jednej z poprzednich konfiguracji jest tak prosty, jak wybranie migawki konfiguracji i udostępnienie zgodnie z nią nowego środowiska.
Deklaratywny styl kodu
O ile Chef czy Ansible wymuszają napisanie krok po kroku instrukcji proceduralnych prowadzących do osiągnięcia pożądanego stanu, o tyle Terraform, Salt czy Puppet wolą opisywać pożądany stan końcowy systemu, a samo narzędzie zajmuje się osiąganiem postawionych celów. Dlaczego jest lepiej? Ponieważ dość ograniczona liczba szablonów może zaspokoić wszystkie potrzeby związane z zarządzaniem konfiguracją, a zawarte prymitywy pozwalają na budowanie złożonego, a jednocześnie czystego i modułowego kodu. Korzystając z kodeksu proceduralnego, musisz pomyśleć o wszystkich ostatnich wydarzeniach i procesach, które miały miejsce, aby napisać jasne instrukcje. W Terraform po prostu zlecasz narzędziu zrobienie czegoś z aktualnie aktywnym stanem systemu, dlatego baza kodu pozostaje niewielka i łatwo zrozumiała.
Architektura tylko dla klienta
Terraform wykorzystuje interfejs API dostawcy chmury do udostępniania infrastruktury, co eliminuje potrzebę stosowania dodatkowych kontroli bezpieczeństwa, uruchamiania oddzielnego serwera zarządzania konfiguracją i wielu agentów oprogramowania. Ansible robi to, łącząc się przez SSH, ale możliwości są dość ograniczone. Dzięki pracy poprzez interfejsy API Terraform oferuje dosłownie nieskończoną różnorodność działań. Jest to znacznie lepsze pod względem bezpieczeństwa, łatwości konserwacji i ogólnej łatwości użytkowania.
Wady Terraformy
Ponieważ Terraform jest stosunkowo nowym narzędziem, nadal daleko mu do doskonałości. Na przykład dostawca naprawił kiedyś błąd w dostawcy zapłonu Terraform i usunął wcięcia z JSON, co wymusiło odtworzenie wszystkich wcześniej skonfigurowanych infrastruktur.
Kolejną ważną rzeczą, na którą należy zwrócić uwagę, jest to, że przy korzystaniu z tego narzędzia do orkiestracji musi być jeden kapelmistrz, ponieważ wykonywanie tych samych działań na różnych terminalach z różnymi wersjami Terraform może prowadzić do nieprzewidywalnych rezultatów. Pojawiają się oczywiste problemy związane ze współpracą i zarządzaniem, które na razie wymagają jeszcze rozwiązania. To w dużym stopniu ogranicza liczbę inżynierów DevOps pracujących z bazą kodu do jednego (lub do jednego terminala pracującego na zmiany).
Trzecią wadą Terraform jest to, że został opracowany z myślą o wdrożeniu wyłącznie w chmurze, podczas gdy jego odpowiedniki, takie jak Salt, Ansible, Puppet, działają dobrze z serwerami typu bare metal, ponieważ zostały opracowane ponad 5 lat temu, bez podejścia opartego wyłącznie na chmurze w umysł. To sprawia, że narzędzie do orkiestracji konfiguracji Terraform jest naprawdę niszowe i nie jest rozwiązaniem uniwersalnym.
Jesteśmy jednak pewni, że w ciągu najbliższych kilku lat wszystkie błędy zostaną naprawione, a wszystkie problemy rozwiązane, co jeszcze bardziej wzmocni niewątpliwe korzyści Terraform.
Korzyści z Terraformu
Oprócz wyżej wymienionych zalet, należy pamiętać o dwóch głównych zaletach Terraform:
- Super przenośność — masz jedno narzędzie i jeden język do opisu infrastruktury chmury Google, AWS, OpenStack i KAŻDEJ innej chmury. Zmiana dostawcy nie jest już problemem.
- Łatwość wdrożenia z pełnym stosem — możesz mieć instancje Amazon obsługujące kontenery Kubernetes ze swoimi obciążeniami i zarządzać całym systemem z jednego narzędzia.
Uważamy, że Terraform jest jednym z najlepszych dostępnych obecnie narzędzi do orkiestracji konfiguracji. Być może nie jest jeszcze tak popularne jak inne narzędzia, ale mocno wierzymy, że w nadchodzących latach będzie cieszyło się ogromnym zainteresowaniem. Uważamy, że twórcy Vagrant i Consul po raz kolejny pokazali swoją wiedzę i stworzyli świetny produkt.
Wnioski
Będąc oprogramowaniem typu open source, Terraform zgromadził silną i pełną pasji społeczność programistów, którzy nieustannie napędzają jego rozwój. Wierzymy, że to narzędzie jest rewelacyjne i z czasem stanie się jeszcze lepsze i znacznie bardziej popularne. Nie będzie to upadek Chefa, Ansible czy Puppet, po prostu zajmie należne mu miejsce w zestawie narzędzi DevOps.