KursyTerraform i OpenTofu od zera do bohatera
Terraform i OpenTofu od zera do bohatera
Infrastructure as Code, której nie boisz się zrobić apply — OpenTofu-first, Terraform-aware, zgodnie z rynkiem 2026
Program
- Czym jest Infrastructure as Code i po co ci ona Dlaczego klikanie infrastruktury w konsoli nie skaluje się i prędzej czy później kończy awarią, której nikt nie umie odtworzyć. Podejście deklaratywne kontra imperatywne: opisujesz stan docelowy, narzędzie samo wylicza kroki. Pierwsze spotkanie z pojęciem dryfu — rzeczywistość, która odjechała od kodu. Mapa narzędzi IaC i miejsce Terraforma/OpenTofu na niej. Podgląd
-
Terraform kontra OpenTofu: jedna składnia, dwa narzędzia Historia, którą musisz znać na rozmowie rekrutacyjnej: zmiana licencji Terraforma na BSL w 2023, fork OpenTofu pod Linux Foundation, przejęcie HashiCorp przez IBM. Dlaczego w 2026 OpenTofu to bezpieczny domyślny wybór dla nowych projektów i co realnie różni oba narzędzia (szyfrowanie state, tempo wydań), a co jest identyczne (CLI, HCL, providery). Instalacja obu narzędzi i zarządzanie wersjami. 🔒
-
Pierwszy zasób: init, plan, apply Struktura projektu: blok terraform, required_providers, blok provider, pierwszy blok resource. Cykl życia konfiguracji: tofu init (co powstaje w katalogu .terraform i po co jest plik lock), tofu plan, tofu apply, tofu destroy. Adres zasobu jako jego tożsamość. Pierwszy zasób powstaje, żyje w stanie i ginie — kontrolowanie tego cyklu to fundament wszystkiego dalej. 🔒
-
HCL: bloki, argumenty i typy danych Anatomia HCL: bloki, etykiety, argumenty, bloki zagnieżdżone. Typy: string, number, bool, list, map, object i kiedy którego używać. Komentarze, konwencje nazewnicze, układ plików w katalogu (main.tf, variables.tf, outputs.tf — konwencja, nie wymóg). Narzędzia higieny kodu: tofu fmt i tofu validate jako pierwsza linia obrony przed literówką, która poszłaby na produkcję. 🔒
-
Zmienne i outputy: parametryzacja konfiguracji Blok variable: type, default, description, validation. Skąd zmienna bierze wartość i w jakiej kolejności: default, terraform.tfvars, pliki -var-file, zmienne środowiskowe TF_VAR_, flaga -var — precedencja, którą trzeba znać, bo błędne założenie o niej to klasyczny sposób na apply z niewłaściwą wartością. Blok output: eksponowanie wartości na zewnątrz, flaga sensitive. 🔒
-
Wyrażenia, funkcje i tofu console Interpolacja i referencje między zasobami. Operator warunkowy, for-expressions na listach i mapach, operator splat. Najczęściej używane funkcje wbudowane: format, join, lookup, merge, try. Polecenie tofu console jako laboratorium do testowania wyrażeń bez dotykania infrastruktury. Wzmianka o funkcjach definiowanych przez providery — nowość dostępna w OpenTofu i Terraformie, z różnicami w tempie adopcji. 🔒
-
Providers, resources i data sources Provider jako wtyczka tłumacząca HCL na API świata: rejestr providerów, ograniczenia wersji (~>, >=), plik .terraform.lock.hcl i dlaczego commituje się go do repo. Różnica między rejestrem OpenTofu a Terraform Registry — i dlaczego dla użytkownika jest w praktyce niewidoczna. Data sources: czytanie istniejącego świata zamiast hardkodowania wartości. Alias providera dla wielu instancji. 🔒
- Czytanie planu: najważniejsza umiejętność w IaC Plan to jedyna zapora między tobą a skasowaną produkcją. Symbole +, -, ~ oraz -/+ (destroy and replace) i fraza forces replacement — miejsce, w które patrzysz zawsze. Wartości known after apply. Zapisywanie planu do pliku flagą -out i po co to CI/CD. Flaga -detailed-exitcode. Zasada niepodlegająca negocjacji: nieprzeczytany plan to nieznana liczba zasobów do skasowania. Podgląd
-
Zależności: graf, kolejność i depends_on Skąd narzędzie wie, co stworzyć najpierw: zależności niejawne wynikające z referencji między zasobami i graf skierowany budowany z kodu. Kolejność przy tworzeniu i odwrotna przy niszczeniu. Argument depends_on — kiedy jest naprawdę potrzebny (zależność niewidoczna w argumentach), a kiedy jest objawem złego projektu. Cykle zależności i jak czytać błąd o nich. 🔒
-
State: anatomia świętego pliku Plik terraform.tfstate od środka: serial, lineage, atrybuty zasobów — w tym sekrety zapisane plaintext. State jako jedyna pamięć narzędzia: mapowanie między kodem a światem. Dlaczego ręczna edycja stanu to proszenie się o katastrofę i jakie polecenia istnieją zamiast niej: tofu state list, tofu state show, tofu show. Co się dzieje, gdy stan zginie — i dlaczego to nie jest pytanie teoretyczne. 🔒
-
Remote state, blokady i szyfrowanie stanu Stan lokalny kończy się w momencie, gdy do repo dołącza druga osoba. Backendy zdalne i migracja stanu. State locking: co się dzieje, gdy dwa apply ruszą równocześnie bez blokady, i jak działa force-unlock (oraz kiedy jego użycie to błąd). Natywne szyfrowanie state w OpenTofu (blok encryption) — funkcja, której Terraform nie ma i sztandarowy argument za OpenTofu w 2026. 🔒
-
Dryf: gdy rzeczywistość odjeżdża od kodu Skąd bierze się dryf: ręczna poprawka o 3 w nocy, automat skalujący, awaria po stronie dostawcy. Mechanizm refresh i tryb tofu plan -refresh-only jako bezpieczny audyt bez ryzyka zmian. Dwa świadome wyjścia z dryfu: zaakceptować rzeczywistość (poprawić kod i przyjąć stan) albo ją nadpisać (apply przywracający stan z kodu). Regularny plan jako audyt infrastruktury — praktyka, która wyłapuje ręczne zmiany, zanim zaskoczą przy wdrożeniu. 🔒
-
Pętle: count i for_each — kiedy które Meta-argumenty count z indeksem numerycznym i for_each z mapą lub setem: adresowanie instancji, składnia referencji. Klasyczna pułapka, która skasowała niejedną produkcję: usunięcie elementu ze środka listy przy count przesuwa indeksy i plan chce wymienić wszystkie kolejne zasoby. Dlaczego for_each z kluczami tekstowymi jest odporny na ten problem i powinien być domyślnym wyborem. Konwersja istniejącej konfiguracji z count na for_each. 🔒
-
Moduły: pisanie, użycie i rejestr Moduł jako funkcja dla infrastruktury: katalog z variables, main i outputs. Wywołanie modułu, przekazywanie wejść, odczyt wyjść, adresy module.*. Źródła: ścieżka lokalna, rejestr publiczny, git — i wersjonowanie, bez którego moduł współdzielony staje się tykającą bombą. Kompozycja root module z modułów. Kiedy moduł to przesada i jedna warstwa abstrakcji za dużo. 🔒
-
Środowiska dev/stage/prod: workspaces i alternatywy Polecenie tofu workspace: osobny stan na workspace przy wspólnym kodzie, referencja terraform.workspace w konfiguracji. Kiedy workspaces wystarczają (środowiska bliźniacze), a kiedy są pułapką: prod w tym samym backendzie co dev, jeden błędny workspace przed apply. Alternatywy używane w poważnych zespołach: osobne katalogi i osobne backendy per środowisko plus pliki tfvars. Twarda zasada: zawsze wiesz, w które środowisko celujesz, zanim zatwierdzisz. 🔒
-
Sekrety: czego nigdy nie commitować Trzy miejsca, którymi sekret wycieka z IaC: kod w repo, pliki tfvars i — najczęściej zapominane — state, w którym Terraform trzyma wartości plaintext. Flaga sensitive na zmiennych i outputach oraz jej granice (maskuje wyjście, nie zawartość stanu). Co należy do .gitignore. Dostarczanie sekretów przez zmienne środowiskowe i menedżery sekretów (Vault, SOPS — wzmianka). Szyfrowanie state w OpenTofu jako domknięcie ostatniej warstwy. 🔒
-
Import: obejmij kodem to, co wyklikane Realia brownfield: w większości firm infrastruktura istniała na długo przed IaC. Polecenie tofu import kontra deklaratywne bloki import (od wersji 1.5) — dlaczego bloki wygrywają: przechodzą code review i są powtarzalne. Generowanie konfiguracji z istniejących zasobów przez tofu plan -generate-config-out. Pułapka importu: zasób w stanie z niedopasowaną konfiguracją to plan, który chce „naprawiać” produkcję. Definicja ukończonego importu: plan bez zmian. 🔒
-
Refaktoryzacja: moved, removed i state mv bez ofiar Zmiana nazwy zasobu albo przeniesienie go do modułu to dla planu destroy plus create — chyba że powiesz narzędziu, iż to ten sam zasób. Bloki moved: deklaratywne, wersjonowane, przechodzą review. Polecenie tofu state mv: ręczne, natychmiastowe, bez śladu w repo — i przez to ryzykowne w zespole. Blok removed i tofu state rm: wyjęcie zasobu spod zarządzania bez niszczenia go. Żelazna zasada refaktoryzacji: po każdym kroku plan ma pokazywać zero zmian. 🔒
-
CI/CD dla IaC: plan w PR, apply za bramką Wzorzec, który stosuje każdy dojrzały zespół: pipeline uruchamia fmt, validate i plan przy pull requeście, plan jako artefakt (-out) trafia do review, a apply wykonuje się wyłącznie z zatwierdzonego pliku planu, za ręczną bramką i tylko z chronionej gałęzi. Problem stale plan: świat zmienił się między planem a apply. Flaga -detailed-exitcode do wykrywania zmian w automatach. Przegląd narzędzi klasy TACOS: Atlantis, Spacelift, env0 — wzmianka, gdzie kończy się goły pipeline. 🔒
-
Pułapki produkcyjne i dobre praktyki: apply bez strachu Katalog rzeczy, które naprawdę kasują produkcję: niezauważone forces replacement na bazie danych, apply w złym workspace, kaskada count, destroy odpalone w złym katalogu. Obrona w warstwach: lifecycle prevent_destroy i create_before_destroy, ignore_changes, ograniczanie blast radius przez dzielenie stanu na mniejsze niezależne części, flaga -target jako narzędzie awaryjne, nie codzienne. Checklist produkcyjny kursu i przygotowanie do egzaminu próbnego. 🔒
Infrastruktura klikana ręcznie w konsoli ma dwie cechy: nikt nie wie, jak dokładnie wygląda, i nikt nie potrafi jej odtworzyć. Infrastructure as Code rozwiązuje oba problemy — ale wprowadza własne: plik stanu, którego uszkodzenie potrafi kosztować dzień odtwarzania środowiska, oraz apply, które przy nieprzeczytanym planie potrafi skasować produkcyjną bazę jednym potwierdzeniem. Ten kurs prowadzi cię od pierwszego tofu init do momentu, w którym zarządzasz produkcyjną infrastrukturą w kodzie i czytasz plan tak, jak czyta się diff przed mergem do maina.
Kurs jest OpenTofu-first, Terraform-aware — i to świadoma decyzja na stan rynku 2026, nie moda. Od zmiany licencji Terraforma na BSL w 2023 i przejęcia HashiCorp przez IBM rynek IaC jest dwutorowy: Terraform oraz OpenTofu, fork rozwijany pod Linux Foundation, w pełni open-source, z natywnym szyfrowaniem state i governance fundacji. Dla nowych projektów OpenTofu to dziś wybór bez ryzyka, a ponieważ CLI i język są identyczne (terraform ≈ tofu, te same polecenia i flagi), ucząc się jednego narzędzia znasz oba. W pracy spotkasz i Terraforma, i OpenTofu — po tym kursie żadne cię nie zaskoczy, a różnice (szyfrowanie stanu, funkcje definiowane przez providery) omawiamy dokładnie tam, gdzie mają znaczenie.
Jak w pozostałych kursach platformy: zero teorii dla teorii. Każda lekcja kończy się quizem, większość ćwiczeniem w emulatorze konsoli w przeglądarce — piszesz konfigurację, uruchamiasz tofu plan i tofu apply, widzisz stan, psujesz go i naprawiasz, bez zakładania konta w żadnej chmurze. Każda pułapka w tym kursie kosztowała kiedyś kogoś noc albo bardzo dużo pieniędzy: kaskada replace po usunięciu elementu z count, apply w złym workspace, sekrety leżące plaintext w state, stale plan w CI/CD. Kurs kończy egzamin próbny z 60 pytaniami pokrywającymi wszystkie domeny.
Dostęp do kursu
169 złPełny dostęp do wszystkich 20 lekcji, ćwiczeń i sprawdzianów, bezterminowo. Płatność BLIK-iem, przelewem albo kartą — dostęp aktywuje się od razu po zaksięgowaniu.
Kup dostęp — 169 zł Mam kod — załóż konto
Dla zespołu: jeden kod na dowolną liczbę miejsc — rozdajesz go ludziom, zamiast zakładać konta za nich. Napisz na kursy@aurora-tech.pl, ilu osób dotyczy.