Zrozumienie narzędzi DevOps: Ansible i Terraform

Photo of author

By maciekx

Ansible i Terraform – czy znasz te narzędzia świata DevOps? Ten artykuł przybliży Ci ich działanie i wskaże kluczowe różnice między nimi.

Podejście „Infrastruktura jako kod” (IaC) to fundament DevOps i kluczowa umiejętność każdego inżyniera tej dziedziny. IaC umożliwia wdrażanie i kontrolę infrastruktury IT za pomocą plików konfiguracyjnych, które są czytelne dla maszyn. Wykorzystując metodykę inżynierii oprogramowania w operacjach, automatyzacja infrastruktury staje się możliwa za pomocą skryptów.

Gdy specjalista DevOps myśli o automatyzacji za pomocą kodu, na pierwszy plan wysuwają się dwa narzędzia: Terraform i Ansible. Oba te rozwiązania cieszą się wysoką renomą i są powszechnie wykorzystywane. Jednakże, wiele osób dopiero zaczyna swoją przygodę z tymi narzędziami i nie jest świadoma ich fundamentalnych różnic. W tym artykule przedstawię Terraform, Ansible i omówię aspekty, które je odróżniają.

Czym jest Terraform?

Terraform to narzędzie typu open-source, stworzone przez HashiCorp, służące do zarządzania infrastrukturą w modelu „Infrastruktura jako kod”. Umożliwia ono organizowanie kompleksowej infrastruktury IT przy użyciu prostego, deklaratywnego języka. W Terraformie, użytkownik określa zasoby i ich konfigurację, a narzędzie samodzielnie zarządza zależnościami i buduje całą infrastrukturę.

Terraform, wprowadzony na rynek w 2014 roku, szybko zyskał popularność dzięki swoim zaawansowanym funkcjom, które ułatwiają kompleksową orkiestrację infrastruktury IT, zwłaszcza w dużych organizacjach, gdzie konfiguracja infrastruktury bywa bardzo złożona. Dodatkowo, narzędzie oferuje integrację z popularnymi dostawcami usług chmurowych, takimi jak AWS czy GCP.

Większość firm IT posiada odrębne środowiska dla różnych zespołów, takie jak deweloperskie, testowe, czy produkcyjne. Zarządzanie środowiskiem produkcyjnym może być wyzwaniem. W celu ułatwienia tego procesu, Terraform jest używany do definiowania całej infrastruktury produkcyjnej w postaci kodu. Dzięki niemu można szybko tworzyć środowiska deweloperskie i testowe, które są wiernym odzwierciedleniem środowiska produkcyjnego. Ułatwia to tworzenie i testowanie aplikacji na platformie identycznej z produkcyjną.

Wiele znanych firm, takich jak Starbucks, Slack czy Uber, korzysta z możliwości oferowanych przez Terraform.

Poniżej przedstawiono kilka zalet Terraform:

  • Upraszcza zarządzanie usługami dzięki intuicyjnemu interfejsowi graficznemu.
  • Umożliwia opisywanie infrastruktury dla GCP, AWS, Azure i innych platform za pomocą łatwego języka deklaratywnego.
  • Wspiera kontrolę dostępu opartą na rolach (RBAC), zwiększając bezpieczeństwo.
  • Umożliwia łatwe dostarczanie zasobów w OpenStack, Azure, AWS, GCP za pośrednictwem API.
  • Działa w architekturze bez głównego węzła, co ułatwia zarządzanie aktualizacjami.
  • Umożliwia zespołom łatwą współpracę nad infrastrukturą dzięki rejestrowi Terraform.
  • Łatwa integracja z platformami CI/CD, takimi jak GitLab, Jenkins czy Travis, pozwala na wdrażanie potoków DevOps.

Czym jest Ansible?

Ansible to narzędzie do zarządzania konfiguracją, które służy do automatyzacji zadań IT w środowisku DevOps. Jest to rozwiązanie open-source, które wykorzystuje zarówno języki deklaratywne, jak i proceduralne do zarządzania konfiguracją. Ansible oferuje wsparcie dla wielu popularnych dostawców chmury i automatyzuje aplikacje, sieci, infrastrukturę, zabezpieczenia czy kontenery. Upraszcza skomplikowane procesy DevOps, dlatego jest chętnie wybierane przez specjalistów.

Ansible pozwala na automatyzację złożonej infrastruktury przy użyciu prostych plików konfiguracyjnych YAML (czytelnych dla człowieka). Do zarządzania konfiguracją używa plików kodu w formacie YAML, zwanych Playbookami. Ansible działa bezagentowo i ma maszynę-master, która przekazuje konfiguracje niezbędne do zarządzania i aktualizacji aplikacji na zdalnych serwerach.

Aby połączyć się z węzłami w infrastrukturze IT, Ansible używa SSH. Po nawiązaniu połączenia, Ansible przesyła aktualne konfiguracje za pomocą modułów w celu zainstalowania, zaktualizowania lub usunięcia aplikacji. Ansible umożliwia również uruchamianie poleceń ad-hoc w celu szybkiego wykonywania prostych zadań.

Poniżej przedstawiono kilka zalet i funkcji Ansible:

  • Dzięki bezagentowej architekturze nie ma potrzeby instalowania i uruchamiania agentów na węzłach.
  • Ansible, zbudowany w oparciu o Pythona, oferuje bogaty zestaw bibliotek, co czyni go przyjaznym dla programistów.
  • Zapewnia bezpieczne uwierzytelnianie za pomocą SSH.
  • Ansible Tower oferuje funkcje wizualizacji na poziomie przedsiębiorstwa.
  • Używa modelu opartego na wypychaniu, gdzie master wysyła konfiguracje na serwery zdalne, aby dokonać zmian w infrastrukturze.
  • Wykorzystuje czytelne dla człowieka pliki YAML, co eliminuje potrzebę posiadania zaawansowanych umiejętności programistycznych.

Terraform vs. Ansible: główne różnice

Orkiestracja vs. zarządzanie konfiguracją

Ansible to przede wszystkim narzędzie do zarządzania konfiguracją, a Terraform to narzędzie do orkiestracji. To najbardziej fundamentalna różnica między nimi. Choć pewne funkcje się pokrywają, ich podstawowe role są różne.

Ansible służy do dodawania, aktualizowania, usuwania i ogólnego zarządzania konfiguracją infrastruktury IT. Terraform natomiast koncentruje się na deklarowaniu i organizowaniu komponentów infrastruktury u różnych dostawców usług chmurowych.

Podejście proceduralne vs. deklaratywne

Terraform korzysta z deklaratywnego języka konfiguracji do definiowania zasobów infrastruktury. Ansible wykorzystuje zarówno podejście proceduralne, jak i deklaratywne do zarządzania konfiguracją. Podejście proceduralne jest używane w Ansible do uruchamiania poleceń ad-hoc, natomiast deklaratywne jest wykorzystywane w modułach.

Infrastruktura zmienna vs. niezmienna

Ansible jest przeznaczone do tworzenia zmiennej infrastruktury, natomiast Terraform do infrastruktury niezmiennej. Ansible zarządza i konfiguruje oprogramowanie w ramach tego samego serwera. W miarę wprowadzania kolejnych aktualizacji, środowisko produkcyjne staje się bardziej skomplikowane, a błędy trudniejsze do zdiagnozowania i naprawy.

Terraform wykorzystuje świeże obrazy platformy Docker przy każdym wdrożeniu. Tworzy nowy obraz, aby zaktualizować oprogramowanie, wdraża ten obraz na serwerach, a następnie usuwa stary obraz, co zapewnia stabilność środowiska, nawet po wielu aktualizacjach.

Architektura master vs. bez mastera

Ansible posiada centralną maszynę (master), która przechowuje stan infrastruktury i przesyła aktualizacje na serwery zdalne, co jest modelem opartym na wypychaniu.

Terraform działa bez centralnej maszyny. W przypadku współpracy z dostawcami chmury, takimi jak GCP czy AWS, serwery API pełnią rolę maszyny głównej.

Społeczność

Społeczność Ansible jest większa i bardziej aktywna niż społeczność Terraform. Na GitHub, Ansible posiada 45 gałęzi, 49,7 tys. gwiazdek, 51 836 commitów i 21 tys. forków, w porównaniu do 183 gałęzi, 28,7 tys. gwiazdek, 28 778 commitów i 6,9 tys. forków Terraform. Obie społeczności dynamicznie się rozwijają.

Które narzędzie wybrać: Ansible czy Terraform?

Porównywanie tych narzędzi nie jest jednoznaczne. Wybór zależy od konkretnych wymagań. Ansible może być wykorzystywane do zarządzania konfiguracją, a Terraform do orkiestracji. Jeśli Twoja organizacja korzysta z usług chmurowych, Terraform może być lepszym rozwiązaniem. Oba narzędzia mają swoje mocne i słabe strony. Wybór powinien być podyktowany problemem, który chcemy rozwiązać.

Poniższa tabela podsumowuje kluczowe różnice między Ansible i Terraform:

Kryteria
Ansible
Terraform
Data utworzenia
2012
2014
Stworzone przez
Ansible Inc. / Red Hat Inc.
HashiCorp
Napisane w
Python
Go
Rodzaj
Narzędzie do zarządzania konfiguracją
Narzędzie do orkiestracji
Język
Proceduralny i deklaratywny
Deklaratywny
Infrastruktura
Zmienna
Niezmienna
Zarządzanie cyklem życia
Nie
Tak
Pakowanie i szablonowanie
W pełni
Częściowo
Dostarczanie VM i sieci
Częściowo
W pełni

Społeczność i wsparcie

Ponad 49 000 gwiazdek
Ponad 28 000 gwiazdek

Podsumowanie 👩‍💻

Omówiliśmy Ansible, Terraform i różnice między nimi. Oba narzędzia są szeroko stosowane w środowiskach produkcyjnych i są popularne w większości dużych firm. Wybierz narzędzie, które najlepiej odpowiada potrzebom Twojej organizacji. Dobrze zacząć od nauki jednego z nich, ale znajomość obu zapewni Ci przewagę w branży IT.

Może Cię zainteresować:

Najlepsze repozytoria do hostingu pakietów dla Twoich projektów DevOps.


newsblog.pl