Terraform (dezvoltat de HashiCorp) și echivalentul său open-source OpenTofu reprezintă standardul global pentru Infrastructure as Code (IaC). În loc să configureze manual servere, baze de date și rețele prin console web (cum ar fi AWS Management Console sau Google Cloud Console) sau scripturi ad-hoc fragile, inginerii DevOps definesc întreaga arhitectură cloud într-un mod declarativ folosind limbajul HCL (HashiCorp Configuration Language).
Terraform calculează automat graficul de dependențe dintre resurse (Directed Acyclic Graph), generează un plan de execuție detaliat (terraform plan) și aplică modificările dorite în mod reproductibil și previzibil (terraform apply), menținând sincronizarea permanentă cu starea reală a cloud-ului prin intermediul fișierului State File.
# 1. Definire (.tf) ──► 2. terraform init ──► 3. terraform plan ──► 4. terraform apply
# Fișiere HCL Descarcă Provideri Generează Diff Creează Resurse
# (Cod sursă) (AWS, GCP, K8s) (Ce se va schimba) în Cloud Real
# │
# ▼
# Actualizează terraform.tfstate
Pilonii Tehnologici ai Terraform & OpenTofu
| Concept IaC | Mecanism Tehnic | Rol în Producție |
|---|---|---|
| Limbajul HCL | Sintaxă declarativă lizibilă cu suport pentru expresii, iterații (for_each) și condiționale. |
Elimină comenzile imperative; descrie doar starea finală dorită a infrastructurii. |
| State File (.tfstate) | Fișier JSON care mapează resursele definite în cod cu ID-urile fizice alocate de providerul cloud. | Permite detectarea modificărilor (*drift detection*) și distrugerea curată a resurselor. |
| Ecosistemul de Provideri | Peste 3.000 de plugin-uri (AWS, Azure, GCP, Cloudflare, Kubernetes, GitHub, Datadog). | Unifică gestiunea infrastructurii multi-cloud sub un singur set de reguli și unelte. |
| Module Reutilizabile | Pachete parametrizate de resurse ce pot fi apelate ca funcții de infrastructură. | Standardizează bunele practici de securitate și rețea în cadrul întregii organizații. |
terraform {
required_version = ">= 1.7.0"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
provider "aws" {
region = "eu-central-1" # Frankfurt
}
# Crearea unui bucket S3 securizat:
resource "aws_s3_bucket" "app_storage" {
bucket = "dexblog-enterprise-backups-2026"
tags = {
Environment = "Production"
ManagedBy = "Terraform"
}
}
# Blocare acces public prin regulă de securitate:
resource "aws_s3_bucket_public_access_block" "block_public" {
bucket = aws_s3_bucket.app_storage.id
block_public_acls = true
block_public_policy = true
ignore_public_acls = true
restrict_public_buckets = true
}
output "bucket_arn" {
description = "ARN-ul oficial al bucket-ului creat"
value = aws_s3_bucket.app_storage.arn
}