Modulo Terraform per le zone di destinazione di Azure

Azure offre servizi nativi per la creazione delle zone di destinazione di Azure. Altri strumenti possono anche essere utili per questo sforzo. Uno strumento usato spesso da clienti e partner per distribuire le zone di destinazione è Terraform di HashiCorp.

La distribuzione di risorse nelle zone di destinazione dell'applicazione non rientra nell'ambito del modulo. Le decisioni relative al metodo di distribuzione e agli strumenti sono per il team responsabile dell'applicazione.

Il modulo Terraform zone di destinazione di Azure offre un'implementazione rapida delle risorse della piattaforma necessarie per gestire le zone di destinazione di Azure su larga scala usando Terraform. Il modulo è progettato per semplificare la distribuzione della gerarchia, dei criteri e delle risorse dei gruppi di gestione nelle sottoscrizioni di connettività e gestione.

Prerequisiti

Se non si ha familiarità con Terraform e si vogliono ottenere informazioni sull'installazione e sull'uso, vedere l'esercitazione installare Terraform in HashiCorp Learn.

Per informazioni su come configurare il provider Terraform ed eseguire l'autenticazione con Azure, vedere le guide al provider AzureRM nel sito Web Terraform. Per informazioni su come configurare il provider per la distribuzione tra più sottoscrizioni, vedere la pagina wiki di Configurazione provider.

Importanza dell'uso di moduli standard

Il riutilizzo dei componenti è un principio fondamentale dell'infrastruttura come codice. I moduli sono determinanti nella definizione di standard e coerenza nella distribuzione delle risorse all'interno degli ambienti e tra ambienti diversi.

Il modulo Terraform zone di destinazione di Azure viene pubblicato nel Registro Terraform ufficiale ed è verificato da HashiCorp.

La distribuzione del modulo dal Registro Terraform fornisce:

  • Distribuzione accelerata delle zone di destinazione di Azure nell'ambiente in uso.
  • Percorso di aggiornamento testato alla versione più recente del modulo, insieme al controllo della versione strict.

Vantaggi offerti dall'uso del modulo

I vantaggi dell'uso del modulo Terraform zone di destinazione di Azure includono:

  • Gerarchia di risorse di base gestita ed estendibile per l'organizzazione della sottoscrizione tramite gruppi di gestione.
  • Governance e conformità della sicurezza scalabili tramite controlli IAM (Identity and Access Management) di Azure, con una vasta libreria di definizioni personalizzate pronte per l'assegnazione.
  • Imposizione dei criteri tra sottoscrizioni tramite l'ereditarietà del gruppo di gestione.
  • Risorse gestite per le zone di destinazione di gestione e connettività. Queste risorse forniscono:
    • Conformità ai criteri garantita tramite una stretta integrazione di risorse gestite dal modulo e assegnazioni di criteri corrispondenti.
    • Integrazione tra le risorse per ridurre il sovraccarico di gestione e offrire un'esperienza utente migliorata, ad esempio la creazione automatica di collegamenti di rete virtuale per Azure DNS privato.

Suggerimento

La libreria dei modelli viene aggiornata a livello di codice dal repository GitHub di Azure/Enterprise-Scale . Per rimanere aggiornati con la configurazione, i criteri e i ruoli dell'archetipo più recenti, assicurarsi di usare la versione più recente del modulo.

Distribuzione risorse

È possibile configurare il modulo per distribuire set di risorse allineati alle aree di progettazione critiche seguenti nelle zone di destinazione di Azure. Personalizzare queste risorse per soddisfare i requisiti dell'organizzazione.

Categoria di risorsa Area di progettazione critica
Risorse di base Governance della sicurezza
dell'organizzazione delle risorse

Risorse gestionali Gestione e monitoraggio
Risorse di connettività Topologia di rete e connettività
Risorse di identità Gestione delle identità e degli accessi

La creazione di queste funzionalità in un singolo modulo Terraform semplifica la compilazione e l'applicazione della coerenza nella piattaforma Azure quando si opera su larga scala.

Queste risorse sono allineate all'architettura concettuale delle zone di destinazione di Azure:

Diagramma dell'architettura concettuale della zona di destinazione di Azure.

È possibile distribuire queste risorse, per funzionalità, tra più sottoscrizioni usando la configurazione del provider nel blocco del modulo.

Le sezioni seguenti illustrano i tipi di risorse e le opzioni di configurazione.

Risorse di base

La funzionalità di base di questo modulo distribuisce le basi dell'architettura concettuale per le zone di destinazione di Azure, con particolare attenzione all'organizzazione centrale delle risorse.

Diagramma dell'architettura concettuale della zona di destinazione di Azure, che si concentra sulla gerarchia di risorse di base.

Quando si abilita la distribuzione delle risorse di base (abilitate per impostazione predefinita), il modulo distribuisce e gestisce i tipi di risorse seguenti:

Conto risorse Tipo di risorsa di Azure Tipo di risorsa di Terraform
Gruppi di gestione Microsoft.Management/managementGroups azurerm_management_group
Sottoscrizioni dei gruppi di gestione Microsoft.Management/managementGroups/subscriptions azurerm_management_group
Assegnazioni di criteri Microsoft.Authorization/policyAssignments azurerm_management_group_policy_assignment
Definizioni dei criteri Microsoft.Authorization/policyDefinitions azurerm_policy_definition
Definizioni dei set di criteri Microsoft.Authorization/policySetDefinitions azurerm_policy_set_definition
Assegnazioni di ruoli Microsoft.Authorization/roleAssignments azurerm_role_assignment
Definizioni dei ruoli Microsoft.Authorization/roleDefinitions azurerm_role_definition

Il numero esatto di risorse create dal modulo dipende dalla configurazione del modulo. Per una configurazione predefinita, è possibile prevedere che il modulo crei circa 180 risorse.

Suggerimento

Nessuna di queste risorse viene distribuita nell'ambito della sottoscrizione, ma Terraform richiede comunque una sottoscrizione per stabilire una sessione autenticata con Azure. Per altre informazioni sull'autenticazione con Azure, vedere la documentazione relativa al provider di Azure: Autenticazione in Azure .

Risorse gestionali

Il modulo offre un'opzione per abilitare la distribuzione delle risorse di gestione e monitoraggio dall'architettura concettuale per le zone di destinazione di Azure nella sottoscrizione specificata, come descritto nella pagina wiki di Configurazione provider. Il modulo garantisce anche che la sottoscrizione specificata venga inserita nel gruppo di gestione corretto.

Diagramma dell'architettura concettuale della zona di destinazione di Azure, che si concentra sulle risorse di gestione.

Quando si abilita la distribuzione delle risorse di gestione, il modulo distribuisce e gestisce i tipi di risorse seguenti (a seconda della configurazione):

Conto risorse Tipo di risorsa di Azure Tipo di risorsa di Terraform
Gruppi di risorse Microsoft.Resources/resourceGroups azurerm_resource_group
area di lavoro Log Analytics Microsoft.OperationalInsights/workspaces azurerm_log_analytics_workspace
Registrare Analitica soluzioni Microsoft.OperationsManagement/solutions azurerm_log_analytics_solution
Account di Automazione Microsoft.Automation/automationAccounts azurerm_automation_account
Log Analitica servizio collegato Microsoft.OperationalInsights/workspaces /linkedServices azurerm_log_analytics_linked_service

Oltre a distribuire le risorse precedenti, il modulo fornisce l'integrazione nativa nelle assegnazioni di criteri corrispondenti per garantire la conformità completa dei criteri.

Per altre informazioni su come usare questa funzionalità, vedere la pagina wiki Deploy Management Resources (Distribuisci risorse di gestione).

Risorse di connettività

Il modulo offre un'opzione per abilitare la distribuzione di risorse di topologia di rete e connettività dall'architettura concettuale per le zone di destinazione di Azure nel contesto di sottoscrizione corrente. Garantisce inoltre che la sottoscrizione specificata venga inserita nel gruppo di gestione corretto.

Questa funzionalità consente la distribuzione di più reti hub basate su qualsiasi combinazione di topologia di rete di Azure tradizionale (hub e spoke) e di topologia di rete rete WAN virtuale (gestita da Microsoft).

Il modulo può anche creare e collegare protezione di rete DDoS alle Rete virtuale e gestire zone DNS pubbliche e private centralizzate.

Nota

Attualmente non è consigliabile usare la protezione IP DDoS nelle zone di destinazione di Azure e si consiglia di usare questa opzione in circostanze specifiche. Esaminare la documentazione del prodotto Sul confronto degli SKU di protezione DDoS di Azure

Topologia di rete di Azure tradizionale (hub e spoke)

Il modulo può facoltativamente distribuire una o più reti hub basate sulla topologia di rete di Azure tradizionale (hub e spoke).

Diagramma dell'architettura concettuale della zona di destinazione di Azure, concentrandosi sulle risorse di connettività usando una topologia di rete di Azure tradizionale (hub e spoke).

Nota

Il modulo attualmente configura solo l'hub di rete e le risorse dipendenti per la sottoscrizione di connettività. Sebbene sia disponibile un'opzione per abilitare il peering di reti virtuali in uscita dall'hub allo spoke, gli utenti devono comunque avviare il peering dallo spoke all'hub. Ciò è dovuto alle limitazioni del modo in cui il provider AzureRM è destinato a una sottoscrizione specifica per la distribuzione.

Quando si distribuiscono risorse basate su una topologia di rete di Azure tradizionale (hub e spoke), il modulo distribuisce e gestisce i tipi di risorse seguenti (a seconda della configurazione):

Conto risorse Tipo di risorsa di Azure Tipo di risorsa di Terraform
Gruppi di risorse Microsoft.Resources/resourceGroups azurerm_resource_group
Reti virtuali Microsoft.Network/virtualNetworks azurerm_virtual_network
Subnet Microsoft.Network/virtualNetworks/subnets azurerm_subnet
Gateway di rete virtuale Microsoft.Network/virtualNetworkGateways azurerm_virtual_network_gateway
Firewall di Azure Microsoft.Network/azureFirewalls azurerm_firewall
Indirizzi IP pubblici Microsoft.Network/publicIPAddresses azurerm_public_ip
Peering di rete virtuale Microsoft.Network/virtualNetworks/virtualNetworkPeerings azurerm_virtual_network_peering

Per altre informazioni su come usare questa funzionalità, vedere la pagina wiki Deploy Connectivity Resources (Distribuisci risorse di connettività).

Topologia di rete WAN virtuale (gestita da Microsoft)

Il modulo può facoltativamente distribuire una o più reti hub in base alla topologia di rete rete WAN virtuale (gestita da Microsoft).

Diagramma dell'architettura concettuale della zona di destinazione di Azure, concentrandosi sulle risorse di connettività usando una topologia di rete rete WAN virtuale (gestita da Microsoft).

Nota

A causa delle diverse funzionalità di rete WAN virtuale risorse di rete rispetto ai tradizionali, il peering per gli spoke rete WAN virtuale è bidirezionale quando si usa questa funzionalità.

Quando si distribuiscono le risorse in base a una topologia di rete rete WAN virtuale (gestita da Microsoft), il modulo distribuisce e gestisce i tipi di risorse seguenti (a seconda della configurazione):

Conto risorse Tipo di risorsa di Azure Tipo di risorsa di Terraform
Gruppi di risorse Microsoft.Resources/resourceGroups azurerm_resource_group
Reti WAN virtuali Microsoft.Network/virtualWans azurerm_virtual_wan
Hub virtuali Microsoft.Network/virtualHubs azurerm_virtual_hub
Gateway ExpressRoute Microsoft.Network/expressRouteGateways azurerm_express_route_gateway
Gateway VPN Microsoft.Network/vpnGateways azurerm_vpn_gateway
Firewall di Azure Microsoft.Network/azureFirewalls azurerm_firewall
Criteri firewall di Azure Microsoft.Network/firewallPolicies azurerm_firewall_policy
Connessioni all'hub virtuale Microsoft.Network/virtualHubs/hubVirtualNetworkConnections azurerm_virtual_hub_connection

Per altre informazioni su come usare questa funzionalità, vedere la pagina wiki Deploy rete WAN virtuale Resources (Distribuisci risorse rete WAN virtuale).

Piano di protezione DDoS

Il modulo può facoltativamente distribuire Protezione di rete DDoS e collegare Rete virtuale al piano, se necessario.

Nota

A causa delle limitazioni della piattaforma, i piani di protezione DDoS possono essere abilitati solo per le reti virtuali tradizionali. Il supporto dell'hub virtuale non è attualmente disponibile.

Importante

Il materiale sussidiario sulle zone di destinazione di Azure consiglia di abilitare Protezione di rete DDoS per aumentare la protezione della piattaforma Azure. Per evitare costi imprevisti nelle distribuzioni non di produzione e MVP, questa funzionalità è disabilitata nel modulo Terraform zone di destinazione di Azure a causa del costo associato a questa risorsa.

Per gli ambienti di produzione, è consigliabile abilitare questa funzionalità.

Quando si abilita la distribuzione della distribuzione delle risorse del piano di protezione DDoS, il modulo distribuisce e gestisce i tipi di risorse seguenti (a seconda della configurazione):

Conto risorse Tipo di risorsa di Azure Tipo di risorsa di Terraform
Gruppi di risorse Microsoft.Resources/resourceGroups azurerm_resource_group
Piani di protezione DDoS Microsoft.Network/ddosProtectionPlans azurerm_network_ddos_protection_plan

DNS

Il modulo può facoltativamente distribuire DNS privato zone per supportare gli endpoint privati e collegarli alle Rete virtuale hub e/o spoke. Le zone DNS pubbliche e private specificate dall'utente possono anche essere distribuite e collegate in base alle esigenze.

Quando si abilita la distribuzione della distribuzione di risorse DNS, il modulo distribuisce e gestisce i tipi di risorse seguenti (a seconda della configurazione):

Conto risorse Tipo di risorsa di Azure Tipo di risorsa di Terraform
Gruppi di risorse Microsoft.Resources/resourceGroups azurerm_resource_group
Zone DNS Microsoft.Network/dnsZones azurerm_dns_zone
Zone DNS privato Microsoft.Network/privateDnsZones azurerm_private_dns_zone
Collegamento Rete virtuale zona DNS privato Microsoft.Network/privatednszones/virtualnetworklinks azurerm_private_dns_zone_virtual_network_link

Risorse di identità

Il modulo offre un'opzione per configurare i criteri relativi alla zona di destinazione di gestione delle identità e degli accessi. Garantisce inoltre che la sottoscrizione specificata venga inserita nel gruppo di gestione corretto.

Diagramma dell'architettura concettuale della zona di destinazione di Azure, che si concentra sulle risorse di identità.

Nota

Questa funzionalità non distribuisce alcuna risorsa. Se si desidera aggiornare le impostazioni dei criteri correlate al gruppo di gestione delle identità, usare la configure_identity_resources variabile di input.

Per altre informazioni su come usare questa funzionalità, vedere la pagina wiki Deploy Identity Resources (Distribuisci risorse di identità).

Introduzione

I requisiti per iniziare a usare il modulo sono documentati nella pagina Wiki introduttiva .

Per semplificare le attività iniziali, il modulo è stato pubblicato nel Registro Terraform. È possibile farvi riferimento direttamente all'interno del codice, come illustrato nell'esempio semplice più avanti in questo articolo. Se si esegue terraform init il modulo e tutte le dipendenze vengono scaricati automaticamente.

È possibile visualizzare le dipendenze del modulo e del provider più recenti nella scheda Dipendenze nel Registro Terraform.

Importante

Vi sono problemi noti con alcune combinazioni di versione di Terraform e del provider di AzureRM. È possibile risolvere alcuni di questi problemi eseguendo l'aggiornamento alle versioni più recenti di Terraform e del provider di AzureRM. Altri problemi noti sono errori temporanei che in genere è possibile correggere eseguendo di nuovo la distribuzione.

In genere è consigliabile aggiungere versioni specifiche e testarle accuratamente prima di eseguire l'aggiornamento.

Le nuove versioni del modulo verranno rilasciate quando sono necessarie modifiche. Le nuove versioni garantiranno la compatibilità con le versioni più recenti del provider Terraform e AzureRM. Per altre informazioni, vedere le linee guida sulle versioni del modulo.

Per ottenere le funzionalità più recenti, assicurarsi che la versione del modulo sia impostata sulla versione più recente. Se si esegue l'aggiornamento a una versione successiva del modulo, eseguire terraform init -upgrade.

Versione di GitHub (più recente SemVer)

Esempio semplice

Questo codice di esempio distribuisce il gruppo di gestione e l'organizzazione di sottoscrizione consigliati minimo dall'architettura di riferimento su scala aziendale. Dopo aver creato questo semplice esempio in esecuzione, è possibile iniziare a personalizzare la distribuzione.

Suggerimento

Anche se root_parent_id è l'unica variabile obbligatoria del modulo, è consigliabile impostare anche root_id. La modifica del root_id valore avvierà una ridistribuzione completa di tutte le risorse gestite dal modulo, incluse le dipendenze downstream.

Il codice seguente è una semplice configurazione iniziale per il modulo radice main.tf:

# Configure Terraform to set the required AzureRM provider
# version and features{} block.

terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = ">= 2.77.0"
    }
  }
}

provider "azurerm" {
  features {}
}

# Get the current client configuration from the AzureRM provider.
# This configuration is used to populate the root_parent_id variable with the
# current tenant ID used as the ID for the "Tenant Root Group"
# management group.

data "azurerm_client_config" "core" {}

# Use variables to customize the deployment

variable "root_id" {
  type    = string
  default = "es"
}

variable "root_name" {
  type    = string
  default = "Enterprise-Scale"
}

# Declare the Terraform Module for Cloud Adoption Framework
# Enterprise-scale and provide a base configuration.

module "enterprise_scale" {
  source  = "Azure/caf-enterprise-scale/azurerm"
  version = ">= 1.0.0"

  providers = {
    azurerm              = azurerm
    azurerm.connectivity = azurerm
    azurerm.management   = azurerm
  }

  root_parent_id = data.azurerm_client_config.core.tenant_id
  root_id        = var.root_id
  root_name      = var.root_name

}

Passaggi successivi

Il modulo Terraform per Cloud Adoption Framework su scala aziendale offre un percorso accelerato per la creazione di zone di destinazione su scala aziendale. Offre anche la flessibilità necessaria per espandere e personalizzare la distribuzione mantenendo un approccio semplificato alla gestione della configurazione di ogni zona di destinazione.

Per altre informazioni, vedere il modulo nel Registro Terraform ed esplorare la documentazione del modulo in GitHub. Nella documentazione sono disponibili altri esempi ed esercitazioni su come personalizzare la distribuzione.

Informazioni su come distribuire il modulo Terraform zone di destinazione di Azure tramite HashiCorp Learn. Da qui è anche possibile scoprire come funzionano alcune parti del modulo.