Imposta un'infrastruttura semplice con OCI Terraform

Utilizza Terraform per impostare una semplice infrastruttura nel tuo account Oracle Cloud Infrastructure.

I task chiave includono come:

  • Copiare gli script esistenti da altre esercitazioni Terraform.
  • Modificare gli script per combinare tutte le risorse in un'unica directory.
  • Eseguire un comando apply per creare le risorse seguenti:
    • un compartimento
    • una rete cloud virtuale
    • un'istanza di computazione
Diagramma dei componenti necessari per creare un'infrastruttura semplice con Terraform. Da un ambiente Linux locale, l'utente crea una rete cloud virtuale con Terraform. Questa rete dispone di una subnet pubblica e di un'istanza di compimento che può essere raggiunta da Internet. La rete dispone anche di una subnet privata che si connette a Internet tramite un gateway NAT e che si connette anche in privato a Oracle Services Network. Il blocco CIDR per la rete cloud virtuale è 10.0.0.0/16, la subnet pubblica è 10.0.0.0/24 e la subnet privata è 10.0.1.0/24. Diagramma di un utente connesso da un computer locale a una tenancy Oracle Cloud Infrastructure.

Per ulteriori informazioni, fare riferimento agli argomenti sotto riportati.

Informazioni preliminari

Per eseguire correttamente questa esercitazione, è necessario disporre dei seguenti elementi:

Requisiti

1. Prepara

Copiare gli script creati nelle precedenti esercitazioni Terraform in una nuova directory.

Copia risorse dichiarate
  1. Nella directory $HOME creare una directory denominata tf-simple-infrastructure e passare a tale directory.
    mkdir tf-simple-infrastructure
    cd tf-simple-infrastructure
  2. Copiare gli script Terraform dalla directory tf-provider.
    cp ../tf-provider/*.tf .
    Nota

    Non copiare i file di stato (terraform.tfstate o terraform.tfstate.backup). Questi file contengono lo stato delle risorse per la directory corrente. Dopo aver eseguito gli script in questa nuova directory, si ottiene un nuovo file di stato.
  3. Rinominare il file outputs.tf in outputs1.tf.
    mv outputs.tf outputs1.tf
  4. Copiare gli script Terraform dalla directory tf-compartment.
    cp ../tf-compartment/*.tf .
    Nota

    Poiché è necessario un solo file del provider per directory, non si verificano danni quando il comando di copia sostituisce un file provider.tf con un altro.
  5. Rinominare il file outputs.tf in outputs2.tf.
    mv outputs.tf outputs2.tf
  6. Copiare gli script Terraform dalla directory tf-compute.
    cp ../tf-compute/*.tf .
  7. Rinominare il file outputs.tf in outputs3.tf.
    mv outputs.tf outputs3.tf
  8. Copiare gli script Terraform dalla directory tf-vcn.
    cp ../tf-vcn/*.tf .
  9. Rinominare il file outputs.tf in outputs4.tf.
    mv outputs.tf outputs4.tf
  10. Concatenare i quattro file di output.
    cat outputs1.tf outputs2.tf outputs3.tf outputs4.tf > outputs.tf
  11. Rimuovere i file outputs1.tf, outputs2.tf, outputs3.tf e outputs4.tf dalla directory tf-simple-infrastructure.
    rm outputs1.tf outputs2.tf outputs3.tf outputs4.tf
  12. Verificare di avere i seguenti file nella directory.
    ls
    availability-domains.tf
    compartment.tf
    compute.tf
    outputs.tf
    private-security-list.tf
    private-subnet.tf
    provider.tf
    public-security-list.tf
    public-subnet.tf
    vcn-module.tf
    versions.tf

2. Modificare gli script

Modificare gli script per assegnare un nuovo nome al compartimento e sostituire tutti gli OCID non modificabili con riferimenti.

Aggiorna il nome del compartimento
  1. Aprire il file compartment.tf.
  2. Aggiornare <your-compartment-name> con <your-new-compartment-name> nel caso in cui sia già stato creato <your-compartment-name> nelle esercitazioni precedenti.
    # Source from https://registry.terraform.io/providers/oracle/oci/latest/docs/resources/identity_compartment
    
    resource "oci_identity_compartment" "tf-compartment" {
        # Required
        compartment_id = "<tenancy-ocid>"
        description = "Compartment for Terraform resources."
        name = "<your-new-compartment-name>"
    }
Aggiorna riferimenti compartimento
Trova il riferimento all'OCID del compartimento

Nelle esercitazioni precedenti è stato definito come non modificabile l'OCID del compartimento. Ora, aggiornare <compartment-ocid> per fare riferimento al compartimento da compartment.tf.

  1. Individuare il modo in cui viene fatto riferimento all'OCID del compartimento nel file outputs.tf.
    grep -R compartment outputs.tf

    Output di esempio:

    # Outputs for compartment
    output "compartment-name" {
      value = oci_identity_compartment.tf-compartment.name
    output "compartment-OCID" {
      value = oci_identity_compartment.tf-compartment.id
  2. Copiare il valore dell'OCID compartimento nel blocco note:
    oci_identity_compartment.tf-compartment.id
    
Aggiorna OCID compartimento con codifica fissa
  1. Individuare i file che fanno riferimento a compartment_id.
    grep -Rn compartment_id

    Output di esempio:

    availability-domains.tf:7:  compartment_id = "<tenancy-ocid>"
    compartment.tf:3:   compartment_id = "<tenancy-ocid>"
    compute.tf:4:  compartment_id = "<compartment-ocid>"
    private-security-list.tf:6:  compartment_id = "<compartment-ocid>"
    private-subnet.tf:6:  compartment_id = "<compartment-ocid>"
    public-security-list.tf:6:  compartment_id = "<compartment-ocid>"
    public-subnet.tf:6:  compartment_id = "<compartment-ocid>"
    vcn-module.tf:9:  compartment_id = "<compartment-ocid>"
    Nota

    I file availability-domains.tf e compartment.tf puntano entrambi al file <tenancy-ocid>. Ad esempio, il file compartment.tf punta alla tenancy come compartimento padre, quindi crea un compartimento sotto di essa. Non modificare il file compartment_id in questi due file.
  2. Ad eccezione dei file availability-domains.tf e compartment.tf, nei file rimanenti che derivano dal comando grep, sostituire compartment_id = "<compartment-ocid>" con:
    compartment_id = oci_identity_compartment.tf-compartment.id
Aggiorna riferimenti subnet
Trova il riferimento all'OCID della subnet

Nell'esercitazione Crea un'istanza di computazione è stata specificata la subnet pubblica che ospita l'istanza di computazione. A questo punto, aggiornare il file compute.tf in modo che faccia riferimento a public-subnet-OCID dal file public-subnet.tf.

  1. Individuare il riferimento a subnet OCID nel file outputs.tf.
    grep -R subnet outputs.tf

    Output di esempio:

    ...
    # Outputs for private subnet
    output "private-subnet-name" {
      value = oci_core_subnet.vcn-private-subnet.display_name
    output "private-subnet-OCID" {
      value = oci_core_subnet.vcn-private-subnet.id
    # Outputs for public subnet
    output "public-subnet-name" {
      value = oci_core_subnet.vcn-public-subnet.display_name
    output "public-subnet-OCID" {
      value = oci_core_subnet.vcn-public-subnet.id
  2. Copiare il valore dell'OCID della subnet pubblica nel blocco note:
    oci_core_subnet.vcn-public-subnet.id
    
Aggiorna OCID subnet con codifica fissa
  1. Individuare i file che fanno riferimento a subnet_id.
    grep -Rn subnet_id

    Output di esempio:

    compute.tf:19:        subnet_id = "<your-public-subnet-ocid>"
  2. Nel file compute.tf risultante dal comando grep, sostituire compartment_id = "<your-public-subnet-ocid>" con:
    subnet_id = oci_core_subnet.vcn-public-subnet.id
    

Complimenti. Tutti gli script sono pronti per essere eseguiti.

3. Creare un'infrastruttura semplice

Esegui gli script Terraform per creare un compartimento, una rete cloud virtuale e un'istanza di computazione nella subnet pubblica.

Eseguire gli script
  1. Inizializzare una directory di lavoro nella directory tf-simple-infrastructure.
    terraform init
  2. Creare un piano di esecuzione ed esaminare le modifiche che Terraform prevede di apportare all'account:
    terraform plan

    Output di esempio:

    ....
    Terraform will perform the following actions:
    
      # oci_core_instance.ubuntu_instance will be created
    ....
    Plan: 14 to add, 0 to change, 0 to destroy.
    
    Changes to Outputs:
      + all-availability-domains-in-your-tenancy              = [
    ....
  3. Crea la tua infrastruttura semplice con Terraform:
    terraform apply

    Quando viene richiesta la conferma, immettere yes per creare le risorse.

Guarda la creazione nella console (facoltativo)
  1. aprire il menu di navigazione , selezionare Identità e sicurezza. In Identità, selezionare Compartimenti.
  2. Aggiornare la pagina finché non viene visualizzato il nome del compartimento.
  3. Aprire il menu di navigazione , selezionare Networking, quindi selezionare Reti cloud virtuali.
  4. Selezionare il compartimento.

    Se non è possibile trovare il compartimento, aggiornare la pagina.

  5. Selezionare la VCN, quindi rivedere le risorse create.
  6. Aprire il menu di navigazione e selezionare Computazione. In Computazione, selezionare Istanze.
  7. Guarda la visualizzazione dell'istanza nella lista delle istanze.
Esaminare gli output

Esaminare gli output nel terminale di output.

Esempio di output visualizzato nel terminale:
oci_identity_compartment.tf-compartment: Creating...
oci_identity_compartment.tf-compartment: Creation complete after 7s [id=xxx]
module.vcn.oci_core_vcn.vcn: Creating...
module.vcn.oci_core_vcn.vcn: Creation complete after 2s [id=xxx]
module.vcn.oci_core_internet_gateway.ig[0]: Creating...
module.vcn.oci_core_nat_gateway.nat_gateway[0]: Creating...
module.vcn.oci_core_default_security_list.lockdown[0]: Creating...
module.vcn.oci_core_service_gateway.service_gateway[0]: Creating...
oci_core_security_list.private-security-list: Creating...
oci_core_security_list.public-security-list: Creating...
module.vcn.oci_core_internet_gateway.ig[0]: Creation complete after 1s [id=xxx]
module.vcn.oci_core_route_table.ig[0]: Creating...
oci_core_security_list.public-security-list: Creation complete after 1s [id=xxx]
module.vcn.oci_core_default_security_list.lockdown[0]: Creation complete after 1s [id=xxx]
oci_core_security_list.private-security-list: Creation complete after 1s [id=xxx]
module.vcn.oci_core_route_table.ig[0]: Creation complete after 1s [id=xxx]
oci_core_subnet.vcn-public-subnet: Creating...
module.vcn.oci_core_nat_gateway.nat_gateway[0]: Creation complete after 2s [id=xxx]
module.vcn.oci_core_service_gateway.service_gateway[0]: Creation complete after 3s [id=xxx]
module.vcn.oci_core_route_table.service_gw[0]: Creating...
module.vcn.oci_core_route_table.nat[0]: Creating...
module.vcn.oci_core_route_table.service_gw[0]: Creation complete after 0s [id=xxx]
module.vcn.oci_core_route_table.nat[0]: Creation complete after 1s [id=xxx]
oci_core_subnet.vcn-private-subnet: Creating...
oci_core_subnet.vcn-public-subnet: Creation complete after 2s [id=xxx]
oci_core_instance.ubuntu_instance: Creating...
oci_core_subnet.vcn-private-subnet: Creation complete after 2s [id=xxx]
oci_core_instance.ubuntu_instance: Still creating... [10s elapsed]
oci_core_instance.ubuntu_instance: Still creating... [20s elapsed]
oci_core_instance.ubuntu_instance: Still creating... [30s elapsed]
oci_core_instance.ubuntu_instance: Creation complete after 38s [id=xxx]

Apply complete! Resources: 14 added, 0 changed, 0 destroyed.

Riferimenti:

Pagina successiva

Complimenti. Creazione di un'infrastruttura semplice con Terraform riuscita nell'account Oracle Cloud Infrastructure.

Ora che sai come utilizzare le origini dati, le risorse e i moduli, vai avanti e aggiungi nuovi oggetti da Oracle Cloud Infrastructure Provider alla tua semplice infrastruttura.

Per ulteriori informazioni sullo sviluppo con i prodotti Oracle, visitare i seguenti siti: