🟡 Intermediate

Terraform — Infrastructure as Code

Terraform od HashiCorp je nástroj na definovanie a správu infraštruktúry pomocou deklaratívneho konfiguračného jazyka HCL. Umožňuje spravovať cloud zdroje ako kód.


Čo je Infrastructure as Code?

IaC je prax, pri ktorej sa infraštruktúra (servery, siete, databázy) definuje v textových súboroch namiesto manuálnej konfigurácie. Výhody:

  • Verzinovateľnosť — zmeny v gite
  • Opakovateľnosť — rovnaký výsledok zakaždým
  • Auditovateľnosť — kto, čo a kedy zmenil
  • Automatizácia — žiadne klikanie v konzole

Ako Terraform funguje

  1. Write — definujete želanú infraštruktúru v .tf súboroch
  2. Planterraform plan ukáže, čo sa zmení
  3. Applyterraform apply vykoná zmeny
  4. State — Terraform ukladá aktuálny stav do terraform.tfstate

Príklad konfigurácie

provider "aws" {
  region = "eu-central-1"
}

resource "aws_instance" "web" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t3.micro"

  tags = {
    Name        = "web-server"
    Environment = "production"
  }
}

resource "aws_security_group" "web_sg" {
  name = "web-sg"

  ingress {
    from_port   = 443
    to_port     = 443
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

Kľúčové koncepty

  • Provider — plugin pre konkrétny cloud (AWS, GCP, Azure, DigitalOcean...)
  • Resource — infraštruktúrny objekt (VM, databáza, DNS záznam)
  • Module — znovupoužiteľný balík konfigurácie
  • State — mapovanie medzi konfiguráciou a skutočnou infraštruktúrou
  • Variables — parametrizácia konfigurácie

Terraform vs Alternatívy

  • CloudFormation — len AWS, JSON/YAML
  • Pulumi — programovacie jazyky namiesto HCL
  • OpenTofu — open-source fork Terraformu

Best Practices

  • Ukladajte state do remote backendu (S3, Terraform Cloud)
  • Používajte moduly pre DRY princíp
  • Lockujte state pri tímovej práci
  • Nikdy neukladajte secrets do .tf súborov
  • Reviewujte terraform plan pred apply

Terraform je de facto štandard pre multi-cloud Infrastructure as Code.