Creare una topologia di rete ibrida hub-spoke con Terraform in Azure

Terraform consente di definire, visualizzare in anteprima e distribuire l'infrastruttura cloud. Con Terraform è possibile creare file di configurazione usando la sintassi HCL. La sintassi HCL consente di specificare il provider di servizi cloud, ad esempio Azure, e gli elementi che costituiscono l'infrastruttura cloud. Dopo aver creato i file di configurazione, è necessario creare un piano di esecuzione che consenta di visualizzare in anteprima le modifiche apportate all'infrastruttura prima che vengano distribuite. Dopo aver verificato le modifiche, è possibile applicare il piano di esecuzione per distribuire l'infrastruttura.

Questa serie di articoli illustra come usare Terraform per implementare in una topologia di rete hub-spoke.

Una topologia hub-spoke consente di isolare i carichi di lavoro e allo stesso tempo di condividere i servizi comuni. Questi servizi includono l'identità e la sicurezza. L'hub è una rete virtuale che funge da punto centrale di connessione a una rete locale. Gli spoke sono reti virtuali che eseguono il peering con l'hub. I servizi condivisi vengono distribuiti nell'hub, mentre i singoli carichi di lavoro vengono distribuiti all'interno delle reti spoke.

In questo articolo vengono illustrate le operazioni seguenti:

  • Disporre le risorse dell'architettura di riferimento della rete ibrida hub e spoke
  • Creare risorse dell'appliance di rete hub
  • Creare una rete hub in Azure per fungere da punto comune per tutte le risorse
  • Creare singoli carichi di lavoro come reti virtuali spoke in Azure
  • Stabilire gateway e connessioni tra reti locali e di Azure
  • Creare peering reti virtuali in reti spoke

1. Configurare l'ambiente

  • Sottoscrizione di Azure: se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

2. Comprendere l'architettura della topologia hub-spoke

Nella topologia hub-spoke l'hub è una rete virtuale. Tale rete virtuale funge da punto centrale di connettività alla rete locale. Gli spoke sono le reti virtuali peer con l'hub, e possono essere usati per isolare i carichi di lavoro. Flussi di traffico tra il data center locale e l'hub attraverso una connessione di gateway VPN o ExpressRoute. L'immagine seguente illustra i componenti in una topologia hub-spoke:

Hub and spoke topology architecture in Azure

Vantaggi della topologia hub-spoke

Una topologia di rete hub-spoke consente di isolare i carichi di lavoro e allo stesso tempo di condividere i servizi comuni. Questi servizi includono l'identità e la sicurezza. L'hub è una rete virtuale che funge da punto centrale di connessione a una rete locale. Gli spoke sono reti virtuali che eseguono il peering con l'hub. I servizi condivisi vengono distribuiti nell'hub, mentre i singoli carichi di lavoro vengono distribuiti all'interno delle reti spoke. Di seguito sono descritti alcuni dei vantaggi offerti dalla topologia di rete hub-spoke:

  • Risparmio sui costi tramite la centralizzazione dei servizi in un'unica posizione che può essere condivisa da più carichi di lavoro. Questi carichi di lavoro includono appliance virtuali di rete e server DNS.
  • Superamento dei limiti delle sottoscrizioni eseguendo il peering delle reti virtuali da sottoscrizioni diverse all'hub centrale.
  • Separazione dei compiti tra IT centrale (SecOPs, InfraOps) e carichi di lavoro (DevOps).

Usi tipici dell'architettura hub-spoke

Di seguito sono descritti alcuni degli usi tipici di un'architettura hub-spoke:

  • Molti clienti hanno carichi di lavoro che vengono distribuiti in ambienti diversi. Si tratta, ad esempio, di ambienti di sviluppo, testing e produzione. In molti casi questi carichi di lavoro devono condividere servizi quali DNS, IDS, NTP o Active Directory Domain Services. Questi servizi condivisi possono essere collocati nella rete virtuale hub. In questo modo ogni ambiente viene distribuito a uno spoke per mantenere l'isolamento.
  • Carichi di lavoro che non richiedono connettività uno con l'altro, ma richiedono l'accesso ai servizi condivisi.
  • Aziende che richiedono un controllo centralizzato sugli aspetti correlati alla sicurezza.
  • Aziende che richiedono una gestione separata per i carichi di lavoro in ogni spoke.

3. Visualizzare in anteprima i componenti demo

Durante l'esecuzione di ogni articolo di questa serie, i vari componenti vengono definiti in script Terraform distinti. L'architettura creata e distribuita per la demo è costituita dai componenti seguenti:

  • Rete locale. Una rete LAN privata in esecuzione con un'organizzazione. Per l'architettura di riferimento hub-spoke, viene usata una rete virtuale in Azure per simulare una rete locale.

  • Dispositivo VPN. Un servizio o un dispositivo VPN offre connettività esterna alla rete locale. Il dispositivo VPN può essere un'appliance hardware o una soluzione software.

  • Rete virtuale dell'hub. L'hub è il punto centrale di connettività alla rete locale e la posizione in cui vengono ospitati i servizi. Questi servizi possono essere usati dai diversi carichi di lavoro ospitati nelle reti virtuali spoke.

  • Subnet del gateway: I gateway di rete virtuale vengono mantenuti nella stessa subnet.

  • Reti virtuali spoke. Gli spoke possono essere usati per isolare i carichi di lavoro nelle reti virtuali corrispondenti, gestite separatamente rispetto agli altri spoke. Ogni carico di lavoro può includere più livelli, con più subnet connesse tramite i bilanciamenti del carico di Azure.

  • Peering reti virtuali. È possibile connettere due reti virtuali tramite una connessione peering. Le connessioni peering sono connessioni non transitive a bassa latenza tra reti virtuali. Dopo il peering, le reti virtuali si scambiano traffico tramite il backbone di Azure, senza che sia necessario un router. In una topologia di rete hub-spoke viene usato il peering reti virtuali per connettere l'hub a ogni spoke. È possibile eseguire il peering di reti virtuali nella stessa area o in aree differenti.

4. Implementare il codice Terraform

  1. Creare una directory per contenere il codice di esempio per l'intera serie di più articoli.

  2. Creare un file denominato main.tf e inserire il codice seguente:

    terraform {
    
      required_version = ">=0.12"
    
      required_providers {
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "~>2.0"
        }
      }
    }
    
    provider "azurerm" {
      features {}
    }
    
  3. Creare un file denominato variables.tf per contenere le variabili di progetto e inserire il codice seguente:

    variable "location" {
        description = "Location of the network"
        default     = "eastus"
    }
    
    variable "username" {
        description = "Username for Virtual Machines"
        default     = "azureuser"
    }
    
    variable "password" {
        description = "Password for Virtual Machines"
    }
    
    variable "vmsize" {
        description = "Size of the VMs"
        default     = "Standard_DS1_v2"
    }
    

    Punti principali:

    • Questo articolo usa una password immessa quando si chiama terraform plan. In un'app reale è consigliabile usare una coppia di chiavi SSH pubblica/privata.
    • Per altre informazioni sulle chiavi SSH e Azure, vedere Come usare le chiavi SSH con Windows in Azure.

Risolvere i problemi di Terraform in Azure

Risolvere i problemi comuni relativi all'uso di Terraform in Azure

Passaggi successivi