IaC (Infrastructure as Code)
IaC (Infrastructure as Code, infrastruktura jako kod) to podejście, w którym konfigurację serwerów, sieci, baz danych i innych zasobów IT definiuje się w plikach kodu, a nie klikając ręcznie w panelach czy wpisując polecenia na każdej maszynie z osobna. Infrastrukturę traktuje się jak oprogramowanie: przechowuje w systemie kontroli wersji, poddaje przeglądowi kodu i wdraża automatycznie. To jedna z fundamentalnych praktyk kultury DevOps.
Na czym polega IaC?
Zamiast dokumentować konfigurację w instrukcjach, którymi administrator posługuje się ręcznie, opisuje się ją w plikach czytelnych zarówno dla człowieka, jak i dla maszyny. Wyróżnia się dwa modele. W podejściu deklaratywnym opisuje się pożądany stan końcowy, a narzędzie samo ustala potrzebne kroki. W podejściu imperatywnym podaje się sekwencję poleceń do wykonania. Kluczową cechą dobrego IaC jest idempotencja — ponowne uruchomienie konfiguracji nie wprowadza zmian, jeśli stan docelowy już osiągnięto, co pozwala bezpiecznie powtarzać wdrożenia.
Do popularnych narzędzi należą Ansible, Terraform, Puppet i Chef — jedne skupiają się na prowizjonowaniu infrastruktury, inne na zarządzaniu konfiguracją już istniejących serwerów.
Zastosowanie w praktyce
IaC eliminuje zjawisko „dryfu konfiguracji”, w którym środowiska produkcyjne i testowe z czasem rozjeżdżają się przez ręczne zmiany. Dzięki opisowi w kodzie identyczne środowisko można odtworzyć w minuty — co jest bezcenne przy skalowaniu, odtwarzaniu po awarii czy budowie architektury high availability. IaC stanowi też podstawę potoków CI/CD oraz podejścia GitOps, gdzie repozytorium Git jest jedynym źródłem prawdy o stanie infrastruktury.
Wdrożenie IaC przynosi też korzyści poza samą automatyzacją: kod infrastruktury pełni rolę zawsze aktualnej dokumentacji, każda zmiana przechodzi przez przegląd i jest zapisana w historii wersji, a błędną konfigurację można cofnąć jak zwykły commit. Dzięki temu rośnie powtarzalność i bezpieczeństwo środowisk, a wiedza o infrastrukturze przestaje być zamknięta w głowie jednego administratora.
Powiązane pojęcia
Najczęstsze pytania
Czym różni się podejście deklaratywne od imperatywnego w IaC?
W podejściu deklaratywnym opisujesz docelowy stan infrastruktury (np. „ma istnieć 3 serwery z tą konfiguracją”), a narzędzie samo ustala, jakie kroki wykonać, by go osiągnąć. W podejściu imperatywnym określasz kolejne polecenia krok po kroku. Deklaratywne jest zwykle bezpieczniejsze, bo wspiera idempotencję.
Co oznacza idempotencja w IaC?
To właściwość, dzięki której wielokrotne uruchomienie tej samej konfiguracji daje ten sam wynik i nie powoduje niepożądanych zmian. Jeśli infrastruktura jest już w stanie docelowym, narzędzie nic nie zmienia. Idempotencja pozwala bezpiecznie uruchamiać skrypty ponownie bez ryzyka duplikowania zasobów.
