Esegui provisioning delle risorse

Puoi eseguire il provisioning delle risorse utilizzando Terraform o Terragrunt. Se si utilizza Terraform, è necessario applicare le configurazioni in ogni directory, in una sequenza prescritta. Grazie a Terragrunt, puoi eseguire il provisioning di tutte le risorse con un unico comando.

Informazioni sui file di stato Terraform

Terraform memorizza le informazioni sullo stato per tenere traccia delle risorse dell'infrastruttura gestita, mappare le risorse distribuite alla configurazione, tenere traccia dei metadati e migliorare le prestazioni per le distribuzioni dell'infrastruttura di grandi dimensioni.

Per impostazione predefinita, il file terraform.tfstate è memorizzato sull'host locale. Questo funzionamento predefinito non è ottimale negli ambienti IT in cui più utenti devono creare ed eliminare le risorse definite in una determinata configurazione. Per controllare la distribuzione e la gestione delle risorse in un ambiente multiutente, memorizzare i file di stato Terraform nello storage degli oggetti Oracle Cloud Infrastructure e condividere i file di stato e i file di lock tra tutti gli utenti. Vedere Utilizzo dell'area di memorizzazione degli oggetti per i file di stato Terraform.

Provisioning delle risorse mediante Terragrunt

È possibile utilizzare Terragrunt per eseguire il provisioning di tutte le risorse nella topologia utilizzando un unico comando. Internally Terragrunt richiama i comandi Terraform e gestisce tutte le dipendenze tra le risorse definite nella configurazione.

  1. Andare alla directory examples/full-deployment.
  2. Inizializza i moduli Terraform eseguendo il comando seguente:
    make init
    Il comando inizializza tutti i moduli Terraform nella configurazione eseguendo terraform init in ogni directory.
  3. Eseguire il provisioning delle risorse eseguendo il comando seguente:
    terragrunt apply-all
    Terragrunt richiama il comando terraform apply per tutti i moduli Terraform nella configurazione, in una sequenza definita. Tutte le risorse vengono distribuite.

Provisioning delle risorse mediante Terraform

Se si sceglie di eseguire il provisioning delle risorse utilizzando Terraform, sarà necessario applicare a ogni singola directory la configurazione Terraform in una sequenza prescritta.

  1. Copiare examples/full-deployment/terraform.tfvars in ciascuna delle sottodirectory riportate di seguito sotto examples/full-deployment.
    common/compartments
    common/configuration
    management/access
    management/network
    management/server_attachment
    management/servers
    peering/network
    peering/routing
    tenant/network
    tenant/servers

    Andare alla directory examples/full-deployment e immettere il comando seguente per copiare terraform.tfvars in tutte le sottodirectory necessarie. Per la leggibilità, il comando viene visualizzato su più righe con una barra rovesciata (\) alla fine di ogni riga. Copiare tutte le righe, incluso il carattere barra rovesciata, e incollare come comando singolo.

    xargs -n 1 cp -v terraform.tfvars<<<"common/compartments/ \
    common/configuration/ management/access/ management/network/ \
    management/server_attachment/ management/servers/ peering/network/ \
    peering/routing/ tenant/network/ tenant/servers/"
  2. Andare alla directory examples/full-deployment/common/configuration.
  3. Eseguire i seguenti comandi:
    1. Inizializza la configurazione:
      terraform init
    2. Esaminare le risorse definite nella configurazione:
      terraform plan
    3. Applica la configurazione:
      terraform apply
    La configurazione nella directory common/configuration calcola il numero di VCN tenant e di VCN di peering necessarie, la dimensione CIDR di ciascuna VCN e il mapping tra le VCN tenant e le VCN di peering. Non vengono create risorse quando si applica questa configurazione. I risultati del calcolo vengono utilizzati quando vengono create le VCN e altre risorse di rete.
  4. Eseguire i comandi terraform init, terraform plan e terraform apply nelle seguenti directory in examples/full-deployment, nell'ordine di esecuzione prescritto:
    common/compartments
    peering/network
    management/network
    tenant/network
    management/access
    peering/routing
    management/servers
    management/server_attachment
    tenant/servers

    Dopo aver eseguito terraform apply in tutte le directory di configurazione nell'ordine desiderato, la topologia viene completamente distribuita.

Modificare la topologia

Per modificare la topologia, è necessario aggiornare le definizioni delle risorse nelle configurazioni Terraform appropriate, quindi applicare la configurazione rivista. L'identificazione delle definizioni di risorsa da modificare richiede una conoscenza approfondita del codice di esempio, in particolare dei moduli Terraform a cui viene fatto riferimento in ciascuna directory e delle dipendenze tra moduli.

Le istruzioni per modificare la topologia non rientrano nell'ambito di questa soluzione.

Rimuovi tutte le risorse

È possibile rimuovere facilmente tutte le risorse distribuite utilizzando Terraform o Terragrunt.

  1. Andare alla directory examples/full-deployment.
  2. Eseguire una delle operazioni riportate di seguito.
    • Se Terragrunt è installato, eseguire il comando seguente:

      terragrunt destroy-all

      Terragrunt richiama il comando terraform destroy per le risorse nella configurazione in una sequenza definita.

      Se si tenta di utilizzare terragrunt destroy-all per eseguire il cleanup di una distribuzione non riuscita o parziale, è possibile che si verifichi il seguente errore:

      Error: Unsupported attribute
        on management_rte_attachment.tf line 8, in module "management_rte_attachement":
         8:     data.terraform_remote_state.peering_servers.outputs.routing_instance_1_ip_id,
          |----------------
          | data.terraform_remote_state.peering_servers.outputs is object with 3 attributes
      This object does not have an attribute named "routing_instance_1_ip_id".

      Se si verifica questo errore, rimuovere le risorse eseguendo terraform destroy in ogni directory di configurazione, come descritto di seguito.

    • Per rimuovere le risorse utilizzando l'interfaccia CLI Terraform, eseguire terraform destroy in ogni directory di configurazione sotto examples/full-deployment secondo l'ordine indicato di seguito.

      Nota:

      Attendere il completamento del comando in ciascuna directory prima di passare alla directory successiva.
      tenant/servers
      management/server_attachment
      management/servers
      peering/routing
      management/access
      tenant/network
      management/network
      peering/network
      common/compartments
      common/configuration