Cloud & IT Cert Prep · leksjon

Terraform i Azure

Konfigurer AzureRM Terraform-provideren, skriv en enkel infrastrukturplan, og forstå når Terraform bør foretrekkes fremfor innebygde ARM-/Bicep-verktøy.

Leksjon 4 av 413 trinn

Terraform i Azure er en gratis leksjon i Cloud & IT Cert Prep på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Cloud & IT Cert Prep, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Cloud & IT Cert Prep inneholder totalt 4 leksjoner.

Hva er Terraform, og hvorfor Azure?

Terraform er et åpen kildekode-verktøy for Infrastructure as Code, utviklet av HashiCorp. I motsetning til Bicep er Terraform skyagnostisk — én Terraform-kodebase kan administrere ressurser på tvers av Azure, AWS, GCP og mange andre leverandører samtidig. På Azure bruker Terraform AzureRM-provider-en til å kommunisere med ARM API-et, noe som gjør Terraform til et populært valg for organisasjoner med flere skyleverandører.

Terraform-provider-en AzureRM

AzureRM-provider-en er en plugin som Terraform laster ned og bruker til å oversette Terraform-konfigurasjon til kall til ARM API-et. Den vedlikeholdes av HashiCorp og Microsoft og er den offisielle måten å administrere Azure-ressurser med Terraform på. Konfigurer provider-en med abonnements-ID-en og autentiseringsmetoden din, og kjør deretter terraform init for å laste den ned.

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

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

Filstruktur i Terraform

Et typisk Azure Terraform-prosjekt er delt inn i flere .tf-filer: main.tf inneholder ressursdeklarasjoner, variables.tf definerer inndatavariabler, outputs.tf definerer output-verdier, og terraform.tfvars angir variabelverdier for et bestemt miljø. Terraform laster automatisk inn alle .tf-filer i gjeldende katalog, så oppdelingen i flere filer er utelukkende av hensyn til lesbarheten.

# 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'
}

Deklarere Azure-ressurser

I Terraform deklarerer du Azure-ressurser ved hjelp av resource-blokker. Blokktypen er resource, etterfulgt av AzureRM-ressurstypen (for eksempel 'azurerm_resource_group') og et lokalt navn som brukes til å referere til ressursen i konfigurasjonen. Egenskapsnavn i Terraform bruker snake_case i stedet for camelCase eller PascalCase, som brukes i ARM JSON.

# 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'
  }
}

Terraform-arbeidsflyten: Init, Plan, Apply

Den sentrale Terraform-arbeidsflyten består av tre trinn. terraform init laster ned AzureRM-provider-en og konfigurerer backend-en. terraform plan sammenligner konfigurasjonen din med gjeldende tilstand og viser en diff over hva som skal opprettes, endres eller slettes — omtrent som what-if i ARM. terraform apply utfører planen og oppdaterer Azure slik at konfigurasjonen samsvarer.

# 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-tilstand

Terraform vedlikeholder en tilstandsfil (terraform.tfstate) som registrerer gjeldende tilstand for alle administrerte ressurser og knytter dem til konfigurasjonen din. Denne filen gjør det mulig for Terraform å oppdage avvik mellom det som er konfigurert, og det som faktisk finnes i Azure. I teammiljøer bør du lagre tilstanden eksternt i en Azure Storage Account (en Terraform-backend), slik at alle teammedlemmer deler den samme tilstandsfilen.

# 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'
  }
}

Autentisering mot Azure i Terraform

Terraform støtter flere autentiseringsmetoder for Azure. Under lokal utvikling kan du bruke az login (autentisering med Azure CLI) — Terraform henter legitimasjonen automatisk. I CI/CD-pipelines kan du bruke en Service Principal med en klienthemmelighet eller et sertifikat, sendt inn via miljøvariabler. For Azure-baserte agenter eller virtuelle maskiner bør du bruke en Managed Identity for den sikreste autentiseringen uten hemmeligheter.

# 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-moduler for gjenbruk

I likhet med Bicep-moduler lar Terraform-moduler deg pakke inn og gjenbruke infrastrukturmønstre. En modul er en katalog som inneholder .tf-filer. Du refererer til den med en module-blokk, sender inn verdier via variables og bruker outputs. Terraform Registry inneholder hundrevis av Azure-moduler fra fellesskapet og verifiserte moduler som du kan bruke direkte, for eksempel AzureRM-nettverksmodulen.

# 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']
}

Når bør du velge Terraform fremfor Bicep?

Velg Bicep når organisasjonen din bare bruker Azure og ønsker tettest mulig integrasjon med nye Azure-funksjoner (Bicep får støtte for nye ressurstyper fra første dag). Velg Terraform når du administrerer ressurser på tvers av flere skyleverandører, trenger det store økosystemet av moduler fra fellesskapet, eller foretrekker HCL-syntaks og HashiCorp-verktøykjeden. Begge er gode valg for rene Azure-distribusjoner — organisasjonens preferanser avgjør ofte.

Importere eksisterende ressurser

Hvis ressurser allerede finnes i Azure før du begynte å bruke Terraform, kan du legge dem under Terraform-administrasjon med terraform import. Denne kommandoen henter ressursens gjeldende tilstand og legger den til i Terraform-tilstandsfilen. Etter importen må du manuelt skrive den tilsvarende konfigurasjonsblokken slik at den samsvarer med den importerte ressursen, og deretter kjøre terraform plan for å bekrefte at det ikke finnes forskjeller.

# 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'
}

Anbefalte fremgangsmåter for Terraform på Azure

Følg disse anbefalte fremgangsmåtene for Terraform på Azure: lagre tilstanden eksternt i Azure Blob Storage med aktivert tilstandslåsing, bruk workspaces eller separate tilstandsfiler for ulike miljøer, legg aldri hemmeligheter inn i kildekontrollen — bruk datakilder fra Azure Key Vault i stedet, lås provider-versjonene for å unngå brytende endringer, og kjør Terraform i en CI/CD-pipeline (Azure Pipelines eller GitHub Actions) med godkjenningsporter for planer.

Hurtigsjekk

Test forståelsen din av Microsoft Azure Fundamentals-konsepter (AZ-900) fra denne leksjonen.

Oppsummering av leksjonen

I denne leksjonen lærte du at Terraform er et skyagnostisk IaC-verktøy som bruker AzureRM-provider-en til å administrere Azure-ressurser, at arbeidsflyten med init, plan, apply muliggjør sikre og forutsigbare distribusjoner, og at ekstern tilstand i Azure Blob Storage er avgjørende for samarbeid i team. Neste tema er å opprette App Service-planer og Web Apps.

Gratis å komme i gang

Lær deg Cloud & IT Cert Prep med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
150
Leksjoner
600

Ofte stilte spørsmål

Er leksjonen «Terraform i Azure» gratis?

Ja – hele teksten i «Terraform i Azure» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Cloud & IT Cert Prep-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Cloud & IT Cert Prep inneholder totalt 4 leksjoner.

Hva lærer jeg i «Terraform i Azure»?

Konfigurer AzureRM Terraform-provideren, skriv en enkel infrastrukturplan, og forstå når Terraform bør foretrekkes fremfor innebygde ARM-/Bicep-verktøy. Du øver på Cloud & IT Cert Prep med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Cloud & IT Cert Prep?

Ingen tidligere erfaring er nødvendig. Cloud & IT Cert Prep på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Terraform i Azure»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Cloud & IT Cert Prep-leksjonen?

Ja. Alle Cloud & IT Cert Prep-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Slik fungerer Azure Resource Manager
  2. Skrive ARM-maler
  3. Bicep: Moderne IaC for Azure
  4. Terraform i Azure
← Tilbake til Cloud & IT Cert Prep