Terraform
HashiCorp Terraform
Infrastructure as Code dla wielu providerow chmurowych. Definiuj, wersjonuj i automatyzuj infrastrukture deklaratywnym kodem HCL.
Terraform to najpopularniejsze narzedzie IaC w branzy i wymagane w prawie kazdej ofercie pracy Cloud Engineera. Pozwala zarzadzac infrastruktura jak kodem - z wersjonowaniem, code review i automatyzacja.
Terraform to narzedzie Infrastructure as Code (IaC) stworzone przez HashiCorp. Pozwala definiowac infrastrukture chmurowa w plikach konfiguracyjnych zamiast klikalc recznie w konsoli. Jeden plik .tf moze opisac VPC, subnety, EC2, RDS i caly networking - a polecenie terraform apply utworzy to wszystko automatycznie.
Kluczowa przewaga Terraform nad AWS CloudFormation to wsparcie wielu providerow. Jednym narzedziem zarzadzasz AWS, Azure, GCP, Cloudflare, GitHub, Datadog i setkami innych uslug. To czyni Terraform najbardziej uniwersalnym narzedziem IaC na rynku.
Terraform sluzy do zarzadzania infrastruktura w sposob powtarzalny, wersjonowany i zautomatyzowany. Kazda zmiana przechodzi przez code review w Git, a state file sledzi aktualny stan infrastruktury. To eliminuje "configuration drift" i pozwala odtworzyc cale srodowisko od zera.
Terraform dziala w cyklu Write-Plan-Apply. Piszesz konfiguracje, sprawdzasz plan i stosujesz zmiany.
Napisz konfiguracje HCL
Zdefiniuj providera, zasoby i ich zaleznosci w plikach .tf. HCL to czytelny jezyk deklaratywny.
terraform init
Pobierz wymagane providery i zainicjalizuj backend do przechowywania state.
terraform plan
Terraform porownuje konfiguracje z aktualnym stanem i generuje plan zmian. Pokazuje co zostanie utworzone, zmienione lub usuniete.
terraform apply
Wykonaj zmiany przez API providera. Terraform tworzy zasoby we wlasciwej kolejnosci, respektujac zaleznosci.
State update
Po udanym apply Terraform aktualizuje state file. Nastepny plan bedzie porownywac z nowym stanem.
Sprawdzone praktyki pracy z Terraform w srodowiskach produkcyjnych AWS.
Trzymaj state w S3 z locking
Nigdy nie trzymaj state lokalnie w zespole. S3 backend z natywnym lockingiem (use_lockfile = true, Terraform 1.10+) zapobiega konfliktom przy rownoczesnych zmianach. DynamoDB locking to starsza, deprecated metoda.
PoczatkujacyUzywaj modulow
Nie kopiuj kodu miedzy projektami. Napisz modul (np. dla VPC) i uzywaj go z roznymi parametrami w dev, staging i prod.
ZaawansowanyWersjonuj providery
Pinuj wersje providerow w required_providers. Nowa wersja providera moze zmienic zachowanie i zepsuc infrastrukture.
PoczatkujacyIntegruj z CI/CD
terraform plan w pull requeście, terraform apply po merge. Nikt nie powinien robic apply z laptopa na produkcji.
ZaawansowanyPodziel state na mniejsze
Jeden monolityczny state to ryzyko. Podziel infrastrukture na warstwy: networking, compute, database. Polacz je data sources.
ZaawansowanyDo czego sluzy Terraform?
Zarzadzanie infrastruktura AWS
Definiuj VPC, EC2, RDS, S3, IAM i cala infrastrukture w plikach .tf. Terraform tworzy, aktualizuje i usuwa zasoby automatycznie.
Multi-cloud i hybrid
Zarzadzaj zasobami w AWS, Azure i GCP z jednego narzedzia. Wspolny workflow, state management i jezyk konfiguracji.
Srodowiska dev/staging/prod
Terraform Workspaces lub struktura katalogow pozwalaja utrzymywac identyczne srodowiska z roznymi parametrami.
Compliance i audyt
Cala infrastruktura w Git. Kazda zmiana ma autora, opis i mozna ja cofnac. Policy as Code z Sentinel lub OPA.
Co musisz wiedziec?
Provider
Plugin laczacy Terraform z API docelowej uslugi (np. AWS, Azure, Cloudflare). Definiuje dostepne resource i data sources.
Resource
Pojedynczy element infrastruktury: instancja EC2, bucket S3, rekord DNS. Kazdy resource ma typ i konfiguracje.
State
Plik JSON mapujacy konfiguracje Terraform na realne zasoby w chmurze. Przechowywany lokalnie lub w S3 backend.
Module
Zestaw plikow .tf do ponownego uzycia. Enkapsuluje logike infrastruktury. Publiczne moduly dostepne w Terraform Registry.
Plan / Apply
terraform plan pokazuje co sie zmieni. terraform apply wykonuje zmiany. Zawsze sprawdzaj plan przed apply!
Backend
Miejsce przechowywania state. Na AWS standard to S3 - od Terraform 1.10 z natywnym lockingiem (use_lockfile), DynamoDB to starsza metoda. Umozliwia wspolprace zespolu i lockowanie stanu.
Przyklady Terraform CLI
Inicjalizacja projektu
Pobierz providery i zainicjalizuj backend
terraform init
Planowanie zmian
Sprawdz co Terraform zmieni bez wykonywania
terraform plan -out=tfplan
Zastosowanie zmian
Wykonaj zaplanowane zmiany w infrastrukturze
terraform apply tfplan
Import istniejacego zasobu
Zaimportuj recznie utworzony zasob do state
terraform import aws_instance.web i-0abc123def456
Jak Terraform dziala z AWS?
AWS Provider w Terraform to jeden z najbogatszych providerow z ponad 1000 typow zasobow. Terraform state przechowywany w S3 z natywnym lockingiem (use_lockfile) lub starszym DynamoDB locking. Integracja z AWS IAM przez profile, role i OIDC federation w CI/CD. Terraform Cloud/Enterprise oferuje zarzadzany workflow. AWS oferuje rowniez wlasne narzedzie IaC - CloudFormation.
Quiz: Terraform
Sprawdz czy dobrze rozumiesz podstawy. Kliknij odpowiedz - feedback pojawi sie od razu.
1. Do czego sluzy terraform plan?
2. Gdzie powinien byc przechowywany Terraform state w zespole?
3. Co wyroznia Terraform na tle AWS CloudFormation?
Serwisy AWS powiazane z Terraform
Chcesz poznac Terraform w praktyce?
Kurs Terraform jest w przygotowaniu. Zapisz sie na newsletter, zeby nie przegapic premiery. W miedzyczasie sprawdz darmowy kurs "AWS od podstaw".