Infrastruktura jako kod: uprość sobie ż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ącą popularnością rozwiązań cloud-native i chmury publicznej, znacząco zmieniły możliwości dostarczania i zarządzania infrastrukturą.
Definicja infrastruktury jako kodu
Infrastruktura jako kod (IaC) to 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.
Narzędzia automatyzacji
Istnieje wiele narzędzi do automatyzacji infrastruktury, w tym Puppet, Ansible, Azure Resource Manager, Chef i SaltStack. Wybór narzędzia zależy od zastosowania 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), planowanie (generowanie planów wykonania) i zastosowanie zmian (wykonywanie zaplanowanych 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.