Cloud & IT Cert Prep · Lezione

Terraform su Azure

Configuri il provider AzureRM di Terraform, scriva un piano di infrastruttura di base e comprenda quando preferire Terraform agli strumenti ARM/Bicep nativi.

Lezione 4 di 413 passaggi

Terraform su Azure è una lezione Cloud & IT Cert Prep gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cloud & IT Cert Prep, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cloud & IT Cert Prep include 4 lezioni in totale.

Che cos'è Terraform e perché Azure?

Terraform è uno strumento open source di Infrastructure as Code sviluppato da HashiCorp. A differenza di Bicep, Terraform è indipendente dal cloud: una singola codebase Terraform può gestire contemporaneamente risorse in Azure, AWS, GCP e molti altri provider. In Azure, Terraform usa il provider AzureRM per interagire con l'API ARM, rappresentando una scelta diffusa per le organizzazioni multi-cloud.

Il provider Terraform AzureRM

Il provider AzureRM è un plugin che Terraform scarica e utilizza per tradurre la configurazione Terraform in chiamate all'API ARM. È gestito da HashiCorp e Microsoft ed è il metodo ufficiale per gestire le risorse Azure con Terraform. Configuri il provider con l'ID della sottoscrizione e il metodo di autenticazione, quindi esegua terraform init per scaricarlo.

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

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

Struttura dei file Terraform

Un tipico progetto Terraform per Azure è suddiviso in diversi file .tf: main.tf contiene le dichiarazioni delle risorse, variables.tf definisce le variabili di input, outputs.tf definisce i valori di output e terraform.tfvars fornisce i valori delle variabili per un ambiente specifico. Terraform carica automaticamente tutti i file .tf nella directory corrente, quindi la suddivisione in più file serve esclusivamente a migliorare la leggibilità.

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

Dichiarazione delle risorse Azure

In Terraform, le risorse Azure vengono dichiarate usando blocchi resource. Il tipo di blocco è resource, seguito dal tipo di risorsa AzureRM, ad esempio 'azurerm_resource_group', e da un nome locale usato per farvi riferimento nella configurazione. I nomi delle proprietà in Terraform usano snake_case anziché camelCase o PascalCase, utilizzati nel JSON ARM.

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

Il flusso di lavoro Terraform: Init, Plan, Apply

Il flusso di lavoro principale di Terraform prevede tre passaggi. terraform init scarica il provider AzureRM e configura il backend. terraform plan confronta la configurazione con lo stato corrente e mostra un diff di ciò che verrà creato, modificato o eliminato, in modo simile al comando what-if di ARM. terraform apply esegue il piano e aggiorna Azure affinché corrisponda alla configurazione.

# 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

Stato di Terraform

Terraform mantiene un file di stato (terraform.tfstate) che registra lo stato corrente di tutte le risorse gestite e le associa alla configurazione. Questo file consente a Terraform di rilevare la divergenza tra ciò che è configurato e ciò che esiste in Azure. Negli ambienti di team, archivi lo stato in remoto in un Azure Storage Account (un backend Terraform), in modo che tutti i membri del team condividano lo stesso file di stato.

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

Autenticazione ad Azure in Terraform

Terraform supporta diversi metodi di autenticazione per Azure. Durante lo sviluppo locale, usi az login (autenticazione tramite Azure CLI): Terraform rileva automaticamente le credenziali. Nelle pipeline CI/CD, usi un Service Principal con un segreto client o un certificato, passato tramite variabili d'ambiente. Per agenti o macchine virtuali ospitati in Azure, usi una Managed Identity per ottenere l'autenticazione più sicura e senza segreti.

# 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

Moduli Terraform per il riutilizzo

Come i moduli Bicep, i moduli Terraform consentono di raggruppare e riutilizzare pattern d'infrastruttura. Un modulo è una directory contenente file .tf. È possibile farvi riferimento con un blocco module, passare gli input tramite variables e utilizzare gli output. Il Terraform Registry ospita centinaia di moduli Azure della community e verificati che può usare direttamente, ad esempio il modulo di rete AzureRM.

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

Quando scegliere Terraform o Bicep

Scelga Bicep quando la sua organizzazione usa esclusivamente Azure e desidera la massima integrazione con le nuove funzionalità di Azure (Bicep supporta i nuovi tipi di risorsa fin dal primo giorno). Scelga Terraform quando gestisce risorse su più provider cloud, ha bisogno del vasto ecosistema di moduli della community o preferisce la sintassi HCL e la toolchain HashiCorp. Entrambi sono validi per distribuzioni esclusivamente in Azure: spesso è la preferenza dell'organizzazione a determinare la scelta.

Importazione delle risorse esistenti

Se le risorse esistevano già in Azure prima che iniziasse a usare Terraform, può portarle sotto la gestione di Terraform usando terraform import. Questo comando recupera lo stato corrente della risorsa e lo aggiunge al file di stato di Terraform. Dopo l'importazione, deve scrivere manualmente il blocco di configurazione corrispondente in modo che corrisponda alla risorsa importata, quindi eseguire terraform plan per verificare che non vi siano differenze.

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

Best practice di Terraform in Azure

Segua queste best practice per Terraform in Azure: archivi lo stato in remoto in Azure Blob Storage con il blocco dello stato abilitato, usi workspace o file di stato separati per ambienti diversi, non esegua mai il commit dei segreti nel controllo del codice sorgente: usi invece le origini dati di Azure Key Vault, fissi le versioni del provider per evitare modifiche incompatibili e esegua Terraform in una pipeline CI/CD (Azure Pipelines o GitHub Actions) con passaggi di approvazione del piano.

Verifica rapida

Verifichi la comprensione dei concetti di Microsoft Azure Fundamentals (AZ-900) trattati in questa lezione.

Riepilogo della lezione

In questa lezione ha imparato che Terraform è uno strumento IaC indipendente dal cloud che usa il provider AzureRM per gestire le risorse Azure; il flusso di lavoro init, plan, apply consente distribuzioni sicure e prevedibili; inoltre, lo stato remoto in Azure Blob Storage è essenziale per la collaborazione tra team. Prossimamente esploreremo la creazione di piani App Service e Web App.

Gratis per iniziare

Impara Cloud & IT Cert Prep con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
150
Lezioni
600

Domande Frequenti

La lezione «Terraform su Azure» è gratuita?

Sì — il testo completo di «Terraform su Azure» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cloud & IT Cert Prep, passa a CoddyKit PRO. Il corso Cloud & IT Cert Prep include 4 lezioni in totale.

Cosa imparerò in «Terraform su Azure»?

Configuri il provider AzureRM di Terraform, scriva un piano di infrastruttura di base e comprenda quando preferire Terraform agli strumenti ARM/Bicep nativi. Eserciti Cloud & IT Cert Prep con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Cloud & IT Cert Prep?

Non è richiesta alcuna esperienza precedente. Cloud & IT Cert Prep su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Terraform su Azure»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Cloud & IT Cert Prep?

Sì. Ogni lezione Cloud & IT Cert Prep include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Come funziona Azure Resource Manager
  2. Scrittura di template ARM
  3. Bicep: IaC moderno per Azure
  4. Terraform su Azure
← Torna a Cloud & IT Cert Prep