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
- Write — definujete želanú infraštruktúru v
.tfsúboroch - Plan —
terraform planukáže, čo sa zmení - Apply —
terraform applyvykoná zmeny - 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
.tfsúborov - Reviewujte
terraform planpred apply
Terraform je de facto štandard pre multi-cloud Infrastructure as Code.