Terraform
IaC Kurs wkrotce

Terraform

HashiCorp Terraform

Infrastructure as Code dla wielu providerow chmurowych. Definiuj, wersjonuj i automatyzuj infrastrukture deklaratywnym kodem HCL.

Dlaczego warto sie nauczyc?

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.

1

Napisz konfiguracje HCL

Zdefiniuj providera, zasoby i ich zaleznosci w plikach .tf. HCL to czytelny jezyk deklaratywny.

2

terraform init

Pobierz wymagane providery i zainicjalizuj backend do przechowywania state.

3

terraform plan

Terraform porownuje konfiguracje z aktualnym stanem i generuje plan zmian. Pokazuje co zostanie utworzone, zmienione lub usuniete.

4

terraform apply

Wykonaj zmiany przez API providera. Terraform tworzy zasoby we wlasciwej kolejnosci, respektujac zaleznosci.

5

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.

Poczatkujacy

Uzywaj modulow

Nie kopiuj kodu miedzy projektami. Napisz modul (np. dla VPC) i uzywaj go z roznymi parametrami w dev, staging i prod.

Zaawansowany

Wersjonuj providery

Pinuj wersje providerow w required_providers. Nowa wersja providera moze zmienic zachowanie i zepsuc infrastrukture.

Poczatkujacy

Integruj z CI/CD

terraform plan w pull requeście, terraform apply po merge. Nikt nie powinien robic apply z laptopa na produkcji.

Zaawansowany

Podziel state na mniejsze

Jeden monolityczny state to ryzyko. Podziel infrastrukture na warstwy: networking, compute, database. Polacz je data sources.

Zaawansowany

Do czego sluzy Terraform?

01

Zarzadzanie infrastruktura AWS

Definiuj VPC, EC2, RDS, S3, IAM i cala infrastrukture w plikach .tf. Terraform tworzy, aktualizuje i usuwa zasoby automatycznie.

02

Multi-cloud i hybrid

Zarzadzaj zasobami w AWS, Azure i GCP z jednego narzedzia. Wspolny workflow, state management i jezyk konfiguracji.

03

Srodowiska dev/staging/prod

Terraform Workspaces lub struktura katalogow pozwalaja utrzymywac identyczne srodowiska z roznymi parametrami.

04

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?

Terraform + 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.

Twoj wynik: 0 / 3

1. Do czego sluzy terraform plan?

2. Gdzie powinien byc przechowywany Terraform state w zespole?

3. Co wyroznia Terraform na tle AWS CloudFormation?

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".

Kurs AWS od podstaw Wszystkie technologie