Configurare i moduli Terraform

Le risorse di rete necessarie per ospitare le applicazioni SaaS a singolo tenant su Oracle Cloud sono definite nei moduli Terraform. Scaricare i moduli e impostare le variabili richieste.

Scarica codice Terraform

Il codice Terraform per questa soluzione è disponibile in GitHub.

  1. Nel riquadro di navigazione a sinistra fare clic su Codice download.
  2. Fare clic su Repository Git.
  3. Duplicare o scaricare il repository nel computer locale.

Informazioni sul codice Terraform

Il codice Terraform per questa soluzione è organizzato in vari moduli, ognuno contenente le risorse per un componente specifico della topologia di destinazione.

Il codice Terraform contiene le seguenti directory e file al livello superiore:
  • chef: questa directory contiene le ricette Chef per l'installazione e la configurazione dei gateway di instradamento.
  • examples: questa directory contiene il codice Terraform necessario per implementare questa soluzione. Il codice in questa directory utilizza i moduli definiti nella directory modules.
  • LICENSE.txt: questo file contiene i termini e le condizioni di licenza per il codice di esempio.
  • modules: questa directory contiene i moduli Terraform che forniscono le basi di sviluppo per la soluzione.
  • README.md: questo file fornisce una breve descrizione del codice e le istruzioni di base per l'utilizzo del codice.
  • test: questa directory contiene gli script di test che è possibile utilizzare per verificare la distribuzione.
La directory examples/full-deployment contiene il codice che chiama i moduli Terraform necessari per questa soluzione. Contiene le sottodirectory e i file riportati di seguito.
examples/full-deployment
├── common
│   ├── compartments
│   └── configuration
├── Makefile
├── management
│   ├── access
│   ├── network
│   ├── server_attachment
│   └── servers
├── peering
│   ├── network
│   └── routing
├── README.md
├── tenant
│   ├── network
│   └── servers
├── terraform.tfvars.sample
└── terragrunt.hcl
Directory o file di configurazione Risorse definite nella configurazione
common/configuration Nessuno.

Il codice in questa directory usa il modulo Terraform in examples/network_calculator per calcolare il numero di VCN tenant e di peering necessari, la dimensione CIDR di ciascuna VCN e il mapping tra le VCN tenant e le VCN di peering. I risultati del calcolo vengono utilizzati quando vengono create le VCN e altre risorse di rete.

common/compartments
  • Compartimento di gestione.
  • Uno o più compartimenti per le VCN di peering.
  • Compartimento per ogni tenant.
management/access Un'istanza di computazione Oracle Linux collegata a una subnet pubblica nella VCN ISV. Questa istanza è il server di base per la topologia.
management/network
  • La VCN ISV, denominata anche VCN di gestione.
  • Gateway NAT e Internet per la VCN ISV.
  • Le seguenti subnet:
    • Una subnet di gestione privata per il management server.
    • Una subnet di accesso pubblico per il server di base.
    • Una subnet di peering privata per i gateway di instradamento
  • La tabella di instradamento predefinita per la VCN, con una regola per instradare il traffico associato alla rete Internet pubblica tramite il gateway Internet.
  • Tabella di instradamento per la subnet di peering, con una regola per instradare il traffico associato per la rete Internet pubblica tramite il gateway NAT.
  • Una lista di sicurezza per la subnet di accesso con le seguenti regole:
    • Consente il traffico ICMP in entrata da qualsiasi origine.
    • Consente il traffico TCP in uscita associato per qualsiasi destinazione.
  • Una lista di sicurezza per la subnet peering con le seguenti regole:
    • Consente il traffico TCP in uscita associato per qualsiasi destinazione.
    • Consente il traffico ICMP in entrata da qualsiasi origine.
    • Consentire il traffico TCP in entrata da qualsiasi origine alla porta 5666.
  • Una lista di sicurezza per la subnet di gestione con le seguenti regole:
    • Consentire il traffico ICMP in entrata dalla subnet di accesso.
    • Consentire il traffico HTTP in entrata dalla subnet di accesso alla porta 80.
    • Consente il traffico TCP in uscita associato per qualsiasi destinazione.
management/server_attachment
  • Una tabella di instradamento associata alla subnet di gestione con le seguenti regole:
    • Instrada il traffico associato per la rete Internet pubblica attraverso il gateway NAT.
    • Instrada il traffico associato per ciascuna delle VCN tenant all'istanza appropriata del gateway di instradamento.
  • Una tabella di instradamento collegata alla subnet di accesso con le seguenti regole:
    • Instrada il traffico per la rete Internet pubblica attraverso il gateway Internet.
    • Instrada il traffico associato per ciascuna delle VCN tenant all'istanza appropriata del gateway di instradamento.
management/servers Un'istanza di computazione Oracle Linux collegata alla subnet di gestione nella VCN ISV.

È possibile utilizzare Management Server per installare ed eseguire un'applicazione di monitoraggio dell'infrastruttura, ad esempio Nagios Core.

peering/network
  • Gruppo dinamico composto dalle istanze di calcolo che ospitano i gateway di instradamento.
  • Criterio che consente al gruppo dinamico definito in questa configurazione di utilizzare le VNIC e gli indirizzi privati nel compartimento.
  • Due VCN di peering, con una subnet in ogni VCN.
  • Un gateway di peering locale (LPG) per ogni VCN.
  • Un elenco di sicurezza per ogni subnet, con regole che consentono tutto il traffico ICMP in entrata e tutto il traffico TCP in uscita.
  • Tabella di instradamento per ogni subnet, con regole per instradare il traffico associato a ciascuna VCN tenant tramite l'LPG della VCN di peering appropriata.
peering/routing
  • Due gateway di instradamento:
    • Un gateway è una coppia di istanze di computazione, ciascuna delle quali si trova in un dominio di errore diverso, con Pacemaker installato per consentire l'alta disponibilità. Ciascuna delle istanze di computazione dispone di due VNIC secondarie, con un indirizzo IP mobile collegato alla prima VNIC secondaria. Questo gateway è destinato a dimostrare il failover HA per il gateway di instradamento.
    • L'altro gateway è una singola istanza di calcolo.
  • Un gruppo di sicurezza di rete con le seguenti regole:
    • Consentire a tutto il traffico TCP all'interno del gruppo di porte 3121, 2224 e 21064.
    • Consentire a tutto il traffico UDP all'interno del gruppo di porte 4505.
tenant/network Le risorse riportate di seguito per ogni tenant.
  • Una VCN tenant.
  • NAT e gateway Internet per la VCN del tenant.
  • Due subnet, una pubblica e l'altra privata.
  • Un LPG per la VCN.
  • Una tabella di instradamento per la subnet pubblica con le seguenti regole:
    • Instrada il traffico per la rete Internet pubblica attraverso il gateway Internet.
    • Instrada il traffico per la subnet peering tramite LPG.
    • Instrada il traffico associato per la subnet di gestione tramite LPG.
  • Tabella di instradamento per la subnet privata con le seguenti regole:
    • Instrada il traffico associato per la rete Internet pubblica attraverso il gateway NAT.
    • Instrada il traffico per la subnet peering tramite LPG.
    • Instrada il traffico associato per la subnet di gestione tramite LPG.
  • Una lista di sicurezza per la subnet pubblica con le seguenti regole:
    • Consente il traffico ICMP in entrata da qualsiasi destinazione.
    • Consente il traffico TCP in uscita su qualsiasi destinazione.
  • Una lista di sicurezza per la subnet privata con le seguenti regole:
    • Consente il traffico ICMP in entrata da qualsiasi destinazione.
    • Consente il traffico TCP in uscita su qualsiasi destinazione.
    • Consentire il traffico TCP in entrata alla porta 5666.
tenant/servers Un'istanza di computazione Oracle Linux in ciascun compartimento del tenant.

È possibile utilizzare questa istanza per installare ed eseguire un agente di monitoraggio dell'infrastruttura. Ad esempio, se si installa Nagios Core nel management server nella VCN ISV, è possibile installare l'agente Nagios nell'istanza di computazione in ogni compartimento tenant. L'agente può monitorare i server nel compartimento e inviare le metriche al server di monitoraggio Nagios.

terraform.tfvars.sample Modello per il file delle variabili Terraform.
terragrunt.hcl La configurazione di Terragrunt.

Impostazione delle variabili Terraform

Specificare i parametri richiesti per Terraform per connettersi alla tenancy Oracle Cloud Infrastructure, alle chiavi SSH per le istanze di computazione e alla password per il cluster di instradamento.

  1. Copiare examples/full-deployment/terraform.tfvars.sample in examples/full-deployment/terraform.tfvars.
  2. Aprire examples/full-deployment/terraform.tfvars in un editor in testo non codificato e impostare i valori per le variabili nel formato riportato di seguito.
    Variabile Descrizione
    tenancy_ocid L'OCID della tenancy.

    Puoi trovare l'OCID della tua tenancy nella console Web di Oracle Cloud Infrastructure. Selezionare Amministrazione dal menu Servizi, quindi fare clic su Dettagli tenancy.

    user_ocid L'OCID dell'utente che dovrà essere usato da Terraform per l'autenticazione con Oracle Cloud Infrastructure.

    Per trovare l'OCID dell'utente, selezionare Identità dal menu Servizi, quindi selezionare Utenti. Individuare il proprio nome utente nella lista e copiare il relativo OCID.

    fingerprint L'impronta della chiave di firma API caricata.
    private_key_path Il percorso completo e il nome del file che contiene la chiave di firma API privata.
    area L'ID dell'area in cui si desidera creare le risorse.

    Ad esempio, l'ID dell'area US East (Ashburn) è us-ashburn-1.

    Vedere Aree e domini di disponibilità.

    compartment_ocid L'OCID del compartimento in cui si desidera creare le risorse.

    Il compartimento specificato sarà il compartimento padre per la topologia.

    Per trovare l'OCID di un compartimento, selezionare Identità dal menu Servizi, quindi selezionare Compartimenti. Individuare il compartimento necessario nella lista e copiarne l'OCID.

    bastion_ssh_public_key_file Il percorso completo e il nome del file che contiene la chiave pubblica SSH per il server di base.
    bastion_ssh_private_key_file Il percorso completo e il nome del file che contiene la chiave privata SSH per il server di base.
    remote_ssh_public_key_file Il percorso completo e il nome del file che contiene la chiave pubblica SSH per le istanze di computazione privata nella topologia.
    remote_ssh_private_key_file Il percorso completo e il nome del file che contiene la chiave privata SSH per le istanze di calcolo private nella topologia.

    Salvare e chiudere terraform.tfvars.

    Di seguito è riportato un esempio di file terraform.tfvars completato:

    tenancy_ocid = "ocid1.tenancy.oc1..aaaaaaaa2 (truncated)"
    user_ocid = "ocid1.user.oc1..aaaaaaaag (truncated)"
    fingerprint = "56:f6:8e:bf: (truncated)"
    private_key_path = "/home/joe/.oci/oci_api_key.pem"
    region = "us-ashburn-1"
    
    compartment_ocid = "ocid1.compartment.oc1..aaaaaaaam (truncated)"
    
    bastion_ssh_public_key_file = "/home/joe/.ssh/ida_rsa_bastion.pub"
    bastion_ssh_private_key_file = "/home/joe/.ssh/ida_rsa_bastion"
    remote_ssh_public_key_file = "/home/joe/.ssh/ida_rsa_remote.pub"
    remote_ssh_private_key_file = "/home/joe/.ssh/ida_rsa_remote"
  3. Impostare un segreto condiviso per il cluster di instradamento in una variabile di ambiente.
    export TF_VAR_hacluster_password="somePassword"

    La password deve contenere almeno otto caratteri. Deve includere almeno una lettera maiuscola, una lettera minuscola, un numero e un carattere speciale (non alfanumerico).