Cloud & IT Cert Prep · Les

Terraform op Azure

Configureer de AzureRM Terraform-provider, schrijf een eenvoudig infrastructuurplan en begrijp wanneer u Terraform verkiest boven native ARM/Bicep-tooling.

Les 4 van 413 stappen

Terraform op Azure is een gratis Cloud & IT Cert Prep-les op CoddyKit. Dit is les 4 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Cloud & IT Cert Prep. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Cloud & IT Cert Prep bevat in totaal 4 lessen.

Wat is Terraform en waarom Azure?

Terraform is een opensourcehulpmiddel voor Infrastructure as Code, ontwikkeld door HashiCorp. In tegenstelling tot Bicep is Terraform cloudonafhankelijk — met één Terraform-codebase kun je resources in Azure, AWS, GCP en veel andere providers tegelijk beheren. Op Azure gebruikt Terraform de AzureRM-provider om met de ARM-API te communiceren. Daardoor is het een populaire keuze voor organisaties met meerdere clouds.

De AzureRM Terraform-provider

De AzureRM-provider is een plug-in die Terraform downloadt en gebruikt om Terraform-configuratie te vertalen naar aanroepen van de ARM-API. De provider wordt onderhouden door HashiCorp en Microsoft en is de officiële manier om Azure-resources met Terraform te beheren. Configureer de provider met je abonnements-id en verificatiemethode en voer vervolgens terraform init uit om de provider te downloaden.

# main.tf — configure the AzureRM provider
terraform {
  required_providers {
    azurerm = {
      source  = 'hashicorp/azurerm'
      version = '~> 3.0'
    }
  }
}

provider 'azurerm' {
  features {}
  subscription_id = var.subscription_id
}

Bestandsstructuur van Terraform

Een typisch Azure Terraform-project is verdeeld over meerdere .tf-bestanden: main.tf bevat resource-declaraties, variables.tf definieert invoervariabelen, outputs.tf definieert outputwaarden en terraform.tfvars levert variabelewaarden voor een specifieke omgeving. Terraform laadt automatisch alle .tf-bestanden in de huidige map. Het opsplitsen in meerdere bestanden is dus uitsluitend bedoeld voor de leesbaarheid.

# variables.tf
variable 'resource_group_name' {
  description = 'Name of the resource group'
  type        = string
  default     = 'my-rg'
}

variable 'location' {
  description = 'Azure region'
  type        = string
  default     = 'eastus'
}

Azure-resources declareren

In Terraform declareer je Azure-resources met resource-blokken. Het bloktype is resource, gevolgd door het AzureRM-resourcetype, bijvoorbeeld 'azurerm_resource_group', en een lokale naam waarmee je er binnen de configuratie naar kunt verwijzen. Eigenschapsnamen in Terraform gebruiken snake_case in plaats van camelCase of PascalCase, die in ARM JSON worden gebruikt.

# main.tf — create a resource group and storage account
resource 'azurerm_resource_group' 'main' {
  name     = var.resource_group_name
  location = var.location
}

resource 'azurerm_storage_account' 'storage' {
  name                     = 'mystorageaccount'
  resource_group_name      = azurerm_resource_group.main.name
  location                 = azurerm_resource_group.main.location
  account_tier             = 'Standard'
  account_replication_type = 'LRS'

  tags = {
    environment = 'dev'
  }
}

De Terraform-workflow: init, plan, apply

De kernworkflow van Terraform bestaat uit drie stappen. terraform init downloadt de AzureRM-provider en stelt de backend in. terraform plan vergelijkt je configuratie met de huidige status en toont een verschiloverzicht van wat wordt gemaakt, gewijzigd of verwijderd — vergelijkbaar met what-if van ARM. terraform apply voert het plan uit en werkt Azure bij zodat het overeenkomt met je configuratie.

# Step 1: Initialise the project and download providers
terraform init

# Step 2: Preview changes (shows + create, ~ update, - destroy)
terraform plan -out=tfplan

# Step 3: Apply the plan
terraform apply tfplan

# Destroy all managed resources
terraform destroy

Terraform-status

Terraform beheert een statusbestand (terraform.tfstate) waarin de huidige status van alle beheerde resources wordt vastgelegd en aan je configuratie wordt gekoppeld. Met dit bestand kan Terraform afwijkingen detecteren tussen wat is geconfigureerd en wat in Azure bestaat. Sla de status in teamomgevingen extern op in een Azure Storage Account (een Terraform-backend), zodat alle teamleden hetzelfde statusbestand delen.

# Configure remote state in Azure Blob Storage
terraform {
  backend 'azurerm' {
    resource_group_name  = 'tfstate-rg'
    storage_account_name = 'tfstateaccount'
    container_name       = 'tfstate'
    key                  = 'prod.terraform.tfstate'
  }
}

Verificatie bij Azure in Terraform

Terraform ondersteunt verschillende verificatiemethoden voor Azure. Gebruik tijdens lokale ontwikkeling az login (verificatie via Azure CLI) — Terraform neemt de referenties automatisch over. Gebruik in CI/CD-pijplijnen een Service Principal met een clientgeheim of certificaat, doorgegeven via omgevingsvariabelen. Gebruik voor agents of virtuele machines die in Azure worden gehost een Managed Identity voor de veiligste verificatie zonder geheimen.

# Option 1: Azure CLI (local dev)
az login
terraform plan

# Option 2: Service principal via environment variables
export ARM_CLIENT_ID='00000000-0000-0000-0000-000000000000'
export ARM_CLIENT_SECRET='your-client-secret'
export ARM_SUBSCRIPTION_ID='00000000-0000-0000-0000-000000000000'
export ARM_TENANT_ID='00000000-0000-0000-0000-000000000000'
terraform plan

Terraform-modules voor hergebruik

Net als Bicep-modules stellen Terraform-modules je in staat infrastructuurpatronen te bundelen en opnieuw te gebruiken. Een module is een map met .tf-bestanden. Je verwijst ernaar met een module-blok, geeft invoer door via variables en gebruikt de outputs. Het Terraform Registry bevat honderden Azure-modules van de community en geverifieerde modules die je rechtstreeks kunt gebruiken, zoals de AzureRM-netwerkmodule.

# Use a module from the Terraform Registry
module 'vnet' {
  source  = 'Azure/vnet/azurerm'
  version = '4.0.0'

  resource_group_name = azurerm_resource_group.main.name
  vnet_location       = azurerm_resource_group.main.location
  use_for_each        = true
  address_space       = ['10.0.0.0/16']
  subnet_prefixes     = ['10.0.1.0/24', '10.0.2.0/24']
  subnet_names        = ['web', 'app']
}

Wanneer kies je Terraform in plaats van Bicep?

Kies Bicep wanneer je organisatie uitsluitend Azure gebruikt en de nauwst mogelijke integratie met nieuwe Azure-functies wil (Bicep ondersteunt nieuwe resourcetypen vanaf de eerste dag). Kies Terraform wanneer je resources bij meerdere cloudproviders beheert, het grote ecosysteem van communitymodules nodig hebt of de voorkeur geeft aan HCL-syntaxis en de HashiCorp-toolchain. Beide zijn geschikt voor implementaties die uitsluitend Azure gebruiken — de voorkeur van de organisatie is vaak doorslaggevend.

Bestaande resources importeren

Als resources al in Azure bestaan voordat je Terraform ging gebruiken, kun je ze met terraform import onder beheer van Terraform brengen. Deze opdracht haalt de huidige status van de resource op en voegt die toe aan het Terraform-statusbestand. Na het importeren moet je handmatig het bijbehorende configuratieblok schrijven dat overeenkomt met de geïmporteerde resource. Voer daarna terraform plan uit om te bevestigen dat er geen verschillen zijn.

# Import an existing resource group into Terraform state
terraform import \
  azurerm_resource_group.main \
  '/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/existing-rg'

# Terraform 1.5+ supports import blocks in configuration
import {
  to = azurerm_resource_group.main
  id = '/subscriptions/00000000.../resourceGroups/existing-rg'
}

Aanbevolen werkwijzen voor Terraform op Azure

Volg deze aanbevolen werkwijzen voor Terraform op Azure: sla de status extern op in Azure Blob Storage met ingeschakelde statusvergrendeling, gebruik werkruimten of afzonderlijke statusbestanden voor verschillende omgevingen, voeg nooit geheimen toe aan broncodebeheer — gebruik in plaats daarvan gegevensbronnen van Azure Key Vault, zet providerversies vast om incompatibele wijzigingen te voorkomen en voer Terraform uit in een CI/CD-pijplijn (Azure Pipelines of GitHub Actions) met goedkeuringsstappen voor plannen.

Snelle controle

Toets je begrip van de concepten uit Microsoft Azure Fundamentals (AZ-900) in deze les.

Samenvatting van de les

In deze les heb je geleerd dat Terraform een cloudonafhankelijk IaC-hulpmiddel is dat de AzureRM-provider gebruikt om Azure-resources te beheren, dat de workflow met init, plan en apply veilige, voorspelbare implementaties mogelijk maakt en dat externe status in Azure Blob Storage essentieel is voor samenwerking binnen een team. Hierna bekijken we hoe je App Service-plannen en Web Apps maakt.

Gratis beginnen

Leer Cloud & IT Cert Prep met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
150
Lessen
600

Veelgestelde vragen

Is de les “Terraform op Azure” gratis?

Ja — de volledige tekst van “Terraform op Azure” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Cloud & IT Cert Prep wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Cloud & IT Cert Prep bevat in totaal 4 lessen.

Wat leer ik in “Terraform op Azure”?

Configureer de AzureRM Terraform-provider, schrijf een eenvoudig infrastructuurplan en begrijp wanneer u Terraform verkiest boven native ARM/Bicep-tooling. Je oefent met Cloud & IT Cert Prep door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Cloud & IT Cert Prep te beginnen?

Ervaring vooraf is niet nodig. Cloud & IT Cert Prep op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.

Hoe lang duurt de les “Terraform op Azure”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Cloud & IT Cert Prep?

Ja. Elke les over Cloud & IT Cert Prep bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Hoe Azure Resource Manager werkt
  2. ARM-templates schrijven
  3. Bicep: moderne Azure IaC
  4. Terraform op Azure
← Terug naar Cloud & IT Cert Prep