Zrozumienie narzędzi DevOps: Ansible i Terraform

Ansible i Terraform – słyszałeś o tych narzędziach DevOps? Ten artykuł jest o nich i ich różnicach.

Infrastructure as Code (IaC) jest podstawową częścią domeny DevOps i podstawową umiejętnością, którą muszą posiadać inżynierowie DevOps. IaC służy do udostępniania i zarządzania infrastrukturą IT za pomocą kodu konfiguracyjnego, który jest plikami definicji do odczytu maszynowego. Stosując takie podejście inżynierii oprogramowania do operacji, można zautomatyzować infrastrukturę IT za pomocą skryptów programistycznych.

Kiedy inżynier DevOps myśli o automatyzacji za pomocą kodu w DevOps, zawsze podświetlane są dwa narzędzia DevOps, Terraform i Ansible. Oba są najwyżej ocenianymi i szeroko stosowanymi narzędziami w domenie DevOps. Ale wiele osób jest nowych w tych narzędziach i nie zna kluczowych różnic między nimi. W tym artykule omówię Terraform, Ansible i ich kluczowe różnice.

Co to jest Terraform?

Terraforma to infrastruktura open-source jako narzędzie do tworzenia kodu stworzone przez HashiCorp. Możesz zaaranżować pełną infrastrukturę IT, używając bardzo łatwego w użyciu języka deklaratywnego w Terraform. W Terraform musisz zadeklarować i skonfigurować niezbędne zasoby dla infrastruktury. Następnie zajmie się wszystkimi wymaganymi zależnościami i zbuduje dla Ciebie infrastrukturę.

Terraform wystartował zaledwie kilka lat temu, w 2014 roku, ale wskaźnik przyjęcia tego narzędzia był fantastyczny. Oferuje doskonałe funkcje, które ułatwiają pełną orkiestrację infrastruktury IT, ponieważ konfigurowanie całej infrastruktury w dużej organizacji jest złożone. Możesz również zintegrować to narzędzie ze wszystkimi popularnymi dostawcami chmury, takimi jak AWS, GCP itp.

Większość organizacji IT ma różne środowiska pracy dla różnych zespołów, więc zespoły programistyczne, pomostowe lub QA i produkcyjne będą miały osobne środowiska. Po pewnym czasie zarządzanie środowiskiem produkcyjnym nie jest łatwe. Aby ułatwić zarządzanie, organizacje używają Terraform do kodowania wszystkiego w środowisku produkcyjnym. Korzystając z terraform, możesz bardzo szybko obracać środowiska deweloperskie i pomostowe, które będą bardzo podobne do środowiska produkcyjnego. Pomaga to w tworzeniu i testowaniu aplikacji na podobnej platformie co produkcja.

Wiele dużych organizacji, takich jak Starbucks, Slack, Uber itp., wykorzystuje funkcje Terraform.

Oto kilka zalet Terraforma:

  • Zarządza usługami za pomocą prostego GUI.
  • Opisuje infrastrukturę dla GCP, AWS, Azure i innych przy użyciu prostego języka (deklaratywnego).
  • Obsługuje kontrolę dostępu opartą na rolach (RBAC) w celu zapewnienia bezpieczeństwa.
  • Można go łatwo aprowizować za pomocą OpenStack, Azure, AWS, GCP, korzystając z ich interfejsów API
  • Jest zgodny z architekturą bez wzorca, więc nie ma węzła głównego do śledzenia wszystkich aktualizacji konfiguracji.
  • Zespoły w organizacji mogą z łatwością współpracować nad infrastrukturą za pomocą rejestru terraform.
  • Integracja z platformami ciągłej integracji, takimi jak GitLab, Jenkins, Travis w celu wdrażania potoków DevOps, jest łatwa.

Co to jest Ansible?

Ansible to narzędzie do zarządzania konfiguracją w domenie DevOps, które służy do automatyzacji wszystkich zadań IT. Ansible to również narzędzie typu open source, które używa zarówno języków deklaratywnych, jak i proceduralnych do zarządzania konfiguracją. To narzędzie ma wyjątkowe wsparcie od wszystkich popularnych dostawców chmury i automatyzuje aplikacje, sieci, infrastrukturę, zabezpieczenia, kontenery itp. Znacznie zmniejsza złożoność procesów DevOps, dlatego wielu inżynierów DevOps woli korzystać z tego narzędzia.

Ansible z łatwością automatyzuje najbardziej złożoną infrastrukturę, używając prostych plików konfiguracyjnych YAML (czytelnych dla człowieka). Wykorzystuje plik kodu napisany w YAML do zarządzania konfiguracją; ten plik kodu nazywa się Ansible Playbook. Ansible jest bezagentowy i ma mastera, który przekazuje wszystkie konfiguracje wymagane do zarządzania i aktualizowania aplikacji na zdalnych serwerach.

W Ansible musisz używać SSH do łączenia się z węzłami w infrastrukturze IT. Po pomyślnym nawiązaniu połączenia z węzłem Ansible przesyła najnowsze konfiguracje przy użyciu modułów Ansible w celu zainstalowania, zaktualizowania lub usunięcia aplikacji. Masz również opcje uruchamiania poleceń ad-hoc w Ansible w celu szybkiego wykonywania małych zadań.

Oto kilka zalet i funkcji Ansible:

  • Ponieważ Ansible jest bezagentowy, nie musisz instalować i uruchamiać agentów w węzłach, aby wykonywać zadania.
  • Ponieważ Ansible został zbudowany na Pythonie, ma mnóstwo bibliotek do zaoferowania w Pythonie, dlatego jest bardzo przyjazny dla programistów.
  • Zapewnia bezpieczne uwierzytelnianie przy użyciu SSH.
  • Ansible Tower zapewnia funkcje wizualizacji na poziomie przedsiębiorstwa.
  • Master wysyła najnowsze konfiguracje na serwery zdalne w celu wykonania zmian w infrastrukturze, dzięki czemu obsługuje model oparty na wypychaniu.
  • Wykorzystuje czytelne dla człowieka pliki YAML do zarządzania konfiguracją, więc nie są wymagane żadne dodatkowe umiejętności kodowania.

Terraform vs. Ansible: różnice

Orkiestracja a zarządzanie konfiguracją

Ansible to narzędzie do zarządzania konfiguracją, a Terraform to narzędzie do orkiestracji. To najbardziej podstawowa różnica między Terraformem a Ansible. Chociaż niektóre funkcje są wspólne dla tych narzędzi, nadal różnią się od siebie.

Ansible służy do dodawania, aktualizowania, usuwania i zarządzania konfiguracją infrastruktury IT, natomiast Terraform służy do deklarowania składników infrastruktury i organizowania ich wśród wielu dostawców chmury.

Procedura a deklaratywność

Terraform używa deklaratywnego języka konfiguracji do deklarowania zasobów infrastruktury IT. Ansible używa zarówno języków proceduralnych, jak i deklaratywnych do zarządzania konfiguracją. Sposób proceduralny jest używany w Ansible do uruchamiania poleceń ad-hoc i osiągania żądanej konfiguracji infrastruktury. Moduły ansible wykorzystują podejście deklaratywne.

Zmienna kontra niezmienna infrastruktura

Możesz tworzyć zmienną infrastrukturę za pomocą Ansible i niezmienną infrastrukturę za pomocą Terraform. Ansible zarządza i konfiguruje oprogramowanie infrastruktury na tym samym serwerze. Gdy wprowadzasz więcej aktualizacji konfiguracji, środowisko produkcyjne staje się złożone i prowadzi do wielu błędów, które są trudne do zidentyfikowania i naprawienia.

Terraform używa przede wszystkim świeżego obrazu platformy Docker do każdego wdrożenia na serwerze. Terraform tworzy nowy obraz platformy dokującej, aby zaktualizować dowolne oprogramowanie w infrastrukturze, wdraża ten obraz na wszystkich serwerach i usuwa stary obraz dokowanej konfiguracji. Dzięki temu nawet po wielu aktualizacjach konfiguracji środowisko pozostaje stabilne.

Mistrz kontra bez mistrza

Ansible ma główną architekturę maszyny odpowiedzialną za przechowywanie pełnego stanu infrastruktury i wypychanie nowych aktualizacji konfiguracji na zdalne serwery. Dlatego w ansible nazywa się to modelem wdrażania opartym na wypychaniu.

W Terraform nie ma oddzielnego systemu nadrzędnego. Jednak gdy współpracuje z dostawcami chmury, takimi jak GCP, AWS za pośrednictwem interfejsów API, serwer API jest w tym przypadku maszyną główną.

Wspólnota

Dla porównania społeczność Ansible jest silniejsza niż Terraform. Na przykład Ansible ma 45 gałęzi, 49,7K star, 51 836 zatwierdzeń i 21K rozwidlenia na GitHub, podczas gdy Terraform ma 183 gałęzie, 28,7K star, 28 778 zatwierdzeń i 6,9K rozwidlenia. Obecnie społeczność obu narzędzi dynamicznie się powiększa.

Który wybrać, Ansible czy Terraform?

Powiedziałbym, że to nie jest porównanie jabłka do jabłka. Odpowiedź na to pytanie zależy od wymagań biznesowych. Możesz użyć Ansible do zarządzania konfiguracją, dodać Terraform do orkiestracji infrastruktury IT. Jeśli Twoja organizacja współpracuje z dostawcami chmury, lepszym rozwiązaniem będzie współpraca z Terraform. Oba narzędzia mają swoje ograniczenia i zalety i oba są popularnymi narzędziami w domenie DevOps. Tak więc, w zależności od opisu problemu, który próbujesz rozwiązać, możesz wybrać jedno z narzędzi.

Oto tabela porównawcza, która podsumowuje różnice między Ansible i Terraform.

Kryteria
Ansible
Terraforma
Założona dnia
2012
2014
Opracowany przez
Ansible Inc. / Red Hat Inc.
HashiCorp
Napisane w
Pyton
Iść
Rodzaj
Narzędzie do zarządzania konfiguracją
Narzędzie do orkiestracji
Język
Używa języków proceduralnych i deklaratywnych
Używa języka deklaratywnego
Infrastruktura
Obsługuje zmienną infrastrukturę
Obsługuje niezmienną infrastrukturę
Zarządzanie cyklem życia
Nie
TAk
Pakowanie i szablonowanie
W pełni obsługiwane
Częściowy
Udostępnianie maszyn wirtualnych i tworzenie sieci
Częściowy
W pełni obsługiwane

Społeczność i wsparcie

49 000+ gwiazdek
28 000+ gwiazdek

Wniosek 👩‍💻

Chodziło o Ansible, Terraform i ich różnice. Oba narzędzia DevOps są szeroko stosowane w środowiskach produkcyjnych i często są obecne w większości większych organizacji. Więc na co czekasz? Śmiało i wybierz narzędzie, które jest bardziej odpowiednie dla wymagań biznesowych Twojej organizacji. Możesz zacząć od nauki jednego z narzędzi, ale znajomość obu daje ci przewagę w zróżnicowanej branży.

Możesz polubić:

Najlepsze repozytorium hostingu pakietów dla Twoich projektów DevOps.