Terraform van een lone-wolf-script naar team-tool met versioning, modules, state-management en policy-checks. Wat een productie-klare Terraform-setup inhoudt.

Remote state en locking

Lokale state-files zijn voor demo. Productie-state in Azure Storage Account, S3 bucket of Terraform Cloud, met state locking via Cosmos DB / DynamoDB / Terraform Cloud-native. Per environment apart workspace.

Module-structuur

Een lap-monolithische main.tf is geen team-tool. Hergebruikbare modules per resource-type (network, compute, database). Module-registry intern of public (Terraform Registry). Versioning per module zodat updates gefaseerd doorgevoerd kunnen worden.

CI/CD-pipeline

Per branch: terraform fmt, terraform validate, tflint, tfsec voor security-checks. Plan op pull-request, apply op merge naar main. Approval-gate voor prod-environment. Tools: GitHub Actions, Azure Pipelines, GitLab CI.

Policy-as-code

OPA (Open Policy Agent) of Sentinel (Terraform Cloud) voor policy-checks vóór apply. Voorbeeld: VM met public IP wordt niet gedeployed; encryption-at-rest verplicht. Compliance afdwingen voordat resources bestaan.

Verwant: Freelance Cloud consultant, CI/CD implementatie.