TERRAFORM | Wprowadzenie

Co to jest Terraform?

 

Hashicorp Terraform jest narzędziem typu open source do powoływania infrastruktury chmury i zarządzania nią. Określa ono infrastrukturę w plikach konfiguracji opisujących topologię zasobów w chmurze. Oczywiście nie jest to jedyne zastosowanie co widzimy poprzez różnorodność dostępności “providerów”. Interfejs wiersza polecenia (CLI) narzędzia Terraform zawiera szereg użytecznych poleceń które służą m.in. do formatowania plików konfiguracyjnych, validowania funkcji wbudowanych w terraformie. Narzędzie to też nalezy do tzw buzz worda “Infrastructure as Code” – IaC, która staje się cora bardziej popularne. Definicja z wikipedi IaC:

“Infrastructure as code (IaC) is the process of managing and provisioning computer data centers through machine-readable definition files, rather than physical hardware configuration or interactive configuration tools”

Dlaczego piszę o TERRAFORMie ?

W większości przypadków, kiedy zaczynamy przygodę np. z vCloud Directorem czy innym dostawcą chmury infrastrukturę tworzymy poprzez w konsolę webową. Jest to standardowy sposób poznania jak działa dany dostawca usług chmurowych. Ciężko sprawdza się to, jeżeli próbujemy stworzyć środowisko produkcyjne. Z chwilą, gdy musimy postawić drugie środowisko (np. testowe, developerskie, czy produkcyjne), klikanie po konsoli zaczyna być uciążliwe. Z czasem może to powodować błędy i różnice między infrastrukturami. Inną sprawą jest sytuacja, kiedy ktoś przypadkiem zmienni jakieś ustawienie i okazuje się, że część naszej infrastruktury przestaje działać, wtedy musimy po omacku szukać co się zmieniło. Jednym z narzędzi, które pozwalają na rozwiązywanie tego typu problemów jest właśnie terraform. Kolejną rzeczą jest to, że narzędzie zarządza wywołaniami API kierowanymi do różnych dostawców i obsługuje wszystkie zasoby architektury (ilość zależy od poziomu rozwoju providera), od maszyn wirtualnych po rekordy DNS, z uwzględnieniem baz danych, elementów sieci czy bloków pamięci masowej. Dzięki swojej elastyczności może być wykorzystywane w połączeniu z różnorodnymi platformami. Dlaczego to zmienia zupełnie podejście do projektowania infrastruktury? Używając Terraform, możesz edytować każdy element architektury, tworzyć jego wersje lub udostępniać w repozytorium. Dzięki automatyzacji możliwe jest zatem korzystanie z łatwych do odtworzenia środowisk przy jednoczesnym monitorowaniu wszystkich modyfikacji i zarządzaniu cyklami życia. Wszystko to przy zastosowaniu łatwego do utrzymania i zrozumiałego kodu.

 

Przykładowe zastosowanie

 

Automatyzacja zarządzania infrastrukturą

Oparte na szablonach pliki konfiguracji narzędzia Terraform umożliwiają definiowanie, powoływanie i konfigurowanie zasobów na różnych platformach w powtarzalny i przewidywalny sposób. Zautomatyzowanie infrastruktury przynosi kilka korzyści:

  • Zmniejsza możliwość popełnienia błędów przez człowieka podczas wdrażania infrastruktury i zarządzania nią.
  • Wielokrotnie wdraża ten sam szablon, aby tworzyć identyczne środowiska programowania, testowania i produkcji.
  • Zmniejsza koszt środowisk programowania i testowania, tworząc je na żądanie.

 

Analizowanie zmian w infrastrukturze przed ich wprowadzeniem do środowiska

Gdy topologia zasobów staje się coraz bardziej złożona, zrozumienie znaczenia i wpływu zmian w infrastrukturze może być trudne. Narzędzie Terraform zapewnia interfejs wiersza polecenia (CLI), który umożliwia użytkownikom zweryfikowanie i wyświetlenie podglądu zmian w infrastrukturze przed ich wdrożeniem. Wyświetlenie podglądu zmian w infrastrukturze w bezpieczny, produktywny sposób przynosi kilka korzyści:

  • Członkowie zespołu mogą współpracować bardziej efektywnie dzięki szybkiemu zrozumieniu proponowanych zmian i ich wpływu.
  • Niezamierzone zmiany można wychwycić na wczesnym etapie procesu programowania.
  • Możliwość śledzenia zmian w kodzie i prosta możliwość zmiany infrastruktury do sprzed modyfikacji ( wersjonowanie poprzez GITa)

 

W związku z tym iż odkrywam dopiero tę technologię w miarę upływy czasu planuje wypuścić serię wpisów w postaci postów lub video z testami providerów, które z mojego punktu widzenia są wartościowe:

 

Wszelkie testy będę robił na infrastrukturze chmurowej EXEA Datacenter, która udostępniła mi platformę na eksperymenty.

Gotowe i działające kody będe publikował na platformie GITHUB.

Jeśli chciałbyś uczestniczyć w tej przygodzie jednocześnie sam się ucząc zachęcam do ZASUBSKRYBOWANIA mojej listy mailowej gdzie będę Cię informował o kolejnych wpisach tego typu i nie tylko.

żródła:

  • https://github.com/MicrosoftDocs/azure-docs.pl-pl/blob/master/articles/terraform/terraform-overview.md
  • https://www.terraform.io