Martin Rylko
  • Služby
  • Blog
  • O mně
  • Kontakt
  • Spolupráce
Martin Rylko

Senior Cloud Architect & DevOps Engineer. Specializace na Microsoft Azure, IaC, Cloud Security a AI.

Navigace

  • Služby
  • Blog
  • O mně
  • Kontakt

Spolupráce

Hledáte zkušeného architekta pro Váš Azure projekt? Ozvěte se.

rylko@cloudmasters.cz

© 2026 Martin Rylko. Všechna práva vyhrazena.

Buduji v cloudu. Nasazuji přes Azure Static Web Apps.

Domů/Blog/5 Terraform best practices pro Azure projekty v produkci
Všechny článkyRead in English

5 Terraform best practices pro Azure projekty v produkci

10. 2. 2026 2 min
#Terraform#Azure#IaC#DevOps

5 Terraform best practices pro Azure projekty v produkci

Po třech letech intenzivní práce s Terraformem v enterprise prostředích (od H&M Group po menší FinTech firmy) jsem si vytipoval pět klíčových pravidel, která oddělují amatérský IaC kód od produkčně-odolné infrastruktury.

1. Remote State s locking – žádné výjimky

Nikdy, opravdu nikdy, nepoužívejte lokální terraform.tfstate v týmu. Azure Storage Account s blob containerem a state locking je základ:

terraform {
  backend "azurerm" {
    resource_group_name  = "rg-terraform-state"
    storage_account_name = "stterraformstprod"
    container_name       = "tfstate"
    key                  = "landing-zone/prod.tfstate"
    use_oidc             = true
  }
}

Proč use_oidc = true? Protože Managed Identity + OIDC federace eliminuje nutnost ukládat service principal secrets do pipeline proměnných. Bezpečnější, jednodušší.

2. Modularizace od prvního dne

Největší chyba, kterou vidím u klientů: obří monolitický main.tf s 2000+ řádky. Řešení? Terraform moduly:

infrastructure/
├── modules/
│   ├── networking/          # VNet, NSG, Route Tables
│   │   ├── main.tf
│   │   ├── variables.tf
│   │   └── outputs.tf
│   ├── compute/             # VM, VMSS, AKS
│   ├── security/            # Key Vault, Defender
│   └── monitoring/          # Log Analytics, Alerts
├── environments/
│   ├── dev/
│   │   └── main.tf          # Volá moduly s dev parametry
│   ├── staging/
│   └── prod/
└── shared/
    └── backend.tf

Každý modul má jasnou odpovědnost. Změna v networking modulu neovlivní compute. Testujete izolovaně, nasazujete bezpečně.

3. Drift Detection v CI/CD pipeline

Infrastruktura se v čase mění – někdo klikne v portálu, někdo spustí skript. Drift je tichý zabiják IaC konzistence. Řešení:

# Azure DevOps pipeline - noční drift check
schedules:
  - cron: "0 3 * * *"
    displayName: "Noční drift detection"
 
steps:
  - task: TerraformCLI@2
    inputs:
      command: 'plan'
      workingDirectory: 'infrastructure/environments/prod'
      commandOptions: '-detailed-exitcode'
    continueOnError: true
 
  - script: |
      if [ $TERRAFORM_EXITCODE -eq 2 ]; then
        echo "##vso[task.logissue type=warning]DRIFT DETECTED!"
        # Pošli notifikaci do Teams/Slack
      fi
    displayName: 'Evaluate drift'

4. Pojmenování zdrojů pomocí naming convention modulu

Konzistentní pojmenování je SEO infrastruktury – bez něj se ztratíte:

module "naming" {
  source = "Azure/naming/azurerm"
  suffix = [var.environment, var.location_short]
}
 
resource "azurerm_resource_group" "main" {
  name     = module.naming.resource_group.name
  location = var.location
}
 
resource "azurerm_virtual_network" "hub" {
  name                = module.naming.virtual_network.name
  resource_group_name = azurerm_resource_group.main.name
  location            = azurerm_resource_group.main.location
  address_space       = ["10.0.0.0/16"]
}

5. Testy infrastruktury – Terratest nebo terraform validate

Ano, infrastrukturu je potřeba testovat. Minimálně:

  • terraform validate – syntaktická kontrola
  • terraform plan v PR pipeline – review změn před merge
  • tflint – statická analýza best practices
  • Terratest (Go) – integrační testy pro kritické moduly

Závěr

Terraform je mocný nástroj, ale bez disciplíny se z něj stane noční můra. Začněte s remote state a modularizací, přidejte drift detection a naming conventions. Vaše budoucí já vám poděkuje.

Zajímá vás jak nastavit kompletní Terraform CI/CD pipeline v Azure DevOps? Připravuji na to detailní návod.

Tagy:#Terraform#Azure#IaC#DevOps
LinkedInX / Twitter

O autorovi

Martin Rylko

Martin Rylko

Senior Cloud Architect & DevOps Engineer

Více než 14 let v IT – od on-premises datacenter a Hyper-V clusteringu po cloudovou infrastrukturu v Microsoft Azure. Specializuji se na Landing Zones, IaC automatizaci, Kubernetes a bezpečnostní compliance.

Email LinkedInCelý profil

Mohlo by vás zajímat

Budování Azure Landing Zone pomocí Bicepu

Praktický průvodce jak efektivně strukturovat váš Bicep kód pro nasazení enterprise-ready Azure Landing Zone (ALZ).

Číst

AKS do produkce: Checklist pro Cloud Architekty

Co musíte vyřešit před nasazením Azure Kubernetes Service do produkce – od networking přes RBAC, scaling až po monitoring a backup.

Číst

NIS2 a Azure: Praktický compliance checklist pro architekty

Jak připravit Azure prostředí na NIS2 směrnici – konkrétní kroky od Azure Policy přes Defender for Cloud až po logging a incident response.

Číst