Creare una rete cloud virtuale

Utilizza Terraform per creare una rete cloud virtuale (VCN) nella tua tenancy Oracle Cloud Infrastructure.

I task chiave includono come:

  • Impostare una VCN di base.
  • Definire e aggiungere le risorse seguenti alla rete:
    • Liste di sicurezza
    • Subnet private e pubbliche
Diagramma dei componenti necessari per creare una rete cloud virtuale Oracle Cloud Infrastructure con Terraform. Da un ambiente Linux locale, l'utente crea una rete cloud virtuale con Terraform. Questa rete ha una subnet pubblica 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.

Per ulteriori informazioni, fare riferimento agli argomenti sotto riportati.

Informazioni preliminari

Requisiti

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

1. Prepara

Preparare l'ambiente per la creazione di una VCN. Inoltre, raccogliere tutte le informazioni necessarie per completare il tutorial.

Raccogliere le informazioni necessarie

Copiare le seguenti informazioni nel blocco note.

Per istruzioni sulla raccolta di queste informazioni, vedere la tabella seguente.

Elemento Passi per raccogliere l'articolo
Nome compartimento Fare riferimento all'esercitazione completata Crea un compartimento.
ID compartimento
  1. Nella barra di ricerca della console, immettere <your-compartment-name>.
  2. Selezionare <your-compartment-name> nei risultati della ricerca.
  3. Selezionare Copia accanto all'OCID.
Region
  1. Nella barra di navigazione della console, individuare l'area.

    Esempio: US East (Ashburn)

    Per ulteriori informazioni, vedere Utilizzo delle aree.

  2. Cerca l'identificativo della tua area in Regioni e domini di disponibilità.

    Esempio: us-ashburn-1.

Aggiungi criterio risorsa

Se il nome utente si trova nel gruppo Administrators, saltare questa sezione. In caso contrario, chiedere all'amministratore di aggiungere il criterio seguente alla tenancy:

allow group <a-group-your-username-belongs-to> to manage all-resources in compartment <your-compartment-name>

Con questo privilegio, puoi gestire tutte le risorse nel tuo compartimento, concedendoti i diritti amministrativi in tale compartimento.

Passi per aggiungere il criterio
  1. Nella console: aprire il menu di navigazione e selezionare Identità e sicurezza. In Identità, selezionare Criteri.
  2. Selezionare il compartimento.
  3. Selezionare Crea criterio.
  4. Nella pagina Crea criterio, immettere i valori riportati di seguito.
    • Nome: manage-<your-compartment-name>-resources
    • Descrizione: Allow users to list, create, update, and delete resources in <your-compartment-name>.
    • Compartimento: <your-tenancy>(root)
  5. In Costruzione guidata criteri, immettere i valori riportati di seguito.
    • Casi d'uso dei criteri: Compartment Management
    • Modelli di criteri comuni: Let compartment admins manage the compartment
    • Dominio di Identity: <identity-domain>
    • Gruppi: <a-group-your-username-belongs-to>
    • Posizione: <your-compartment-name>
  6. Selezionare Crea.

Riferimento: criteri comuni

2. Creare una rete di base

Crea script per l'autenticazione, una rete cloud virtuale di base (VCN) definita da un modulo e output.

Aggiungere l'autenticazione

In primo luogo, impostare una directory per gli script Terraform. Quindi copiare il provider e gli script delle versioni dall'esercitazione Imposta Terraform OCI in modo che l'account Oracle Cloud Infrastructure possa autenticare gli script in esecuzione da questa directory.

  1. Nella directory $HOME creare una directory denominata tf-vcn e passare a tale directory.
    mkdir tf-vcn
    cd tf-vcn
  2. Copiare il file provider.tf nella directory tf-vcn.
    cp ../tf-provider/provider.tf .
  3. Copiare il file versions.tf nella directory tf-vcn.
    cp ../tf-provider/versions.tf .
Dichiarare una rete di base

Dichiara una rete di base con un modulo VCN (Virtual Cloud Network) Oracle Cloud Infrastructure, documentato nel registro Terraform. Quindi, eseguire gli script e creare la rete. Nelle sezioni successive, aggiungere componenti per personalizzare la rete.

Suggerimento

È possibile salvare uno stack dal workflow della console per creare una VCN. Lo stack contiene una configurazione Terraform che è possibile utilizzare come riferimento per la configurazione della VCN. Vedere Creazione di uno stack da una pagina di creazione delle risorse e Recupero della configurazione Terraform di uno stack.
  1. Nel registro Terraform, andare al modulo VCN OCI all'indirizzo vcn.
    Come accedere a questa pagina:
    1. Andare al registro Terraform.
    2. Selezionare Moduli.
    3. Nell'elenco Provider selezionare Oracle.
    4. Selezionare oracle-terraform-modules/vcn.
  2. Per Versione, selezionare Version 3.6.0 dall'elenco.
    Questa esercitazione utilizza la versione 3.6.0. Una versione diversa potrebbe richiedere input diversi e creare risorse diverse per la VCN. Per esaminare gli input obbligatori e facoltativi, selezionare Input.
  3. Creare un file denominato vcn-module.tf.
  4. Copiare il codice da Istruzioni di provisioning in vcn-module.tf.

    Ad esempio:

    # Source from https://registry.terraform.io/modules/oracle-terraform-modules/vcn/oci/
    module "vcn" {
      source  = "oracle-terraform-modules/vcn/oci"
      version = "3.6.0"
      # insert the 1 required variable here
    }
  5. Aggiornare vcn-module.tf per specificare il compartimento (input obbligatorio) e sostituire alcuni input facoltativi.
    # Source from https://registry.terraform.io/modules/oracle-terraform-modules/vcn/oci/
    module "vcn" {
      source  = "oracle-terraform-modules/vcn/oci"
      version = "3.6.0"
      # insert the 1 required variable here
    
      # Required Inputs
      compartment_id = "<compartment-ocid>"
    
      # Optional Inputs 
      region = "<region-identifier>"
      
      # Changing the following default values
      vcn_name = "tutorial-vcn"
      create_internet_gateway = true
      create_nat_gateway = true
      create_service_gateway = true
    
      # Using the following default values
      # vcn_dns_label = "vcnmodule"
      # vcn_cidrs = ["10.0.0.0/16"]
    }
    • Sostituire <compartment-ocid> e <region-identifier> con le informazioni contenute in Raccogli informazioni richieste.
    • Se si desidera un'etichetta DNS personalizzata, annullare il pagamento della riga per vcn_dns_label e modificare il valore dal valore predefinito "vcnmodule".
      Nota

      Il nome di dominio DNS per la rete cloud virtuale è:
      <your-dns-label>.oraclevcn.com
  6. Salvare il file vcn-module.tf.
Spiegazione
Informazioni sui moduli

Un modulo è un contenitore per più risorse utilizzate insieme. Invece di dichiarare le risorse dell'infrastruttura una per una, inizia con un modulo fornito da Oracle Cloud Infrastructure. Ad esempio, inizia con un modulo VCN di base. Aggiungere quindi agli script le risorse non incluse nel modulo.

Dichiarazione di un blocco del modulo
  • Avviare il blocco con la parola chiave: module
  • Aggiungere un'etichetta per il nome fornito del modulo:
    • Esempio: "vcn"
  • All'interno del blocco di codice:
    • Aggiungere le informazioni source e version dalla sezione Istruzioni di provisioning della documentazione del modulo.
    • Fornire un valore per gli input richiesti. Non hanno un valore predefinito. Ad esempio:
        # Required Inputs
        compartment_id = "<compartment-ocid>"
    • Fornire i valori per gli input facoltativi che si desidera sostituire. In caso contrario, verranno utilizzati i relativi valori predefiniti. Ad esempio:
        # Optional Inputs 
        region = "<region-identifier>"
        
        # Changing the following default values
        vcn_name = "tutorial-vcn"
        create_internet_gateway = true
        create_nat_gateway = true
        create_service_gateway = true
    • È possibile commentare gli input facoltativi e mostrarne il valore predefinito, quindi in seguito quando si esamina il codice, è possibile sapere quali valori erano previsti. Ad esempio:
        # Using the following default values
        # vcn_dns_label = "vcnmodule"
        # vcn_cidrs = ["10.0.0.0/16"]
Aggiungere output

Aggiungere blocchi di output al codice per ottenere informazioni sulla rete cloud virtuale dopo l'esecuzione degli script.

  1. Nella directory tf-vcn, creare un file denominato outputs.tf.
  2. Aggiungere il codice seguente a outputs.tf.
    # Outputs for the vcn module
    
    output "vcn_id" {
      description = "OCID of the VCN that is created"
      value = module.vcn.vcn_id
    }
    output "id-for-route-table-that-includes-the-internet-gateway" {
      description = "OCID of the internet-route table. This route table has an internet gateway to be used for public subnets"
      value = module.vcn.ig_route_id
    }
    output "nat-gateway-id" {
      description = "OCID for NAT gateway"
      value = module.vcn.nat_gateway_id
    }
    output "id-for-for-route-table-that-includes-the-nat-gateway" {
      description = "OCID of the nat-route table - This route table has a nat gateway to be used for private subnets. This route table also has a service gateway."
      value = module.vcn.nat_route_id
    }
  3. Salvare il file outputs.tf.
  4. Elencare tutti i file nella directory tf-vcn.
    ls

    Verificare che i seguenti file siano presenti nella stessa directory:

    • outputs.tf
    • provider.tf
    • vcn-module.tf
    • versions.tf
Spiegazione
Informazioni sugli output del modulo

Gli output dei moduli sono gli attributi che è possibile restituire per tale modulo.

Trova output per modulo VCN

Andare alla pagina vcn e selezionare Output per visualizzare una lista di attributi che possono essere restituiti per il modulo VCN. Esaminare la descrizione degli attributi:

  • ig_route_id
    • OCID della tabella di instradamento che include il gateway Internet
  • nat_gateway_id
    • OCID del gateway NAT
  • nat_route_id
    • OCID della tabella di instradamento che include il gateway NAT
  • vcn_id
    • OCID della VCN
Dichiarazione di un blocco di output del modulo
    • Avviare il blocco con la parola chiave: output.
    • Aggiungere un'etichetta da stampare con i risultati dell'output:
      • L'etichetta può contenere lettere, cifre, caratteri di sottolineatura (_) e trattini (-). Il primo carattere non deve essere una cifra.
      • Esempio: "vcn_id"
    • Ottenere gli attributi dagli output per il modulo in Oracle Terraform Modules.
    • All'interno del blocco di codice, immettere un valore per l'output del modulo con l'espressione:
      • value = module.<module-name>.<output-attribute>
      • Esempio: value = module.vcn.vcn_id
    • (Facoltativo): all'interno del blocco di codice, aggiungere una stringa di descrizione. Ad esempio:
      description = "OCID of the internet-route table. This route table has an internet gateway to be used for public subnets"
      Nota

      Una stringa di descrizione non viene stampata nell'output, quindi assicurarsi che l'etichetta descriva gli output.
    • Creare un blocco di output per ogni output.
Creare la rete di base
  1. Creare la rete di base con Terraform:
    terraform init
    terraform plan
    terraform apply

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

    Dopo la creazione della rete virtuale, gli output definiti vengono visualizzati nel terminale di output.
  2. (Facoltativo) Guarda la creazione dalla console:
    • Aprire il menu di navigazione , selezionare Networking, quindi selezionare Reti cloud virtuali.
    • Selezionare il compartimento.
    • Guarda la tua rete cloud virtuale visualizzata nell'elenco delle reti.

Complimenti. Creazione di una rete virtuale di base con Terraform riuscita nell'account Oracle Cloud Infrastructure. Hai una rete virtuale e puoi farlo a questo punto. Nelle sezioni successive viene illustrato come personalizzare una rete creata da un modulo.

3. Personalizzare la rete

Creare script per liste di sicurezza, subnet private e subnet pubbliche per creare la stessa rete virtuale del workflow di creazione della console.

Crea una lista di sicurezza per la subnet privata
Dichiarare una lista di sicurezza
  1. Creare un file denominato private-security-list.tf.
  2. Aggiungere il codice seguente a private-security-list.tf.
    # Source from https://registry.terraform.io/providers/oracle/oci/latest/docs/resources/core_security_list
    
    resource "oci_core_security_list" "private-security-list"{
    
    # Required
      compartment_id = "<compartment-ocid>"
      vcn_id = module.vcn.vcn_id
    
    # Optional
      display_name = "security-list-for-private-subnet"
    }
    • Sostituire <compartment-ocid> con le informazioni contenute in Raccogli informazioni richieste.
    • Puntare vcn_id all'OCID VCN creato con il modulo:
      vcn_id = module.vcn.vcn_id
  3. Salvare il file private-security-list.tf.
Spiegazione

In Riferimento argomento (oci_core_security_list), trovare tutti gli argomenti richiesti (punti di primo livello):

  • compartment_id
  • vcn_id
Per passare a questo URL

Per passare a Riferimento argomento (oci_core_security_list):

  1. Vai a Oracle Cloud Infrastructure Provider.
  2. Nella casella Filtro in alto a sinistra, immettere security list.

    Vengono restituiti i risultati sia per le origini dati che per le risorse.

  3. In Core, andare a Resources e selezionare oci_core_security_list.
  4. Selezionare Riferimento argomento.

    Viene visualizzato il riferimento argomento.

Dichiarare la lista di sicurezza:

  • Per compartment_id: utilizzare
    compartment_id = "<compartment-ocid>"
  • Per vcn_id, utilizzare l'OCID della rete virtuale di base. Per assegnare l'OCID prima di conoscerlo, assegnare un output dal modulo come input per la risorsa della lista di sicurezza:
    • Recupera l'attributo di output del modulo dalla pagina Output del modulo.
    • Assegnare un valore all'argomento risorsa con l'espressione:
      • <resource argument> = module.<module-name>.<output-attribute>
      • Esempio: vcn_id = module.vcn.vcn_id
      • Sia oci_core_security_list resource che oracle-terraform-modules/vcn utilizzano lo stesso nome argomento per l'OCID della rete cloud virtuale: vcn_id.
      • Il vcn_id più a sinistra è l'argomento (input obbligatorio) per la risorsa.
      • L'elemento vcn_id più a destra rappresenta l'OCID della VCN creata con il modulo.
      • Non importa se hai eseguito lo script del modulo VCN e hai creato o meno la VCN. In entrambi i casi, Terraform assegna l'OCID VCN alla lista di sicurezza dopo la creazione del modulo VCN.
Aggiungi una regola di uscita
Aggiungere una regola di uscita alla lista di sicurezza in base ai valori riportati di seguito.
  • Stateless: No
  • Origine: 0.0.0.0/0
  • Protocollo IP: tutti i protocolli
Nota

Il campo Consenti nella tabella viene generato automaticamente in base ad altri campi. Non si aggiunge un argomento per esso nello script.
  1. Aggiungere il seguente codice a private-security-list.tf:
      egress_security_rules {
          stateless = false
          destination = "0.0.0.0/0"
          destination_type = "CIDR_BLOCK"
          protocol = "all" 
      }
  2. Salvare il file private-security-list.tf.
  3. Aggiungere il codice seguente a outputs.tf.
    # Outputs for private security list
    
    output "private-security-list-name" {
      value = oci_core_security_list.private-security-list.display_name
    }
    output "private-security-list-OCID" {
      value = oci_core_security_list.private-security-list.id
    }
  4. Salvare il file outputs.tf.
  5. Elencare tutti i file nella directory tf-vcn.
    ls

    Verificare che i seguenti file siano presenti nella stessa directory:

    • outputs.tf
    • private-security-list.tf
    • provider.tf
    • vcn-module.tf
    • versions.tf
Spiegazione

Per private-security-list.tf, andare a Riferimento argomento (oci_core_security_list) e trovare i seguenti argomenti:

  • egress_security_rules
    • senza conservazione dello stato
    • destinazione
    • destination_type
    • protocollo
Per passare a questo URL

Per passare a Riferimento argomento (oci_core_security_list):

  1. Vai a Oracle Cloud Infrastructure Provider.
  2. Nella casella Filtro in alto a sinistra, immettere security list.

    Vengono restituiti i risultati sia per le origini dati che per le risorse.

  3. In Core, andare a Resources e selezionare oci_core_security_list.
  4. Selezionare Riferimento argomento.

    Viene visualizzato il riferimento argomento.

Nota

Utilizzare il segno di uguale (=) per assegnare un valore a un argomento solo all'interno del blocco.

  • Scrittura:
    egress_security_rules {
    <arguments with assigned values>
    }
  • Non scrivere:
    egress_security_rules = {
    <arguments with assigned values>
    }

Per gli attributi da utilizzare come output in outputs.tf, selezionare Riferimento attributo per aprire Riferimento attributi (oci_core_security_list) e trovare i seguenti attributi:

  • display_name
  • ID
Creazione della lista di sicurezza
  1. Creare la lista di sicurezza per la subnet privata con Terraform:
    terraform init
    terraform plan
    terraform apply

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

    Dopo la creazione della lista di sicurezza, gli output definiti vengono visualizzati nel terminale di output.
  2. (Facoltativo) Guarda la creazione di rete dalla console.
    1. Aprire il menu di navigazione , selezionare Networking, quindi selezionare Reti cloud virtuali.
    2. Selezionare la VCN.
    3. Nella pagina dei dettagli, selezionare Elenchi di sicurezza o Elenchi di sicurezza, a seconda dell'opzione visualizzata.
    4. Selezionare la lista di sicurezza creata per una subnet privata (security-list-for-private-subnet).
    5. Selezionare Regole di sicurezza o Regole di uscita, a seconda dell'opzione visualizzata.

Complimenti. Creazione di una lista di sicurezza con una regola di uscita nella rete cloud virtuale riuscita. Nella sezione successiva, si aggiungono regole di entrata a questa lista di sicurezza.

Crea regole di entrata per la subnet privata

In questa sezione, aggiungere le seguenti regole di entrata alla lista di sicurezza creata nella sezione precedente.

Regole di entrata

  • Regola 1:
    • Stateless: No
    • Origine: 10.0.0.0/16
    • Protocollo IP: TCP
    • Intervallo porte di origine: tutto
    • Intervallo di porte di destinazione: 22
  • Regola 2:
    • Stateless: No
    • Origine: 0.0.0.0/0
    • Protocollo IP: ICMP
    • Tipo e codice: 3, 4
  • Regola 3:
    • Stateless: No
    • Origine: 10.0.0.0/16
    • Protocollo IP: ICMP
    • Tipo e codice: 3
Nota

Il campo Consenti nella tabella viene generato automaticamente in base ad altri campi. Non si aggiunge un argomento per esso nello script.
  1. Aggiungere il seguente codice a private-security-list.tf:
      ingress_security_rules { 
          stateless = false
          source = "10.0.0.0/16"
          source_type = "CIDR_BLOCK"
          # Get protocol numbers from https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml TCP is 6
          protocol = "6"
          tcp_options { 
              min = 22
              max = 22
          }
        }
      ingress_security_rules { 
          stateless = false
          source = "0.0.0.0/0"
          source_type = "CIDR_BLOCK"
          # Get protocol numbers from https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml ICMP is 1  
          protocol = "1"
      
          # For ICMP type and code see: https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml
          icmp_options {
            type = 3
            code = 4
          } 
        }   
      
      ingress_security_rules { 
          stateless = false
          source = "10.0.0.0/16"
          source_type = "CIDR_BLOCK"
          # Get protocol numbers from https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml ICMP is 1  
          protocol = "1"
      
          # For ICMP type and code see: https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml
          icmp_options {
            type = 3
          } 
        }
  2. Salvare il file private-security-list.tf.
  3. Eseguire gli script.
    terraform init
    terraform plan
    terraform apply

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

  4. (Facoltativo) Guarda la creazione dalla console:
    1. Aprire il menu di navigazione , selezionare Networking, quindi selezionare Reti cloud virtuali.
    2. Selezionare la VCN.
    3. Nella pagina dei dettagli, selezionare Elenchi di sicurezza o Elenchi di sicurezza, a seconda dell'opzione visualizzata.
    4. Selezionare la lista di sicurezza creata per una subnet privata (security-list-for-private-subnet).
    5. Selezionare Regole di sicurezza o Regole di entrata, a seconda dell'opzione visualizzata.

Complimenti. Aggiunta di tre regole di entrata alla lista di sicurezza riuscita. Utilizzare questa lista di sicurezza per una subnet privata. È possibile creare un'altra lista di sicurezza per una subnet pubblica nella sezione successiva.

Spiegazione

In Riferimento argomento (oci_core_security_list), individuare i seguenti argomenti:

  • ingress_security_rules
    • senza conservazione dello stato
    • origine
    • source_type
    • protocollo
    • icmp_options
      • digitare
      • codice
    • tcp_options
      • minuto
      • massimo
Per passare a questo URL

Per passare a Riferimento argomento (oci_core_security_list):

  1. Vai a Oracle Cloud Infrastructure Provider.
  2. Nella casella Filtro in alto a sinistra, immettere security list.

    Vengono restituiti i risultati sia per le origini dati che per le risorse.

  3. In Core, andare a Resources e selezionare oci_core_security_list.
  4. Selezionare Riferimento argomento.

    Viene visualizzato il riferimento argomento.

Creare una lista di sicurezza per la subnet pubblica
In questa sezione, puoi creare una lista di sicurezza nella tua rete con regole di uscita e entrata. In seguito, assegnerai questa lista di sicurezza a una subnet pubblica.
  1. Nella directory tf-vcn, copiare il file private-security-list.tf e chiamarlo public-security-list.tf.
    cp private-security-list.tf public-security-list.tf
  2. Aprire il file public-security-list.tf e aggiornare quanto segue:
    • nome locale del blocco di risorse: da "private-security-list" a "public-security-list"
    • nome elenco di sicurezza: display_name = "security-list-for-public-subnet"
    # Source from https://registry.terraform.io/providers/oracle/oci/latest/docs/resources/core_security_list
    
    resource "oci_core_security_list" "public-security-list"{
    
    # Required
      compartment_id = "<compartment-ocid>"
      vcn_id = module.vcn.vcn_id
    
    # Optional
      display_name = "security-list-for-public-subnet"
  3. Utilizzare la stessa regola di uscita di quella privata.

    Regola di uscita

    • Stateless: No
    • Origine: 0.0.0.0/0
    • Protocollo IP: tutti i protocolli
      
      egress_security_rules {
          stateless = false
          destination = "0.0.0.0/0"
          destination_type = "CIDR_BLOCK"
          protocol = "all" 
      }
  4. Aggiornare la regola TCP per la prima regola di entrata come indicato di seguito.
    • dal sito source = "10.0.0.0/16" al sito source = "0.0.0.0/0"

    Regole di entrata

    • Regola 1:
      • Stateless: No
      • Origine: 0.0.0.0/0
      • Protocollo IP: TCP
      • Intervallo porte di origine: tutto
      • Intervallo di porte di destinazione: 22
    • Regola 2:
      • Stateless: No
      • Origine: 0.0.0.0/0
      • Protocollo IP: ICMP
      • Tipo e codice: 3, 4
    • Regola 3:
      • Stateless: No
      • Origine: 10.0.0.0/16
      • Protocollo IP: ICMP
      • Tipo e codice: 3
     
    ingress_security_rules { 
          stateless = false
          source = "0.0.0.0/0"
          source_type = "CIDR_BLOCK"
          # Get protocol numbers from https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml TCP is 6
          protocol = "6"
          tcp_options { 
              min = 22
              max = 22
          }
        }
      ingress_security_rules { 
          stateless = false
          source = "0.0.0.0/0"
          source_type = "CIDR_BLOCK"
          # Get protocol numbers from https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml ICMP is 1  
          protocol = "1"
      
          # For ICMP type and code see: https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml
          icmp_options {
            type = 3
            code = 4
          } 
        }   
      
      ingress_security_rules { 
          stateless = false
          source = "10.0.0.0/16"
          source_type = "CIDR_BLOCK"
          # Get protocol numbers from https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml ICMP is 1  
          protocol = "1"
      
          # For ICMP type and code see: https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml
          icmp_options {
            type = 3
          } 
        }
    
  5. Salvare il file public-security-list.tf.
  6. Aggiungere il codice seguente a outputs.tf.
    # Outputs for public security list
    
    output "public-security-list-name" {
      value = oci_core_security_list.public-security-list.display_name
    }
    output "public-security-list-OCID" {
      value = oci_core_security_list.public-security-list.id
    }
  7. Salvare il file outputs.tf.
  8. Elencare tutti i file nella directory tf-vcn.
    ls

    Verificare che i seguenti file siano presenti nella stessa directory:

    • outputs.tf
    • private-security-list.tf
    • provider.tf
    • public-security-list.tf
    • vcn-module.tf
    • versions.tf
  9. Eseguire gli script.
    terraform init
    terraform plan
    terraform apply

    Quando viene richiesta la conferma, immettere yes per creare la lista di sicurezza.

  10. (Facoltativo) Guarda la creazione dalla console.
    1. Aprire il menu di navigazione , selezionare Networking, quindi selezionare Reti cloud virtuali.
    2. Selezionare la VCN.
    3. Nella pagina dei dettagli, selezionare Elenchi di sicurezza o Elenchi di sicurezza, a seconda dell'opzione visualizzata.
    4. Selezionare la lista di sicurezza creata per una subnet pubblica (security-list-for-public-subnet).
    5. Selezionare Regole di sicurezza o Regole di entrata, a seconda dell'opzione visualizzata.
    6. Selezionare Regole di sicurezza o Regole di uscita, a seconda dell'opzione visualizzata.

Complimenti. Creazione di un'altra lista di sicurezza nella rete cloud virtuale riuscita.

Crea una subnet privata

In questa sezione, puoi creare una subnet privata nella tua rete e associare la lista di sicurezza privata a questa subnet. Inoltre, aggiungi la tabella di instradamento NAT creata con il modulo VCN a questa subnet. La tabella di instradamento NAT dispone di un gateway NAT e di un gateway di servizio ed è progettata per le subnet private. Vedere il primo diagramma nell'esercitazione.

  1. Nella directory tf-vcn, creare un file denominato private-subnet.tf e aggiungere il codice seguente:
    # Source from https://registry.terraform.io/providers/oracle/oci/latest/docs/resources/core_subnet
    
    resource "oci_core_subnet" "vcn-private-subnet"{
    
      # Required
      compartment_id = "<compartment-ocid>"
      vcn_id = module.vcn.vcn_id
      cidr_block = "10.0.1.0/24"
     
      # Optional
      # Caution: For the route table id, use module.vcn.nat_route_id.
      # Do not use module.vcn.nat_gateway_id, because it is the OCID for the gateway and not the route table.
      route_table_id = module.vcn.nat_route_id
      security_list_ids = [oci_core_security_list.private-security-list.id]
      display_name = "private-subnet"
    }
  2. Salvare il file private-subnet.tf.
    Nota

    Assicurarsi che private-subnet.tf si trovi nella directory tf-vcn.
  3. Aggiungere il codice seguente a outputs.tf.
    # 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
    }
  4. Salvare il file outputs.tf.
    Verificare che tutti i file *.tf si trovino nella stessa directory. Terraform elabora tutti i file in una directory nell'ordine corretto, in base alla loro relazione.
  5. Eseguire gli script.
    terraform init
    terraform plan
    terraform apply

    Quando viene richiesta una conferma, immettere yes per la creazione della subnet privata.

  6. (Facoltativo) Guarda la creazione dalla console:
    1. Aprire il menu di navigazione , selezionare Networking, quindi selezionare Reti cloud virtuali.
    2. Selezionare la VCN.
    3. Nella pagina dei dettagli, selezionare Subnet.
    4. Selezionare la subnet privata (subnet-privata).
    5. Nella pagina dei dettagli, individuare la tabella di instradamento: nat-route.
    6. Selezionare Sicurezza o Elenchi di sicurezza (a seconda di ciò che viene visualizzato) e trovare la lista di sicurezza (elenco di sicurezza per subnet privata).

Complimenti. Creazione di una subnet privata nella rete cloud virtuale riuscita.

Spiegazione

In Riferimento argomento (oci_core_subnet), trovare tutti gli argomenti richiesti:

  • compartment_id
  • vcn_id
  • cidr_block
Per passare a questo URL

Per passare a Riferimento argomento (oci_core_subnet):

  1. Vai a Oracle Cloud Infrastructure Provider.
  2. Nella casella Filtro in alto a sinistra, immettere subnet.

    Vengono restituiti i risultati sia per le origini dati che per le risorse.

  3. In Core, andare a Resources e selezionare oci_core_subnet.
  4. Selezionare Riferimento argomento.

    Viene visualizzato il riferimento argomento.

  • Sostituire i seguenti argomenti facoltativi:
    • route_table_id
    • security_list_ids
    • display_name
  • Assegnare i valori ai seguenti argomenti:
    • cidr_block
      • Vedere il primo diagramma nell'esercitazione.
    • route_table_id
      • OCID di una tabella di instradamento.
      • Per visualizzare i gateway per questa tabella di instradamento, fare riferimento alla subnet privata nel primo diagramma dell'esercitazione:
        • Gateway NAT
        • Gateway del servizio
      • Assegnare la tabella di instradamento al gateway NAT creato con il modulo VCN. Questa tabella di instradamento contiene anche un gateway di servizio.
        Nota

        • Usare module.vcn.nat_route_id.
        • Non utilizzare module.vcn.nat_gateway_id, perché restituisce l'OCID del gateway e non la tabella di instradamento.
      • (Facoltativo): nella console rivedere le regole della tabella di instradamento e confrontare i valori di Tipo di destinazione con il diagramma di esercitazione (gateway di servizio, gateway NAT).
        1. Nella pagina dei dettagli per la VCN, selezionare Instradamento o Tabelle di instradamento (a seconda di ciò che viene visualizzato).
        2. Selezionare nat-route.
        3. Selezionare Regole di instradamento.
    • security_list_ids
      • Restituisce una lista di stringhe, ognuna delle quali è un OCID di una lista di sicurezza.
      • Recupera l'OCID della lista di sicurezza privata.
      • Utilizzare le parentesi quadre per questo argomento. Ad esempio:
        security_list_ids = ["sec-list-1","sec-list-2","sec-list-3"]
      • Per assegnare un elenco di sicurezza, posizionarlo all'interno delle parentesi quadre senza virgole.
      • Per fare riferimento alla lista di sicurezza creata con un'altra risorsa, utilizzarne il nome locale. Ad esempio:
        security_list_ids = [oci_core_security_list.<local-name>.id]
        security_list_ids = [oci_core_security_list.private-security-list.id]
Crea una subnet pubblica

In questa sezione è possibile creare una subnet pubblica nella rete e associare la lista di sicurezza pubblica a questa subnet. Inoltre, aggiungi a questa subnet la tabella di instradamento Internet creata con il modulo VCN. La tabella di instradamento Internet dispone di un gateway Internet ed è progettata per le subnet pubbliche. Vedere il primo diagramma nell'esercitazione.

  1. Nella directory tf-vcn, creare un file denominato public-subnet.tf e aggiungere il codice seguente:
    # Source from https://registry.terraform.io/providers/oracle/oci/latest/docs/resources/core_subnet
    
    resource "oci_core_subnet" "vcn-public-subnet"{
    
      # Required
      compartment_id = "<compartment-ocid>"
      vcn_id = module.vcn.vcn_id
      cidr_block = "10.0.0.0/24"
     
      # Optional
      route_table_id = module.vcn.ig_route_id
      security_list_ids = [oci_core_security_list.public-security-list.id]
      display_name = "public-subnet"
    }
  2. Salvare il file public-subnet.tf.
    Nota

    Assicurarsi che public-subnet.tf si trovi nella directory tf-vcn.
  3. Aggiungere il codice seguente a outputs.tf.
    # 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
    }
  4. Salvare il file outputs.tf.
    Verificare che tutti i file *.tf si trovino nella stessa directory. Terraform elabora tutti i file in una directory nell'ordine corretto, in base alla loro relazione.
  5. Eseguire gli script.
    terraform init
    terraform plan
    terraform apply

    Quando viene richiesta una conferma, immettere yes per la creazione della subnet pubblica.

  6. (Facoltativo) Guarda la creazione dalla console:
    1. Aprire il menu di navigazione , selezionare Networking, quindi selezionare Reti cloud virtuali.
    2. Selezionare la VCN.
    3. Nella pagina dei dettagli, selezionare Subnet.
    4. Selezionare la subnet pubblica (public-subnet).
    5. Nella pagina dei dettagli, trovare la tabella di instradamento: internet-route.
    6. Selezionare Sicurezza o Elenchi di sicurezza (a seconda di ciò che viene visualizzato) e trovare la lista di sicurezza (elenco di sicurezza per la subnet pubblica).

Complimenti. Creazione di una subnet pubblica nella rete cloud virtuale riuscita.

Spiegazione

In Riferimento argomento (oci_core_subnet), trovare tutti gli argomenti richiesti:

  • compartment_id
  • vcn_id
  • cidr_block
Per passare a questo URL

Per passare a Riferimento argomento (oci_core_subnet):

  1. Vai a Oracle Cloud Infrastructure Provider.
  2. Nella casella Filtro in alto a sinistra, immettere subnet.

    Vengono restituiti i risultati sia per le origini dati che per le risorse.

  3. In Core, andare a Resources e selezionare oci_core_subnet.
  4. Selezionare Riferimento argomento.

    Viene visualizzato il riferimento argomento.

  • Sostituire i seguenti argomenti facoltativi:
    • route_table_id
    • security_list_ids
    • display_name
  • Assegnare i valori ai seguenti argomenti:
    • cidr_block
      • Vedere il primo diagramma nell'esercitazione.
    • route_table_id
      • OCID di una tabella di instradamento.
      • Per visualizzare il gateway per questa tabella di instradamento, fare riferimento alla subnet pubblica nel primo diagramma dell'esercitazione:
        • Gateway Internet
      • Assegnare la tabella di instradamento a un gateway Internet creato con il modulo VCN.
        Nota

        • Utilizzare module.vcn.ig_route_id.
      • (Facoltativo): nella console rivedere le regole della tabella di instradamento e confrontare il valore Tipo di destinazione con il diagramma di esercitazione (Internet Gateway).
        1. Nella pagina dei dettagli per la VCN, selezionare Instradamento o Tabelle di instradamento (a seconda di ciò che viene visualizzato).
        2. Selezionare internet-route.
        3. Selezionare Regole di instradamento.
    • security_list_ids
      • Restituisce una lista di stringhe, ognuna delle quali è un OCID di una lista di sicurezza.
      • Recupera l'OCID della lista di pubblica sicurezza.
      • Utilizzare le parentesi quadre per questo argomento. Ad esempio:
        security_list_ids = ["sec-list-1","sec-list-2","sec-list-3"]
      • Per assegnare un elenco di sicurezza, posizionarlo all'interno delle parentesi quadre senza virgole.
      • Per fare riferimento alla lista di sicurezza creata con un'altra risorsa, utilizzarne il nome locale. Ad esempio:
        security_list_ids = [oci_core_security_list.<local-name>.id]
        security_list_ids = [oci_core_security_list.public-security-list.id]

4. Ricreare la VCN (facoltativo)

Eliminare la VCN. Quindi rieseguire gli script per creare un'altra VCN.

Eseguire gli script

Nelle sezioni precedenti, per controllare il tuo lavoro, hai eseguito gli script ogni volta che hai dichiarato una risorsa. Ora li correte insieme. Gli script sono dichiarativi e Terraform risolve l'ordine in cui vengono creati gli oggetti.

  1. Elimina la tua VCN con Terraform:
    terraform destroy

    Quando viene richiesta una conferma, immettere yes per eliminare la risorsa.

  2. (Facoltativo) Guardare l'interruzione dalla console:
    • Aprire il menu di navigazione , selezionare Networking, quindi selezionare Reti cloud virtuali.
    • Selezionare il compartimento.
    • Guarda che la tua VCN scompare dalla lista.
  3. Crea una nuova rete cloud virtuale con Terraform:
    terraform init
    terraform plan
    terraform apply

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

    Una volta creata la rete, gli output definiti vengono visualizzati nel terminale di output.

    Nota

    Questa nuova rete cloud virtuale dispone di nuovi OCID per le risorse. Questa rete non è la stessa che hai distrutto.
  4. (Facoltativo) Guarda la creazione dalla console:
    • Aprire il menu di navigazione , selezionare Networking, quindi selezionare Reti cloud virtuali.
    • Selezionare il compartimento.
    • Guarda la tua nuova (nuova) rete cloud virtuale visualizzata nell'elenco delle reti.
  5. Visualizzare nuovamente gli output.
    terraform output

Complimenti. La ricreazione di una rete cloud virtuale e dei relativi componenti mediante Terraform è riuscita nell'account Oracle Cloud Infrastructure.

Nota

Questa rete cloud virtuale ha gli stessi componenti di una rete cloud virtuale creata utilizzando la Avvia procedura guidata VCN nella console, con l'opzione VCN con connettività Internet. È possibile seguire i passaggi dell'esercitazione per impostare una rete e quindi confrontarla con questa rete.

Riferimenti: