Infrastruktura jako Kod: Uprość Życie z Terraform
Autor: Idego Group

Większość inżynierów z kilkuletnim doświadczeniem w infrastrukturze pamięta, jak skomplikowane i czasochłonne było zarządzanie infrastrukturą IT. Administratorzy systemów ręcznie montowali serwery w centrach danych, podłączali sieć i pamięć masową, instalowali systemy operacyjne i konfigurowali je zgodnie z wymaganiami zespołu. Ten ręczny proces powodował liczne problemy, w tym błędy ludzkie i niespójne konfiguracje elementów infrastruktury.
Narodziny automatyzacji
Inżynierowie początkowo używali skryptów do osiągania pożądanych stanów infrastruktury, co zapoczątkowało ewolucję automatyzacji. Technologie wirtualizacji rozwijające się od maszyn wirtualnych do kontenerów, w połączeniu z rosnącym przyjęciem rozwiązań cloud-native i chmury publicznej, znacząco zmieniły perspektywy dostarczania i zarządzania infrastrukturą.
Definicja infrastruktury jako kodu
Infrastruktura jako Kod (IaC) to zasadniczo automatyzacja dostarczania i zarządzania infrastrukturą przy użyciu zasad i praktyk tworzenia oprogramowania. Kod definiujący infrastrukturę IT jest przechowywany w systemach kontroli wersji, pisany, testowany i wdrażany jak tradycyjne oprogramowanie.
Arsenal automatyzacji
Istnieje wiele narzędzi do automatyzacji infrastruktury, w tym Puppet, Ansible, Azure Resource Manager, Chef i SaltStack. Odpowiednie narzędzie zależy od konkretnego przypadku użycia i celów - różne narzędzia nadają się do zarządzania infrastrukturą, instalacji aplikacji, jednorazowych konfiguracji i zmian po instalacji.
Szybkie spojrzenie na Terraform
Terraform to pojedynczy plik binarny Golang do pobrania ze strony Hashicorp. Działa w trzech etapach: pisanie (definiowanie infrastruktury w HCL), plan (generowanie planów wykonania) i stosowanie (wykonywanie wykrytych działań).
Plik stanu śledzi wdrożone zasoby, umożliwiając Terraform porównanie konfiguracji z istniejącą infrastrukturą. Przestrzenie robocze zapewniają niezależnie zarządzane, izolowane pliki stanu - przydatne do weryfikacji koncepcji, testowania, wielu subskrypcji, środowisk, regionów lub lokalizacji.