Condividi tramite


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

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, si crea un piano di esecuzione che consente di visualizzare in anteprima le modifiche dell'infrastruttura prima della distribuzione. 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 Azure una topologia di rete hub-spoke.

Una topologia hub-spoke è un modo per isolare i carichi di lavoro durante la condivisione di servizi comuni. Questi servizi includono identità e sicurezza. L'hub è una rete virtuale (VNet) che funge da punto di connessione centrale 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:

  • Progettare le risorse dell'architettura di riferimento della rete ibrida a hub e spoke
  • Creare risorse delle appliance dell'hub di rete
  • 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 VNet verso le 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. La rete virtuale funge da punto centrale di connettività alla rete locale. I spoke sono reti virtuali che fanno peering con l'hub e possono essere usate 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:

Architettura della topologia hub-spoke in Azure

Vantaggi della topologia hub-spoke

Una topologia di rete hub-spoke è un modo per isolare i carichi di lavoro durante la condivisione di servizi comuni. Questi servizi includono identità e sicurezza. L'hub è una rete virtuale che funge da punto di connessione centrale 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. Ecco alcuni vantaggi della topologia di rete hub-spoke:

  • Risparmio sui costi centralizzando i 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.
  • Superare i limiti delle sottoscrizioni eseguendo il peering di VNets da sottoscrizioni diverse all'hub centrale.
  • Separazione dei problemi tra it centrale (SecOps, InfraOps) e carichi di lavoro (DevOps).

Usi tipici per l'architettura hub-spoke

Alcuni degli usi tipici per un'architettura hub-spoke includono:

  • Molti clienti hanno carichi di lavoro distribuiti in ambienti diversi. Questi ambienti includono sviluppo, test e produzione. Molte volte, questi carichi di lavoro devono condividere servizi come DNS, IDS, NTP o Servizi di dominio Active Directory. Questi servizi condivisi possono essere inseriti nella rete virtuale dell'hub. Così, ogni ambiente viene implementato in un spoke per mantenere l'isolamento.
  • I carichi di lavoro che non richiedono la connettività tra loro, ma richiedono l'accesso ai servizi condivisi.
  • Aziende che richiedono il controllo centrale sugli aspetti di 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 demo creata e distribuita è costituita dai componenti seguenti:

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

  • Dispositivo VPN. Un dispositivo VPN o un servizio fornisce 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 un luogo in cui ospitare 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 proprie reti virtuali, gestiti separatamente da 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 VNets utilizzando una connessione di peering. Le connessioni di peering sono connessioni non transitive e a bassa latenza tra reti virtuali. Dopo il peering, le reti virtuali scambiano il traffico usando il backbone di Azure, senza bisogno di un router. In una topologia di rete hub-spoke il peering reti virtuali viene usato per connettere l'hub a ogni spoke. È possibile eseguire il peering di reti virtuali nella stessa area o in aree diverse.

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 = "~> 3.0"
        }
      }
    }
    
    provider "azurerm" {
      features {
        resource_group {
          prevent_deletion_if_contains_resources = false
        }
      }
    }
    
    resource "random_password" "password" {
      count  = var.password == null ? 1 : 0
      length = 20
    }
    
    locals {
      password = try(random_password.password[0].result, var.password)
    }
    
  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"
      sensitive   = true
      default     = null
    }
    
    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