Introduzione a Terraform

Completato

Lo strumento IaC open source Terraform consente di definire ed effettuare il provisioning dell'infrastruttura cloud usando un linguaggio di configurazione di alto livello noto come HashiCorp Configuration Language (HCL). Terraform codifica l'infrastruttura nei file di configurazione che descrivono lo stato desiderato per l'infrastruttura. Terraform può gestire qualsiasi infrastruttura, ad esempio cloud pubblici, cloud privati e servizi SaaS, usando i provider Terraform.

Provider Terraform per l'infrastruttura di Azure

Diversi provider Terraform consentono la gestione dell'infrastruttura di Azure:

  • AzureRM: gestire le risorse di Azure Resource Manager, ad esempio macchine virtuali, account di archiviazione e interfacce di rete.
  • AzureAD: Gestire risorse di Microsoft Entra, ad esempio gruppi, utenti, entità servizio e applicazioni.
  • AzureDevOps: gestire le risorse di Azure DevOps, ad esempio agenti, repository, progetti, pipeline e query.
  • AzAPI: gestire le risorse di Azure usando direttamente le API di Azure Resource Manager. Questo provider integra il provider AzureRM abilitando la gestione delle risorse di Azure più recenti.
  • Azure Stack: gestire le risorse di Azure Stack, ad esempio macchine virtuali, DNS, reti virtuali e archiviazione.

Creare un account di archiviazione

Tutte le configurazioni Terraform devono contenere un blocco provider. Il codice HCL seguente specifica il provider di Resource Manager di Azure (azurerm). Un gruppo di risorse di Azure denominato storageaccountexamplerg è definito nel percorso eastus. Nel gruppo di risorse viene creato un account di archiviazione di Azure. Il nome dell'account di archiviazione è composto dai primi 24 caratteri di un numero generato tramite la funzione md5.

terraform {
  required_version = ">=0.12"
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~>2.0"
    }
  }
}
provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "rg" {
  location = "eastus"
  name     = "storageaccountexamplerg"
}

resource "azurerm_storage_account" "example" {
  name                     = substr(md5(azurerm_resource_group.rg.id), 0, 24)
  resource_group_name      = azurerm_resource_group.rg.name
  location                 = azurerm_resource_group.rg.location
  account_kind             = "StorageV2"
  account_tier             = "Standard"
  account_replication_type = "LRS"
  access_tier              = "Hot"
}

Eseguire il codice Terraform

Eseguire terraform init per scaricare i moduli di Azure necessari per la gestione delle risorse di Azure:

terraform init

Eseguire terraform plan per determinare le azioni necessarie per creare la configurazione specificata nei file di configurazione. L'esecuzione del comando crea un piano di esecuzione ma non lo applica. Questo modello consente di verificare se il piano di esecuzione corrisponde alle aspettative prima di apportare modifiche alle risorse effettive.

terraform plan -out main.tfplan

Dopo aver verificato il piano di esecuzione, eseguire terraform apply per applicare il piano. Questo comando crea le risorse definite.

terraform apply main.tfplan

Verificare l'account di archiviazione

Per verificare l'account di archiviazione di Azure, è possibile usare il comando terraform state show. Questo comando mostra lo stato corrente della risorsa specificata.

Nel caso dell'account di archiviazione creato in questo modulo, il comando mostra il nome generato, insieme a un elenco completo degli attributi dell'account di archiviazione e dei relativi valori.

terraform state show 'azurerm_storage_account.example'

Pulire le risorse

Quando non sono più necessarie le risorse create in questo modulo, eseguire terraform apply con il flag -destroy:

terraform plan -destroy -out main.destroy.tfplan

Eseguire terraform apply per applicare il piano di esecuzione:

terraform apply main.destroy.tfplan