Začínali jsme s jedním velkým main.tf. Dnes máme knihovnu 30+ modulů, CI/CD pro infrastrukturu a automated testing. Sdílíme vzory, které nám fungují.
Struktura repozitáře¶
terraform/
modules/ # sdílené moduly
vpc/
eks-cluster/
rds/
s3-bucket/
environments/ # per-environment konfigurace
dev/
staging/
production/
global/ # shared resources (IAM, DNS)
Modul design principy¶
- Single responsibility: modul dělá jednu věc dobře
- Explicit inputs/outputs: žádné hardcoded hodnoty
- Sane defaults: funguje out of the box, customizovatelný
- Versioning: Git tags, semantic versioning
- Documentation: README s příklady pro každý modul
Testing infrastruktury¶
Terratest (Go framework): vytvoří reálnou infrastrukturu v test accountu, ověří, že funguje, a zničí ji. Pomalé, ale spolehlivé. Běží v CI pipeline při merge do main.
State management¶
Separátní state per environment. S3 backend s DynamoDB locking. State encryption at rest. Minimální přístup k state — jen CI/CD pipeline a senior engineers.
Sentinel/OPA policies¶
Terraform plan prochází policy checkem: žádné public S3 buckety, povinné encryption, povinné tagy. Automatické enforcement v CI pipeline — plan, který porušuje politiky, neprojde.
Terraform v enterprise vyžaduje disciplínu¶
Moduly, testing, policies, code review — Terraform infrastruktura si zaslouží stejnou péči jako aplikační kód. Protože chyba v Terraformu může smazat produkci.