Creación de una red virtual en la nube

Utilice Terraform para crear una red virtual en la nube (VCN) en su arrendamiento de Oracle Cloud Infrastructure.

Las tareas clave incluyen cómo:

  • Configurar una VCN básica.
  • Defina y agregue los siguientes recursos a la red:
    • Listas de seguridad
    • Subredes públicas y privadas
Diagrama de los componentes necesarios para crear una red virtual en la nube de Oracle Cloud Infrastructure con Terraform. Desde un entorno local de Linux, el usuario crea una red virtual en la nube con Terraform. Esta red tiene una subred pública a la que se puede acceder desde Internet. La red también tiene una subred privada que se conecta a Internet a través de un gateway de NAT y también se conecta de forma privada a Oracle Services Network. El bloque CIDR para la red virtual en la nube es 10.0.0.0/16, para la subred pública es 10.0.0.0/24 y para la subred privada es 10.0.1.0/24.

Para obtener más información, consulte:

Antes de empezar

Requisitos

Para realizar correctamente este tutorial, debe tener lo siguiente:

1. Preparación

Prepare su entorno para crear una VCN. Además, recopile toda la información que necesita para realizar el tutorial.

Recopilación de la información necesaria

Copie la siguiente información en el bloc de notas.

Para conocer los pasos para recopilar esta información, consulte la siguiente tabla.

elemento Pasos para recopilar elementos
Nombre de compartimento Consulte el tutorial completo Creación de un compartimento.
ID de compartimento
  1. En la barra de búsqueda de la consola, introduzca <your-compartment-name> .
  2. Seleccione <your-compartment-name> en los resultados de búsqueda.
  3. Seleccione Copiar junto al OCID.
Región
  1. En la barra de navegación de la consola, busque su región.

    Ejemplo: Este de Estados Unidos (Ashburn)

    Para obtener más información, consulte Working in Regions.

  2. Busque el identificador de su región en Regiones y dominios de disponibilidad.

    Ejemplo: us-ashburn-1.

Adición de una política de recursos

Si su nombre de usuario está en el grupo Administrators, omita esta sección. De lo contrario, solicite al administrador que agregue la siguiente política a su arrendamiento:

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

Con este privilegio, puede gestionar todos los recursos del compartimento, otorgándole derechos administrativos en dicho compartimento.

Pasos para agregar la política
  1. En la consola: abra el menú de navegación y seleccione Identidad y seguridad. En Identidad, seleccione Políticas.
  2. Seleccione su compartimento.
  3. Seleccione Crear política.
  4. En la página Crear política, introduzca los siguientes valores:
    • Name: manage-<your-compartment-name>-resources
    • Description:: Allow users to list, create, update, and delete resources in <your-compartment-name>.
    • Compartment: <your-tenancy>(root)
  5. En Creador de políticas, introduzca los siguientes valores:
    • Casos de uso de política: Compartment Management
    • Plantillas de políticas comunes: Let compartment admins manage the compartment
    • Dominio de identidad: <identity-domain>
    • Grupos: <a-group-your-username-belongs-to>
    • Ubicación: <your-compartment-name>
  6. Haga clic en Crear.

Referencia: Políticas comunes

2. Creación de una red básica

Cree scripts para la autenticación, una red virtual en la nube (VCN) básica definida por un módulo y salidas.

Adición de autenticación

En primer lugar, configure un directorio para los scripts de Terraform. A continuación, copie los scripts de proveedor y versiones del tutorial Configuración de Terraform de OCI para que su cuenta de Oracle Cloud Infrastructure pueda autenticar los scripts que se ejecutan desde este directorio.

  1. En el directorio $HOME, cree un directorio denominado tf-vcn y cambie a ese directorio.
    mkdir tf-vcn
    cd tf-vcn
  2. Copie el archivo provider.tf en el directorio tf-vcn.
    cp ../tf-provider/provider.tf .
  3. Copie el archivo versions.tf en el directorio tf-vcn.
    cp ../tf-provider/versions.tf .
Declaración de una red básica

Declarar una red básica con un módulo de red virtual en la nube (VCN) de Oracle Cloud Infrastructure, documentado en el registro de Terraform. A continuación, ejecute los scripts y cree la red. En las siguientes secciones, agregue componentes para personalizar la red.

Consejo

Puede guardar una pila del flujo de trabajo de la consola para crear una VCN. La pila contiene una configuración de Terraform que puede utilizar como referencia para la configuración de VCN. Consulte Creación de una pila a partir de una página de creación de recursos y Obtención de la configuración de Terraform de una pila.
  1. En Terraform Registry, vaya al módulo de VCN de OCI en vcn.
    Cómo navegar a esta página:
    1. Vaya a Registro de Terraform.
    2. Seleccione Módulos.
    3. En la lista Proveedor, seleccione Oracle.
    4. Seleccione oracle-terraform-modules/vcn.
  2. En Versión, en la lista, seleccione Version 3.6.0.
    En este tutorial se utiliza la versión 3.6.0. Una versión diferente puede requerir diferentes entradas y crear diferentes recursos para la VCN. Para revisar las entradas necesarias y opcionales, seleccione Entradas.
  3. Cree un archivo denominado vcn-module.tf.
  4. Copie el código de Instrucciones de aprovisionamiento en vcn-module.tf.

    Por ejemplo:

    # 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. Actualice vcn-module.tf para especificar el compartimento (entrada necesaria) y sustituya algunas entradas opcionales.
    # 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"]
    }
    • Sustituya <compartment-ocid> y <region-identifier> por la información de Recopilación de información necesaria.
    • Si desea una etiqueta DNS personalizada, elimine el comentario de la línea para vcn_dns_label y cambie el valor de su valor por defecto "vcnmodule".
      Nota

      El nombre de dominio de DNS para su red virtual en la nube es:
      <your-dns-label>.oraclevcn.com
  6. Guarde el archivo vcn-module.tf.
Explicación
Acerca de los módulos

Un módulo es un contenedor para varios recursos que se utilizan juntos. En lugar de declarar los recursos de infraestructura uno a uno, comience por un módulo proporcionado por Oracle Cloud Infrastructure. Por ejemplo, comience con un módulo de VCN básico. A continuación, agregue los recursos que no están incluidos en el módulo a los scripts.

Declaración de un bloque de módulo
  • Inicie el bloque con la palabra clave: module
  • Agregue una etiqueta para el nombre proporcionado del módulo:
    • Ejemplo: "vcn"
  • Dentro del bloque de código:
    • Agregue información de source y version de la sección Instrucciones de aprovisionamiento de la documentación del módulo.
    • Proporcione un valor para las entradas necesarias. No tienen un valor por defecto. Por ejemplo:
        # Required Inputs
        compartment_id = "<compartment-ocid>"
    • Proporcione valores para las entradas opcionales que desea sustituir. En caso contrario, se utilizan sus valores por defecto. Por ejemplo:
        # 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
    • Puede comentar las entradas opcionales y mostrar su valor por defecto, por lo que más adelante, cuando revise el código, sabrá qué valores se esperaban. Por ejemplo:
        # Using the following default values
        # vcn_dns_label = "vcnmodule"
        # vcn_cidrs = ["10.0.0.0/16"]
Adición de salidas

Agregue bloques de salida al código para obtener información sobre la red virtual en la nube después de ejecutar los scripts.

  1. En el directorio tf-vcn, cree un archivo denominado outputs.tf.
  2. Agregue el siguiente código 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. Guarde el archivo outputs.tf.
  4. Muestre todos los archivos del directorio tf-vcn.
    ls

    Asegúrese de que los siguientes archivos estén presentes en el mismo directorio:

    • outputs.tf
    • provider.tf
    • vcn-module.tf
    • versions.tf
Explicación
Acerca de las salidas del módulo

Las salidas del módulo son los atributos que puede devolver para ese módulo.

Buscar salidas para el módulo de VCN

Vaya a la página vcn y seleccione Salidas para ver una lista de atributos que se pueden mostrar para el módulo de VCN. Revise la descripción de los atributos:

  • ig_route_id
    • OCID de la tabla de rutas que incluye el gateway de Internet
  • nat_gateway_id
    • OCID del gateway de NAT
  • nat_route_id
    • OCID de la tabla de rutas que incluye el gateway de NAT
  • vcn_id
    • OCID de la VCN
Declaración de un bloque de salida del módulo
    • Inicie el bloque con la palabra clave: output.
    • Agregue una etiqueta a imprimir con los resultados de la salida:
      • La etiqueta puede contener letras, dígitos, caracteres de subrayado (_) y guiones (-). El primer carácter no debe ser un dígito.
      • Ejemplo: "vcn_id"
    • Obtenga los atributos de las salidas del módulo en Oracle Terraform Modules.
    • Dentro del bloque de código, introduzca un valor para la salida de módulo con la expresión:
      • value = module.<module-name>.<output-attribute>
      • Ejemplo: value = module.vcn.vcn_id
    • (Opcional): dentro del bloque de código, agregue una cadena de descripción. Por ejemplo:
      description = "OCID of the internet-route table. This route table has an internet gateway to be used for public subnets"
      Nota

      No se imprime una cadena de descripción en la salida, por lo que debe asegurarse de que la etiqueta describa lo que genera.
    • Cree un bloque de salida para cada salida.
Creación de la red básica
  1. Cree su red básica con Terraform:
    terraform init
    terraform plan
    terraform apply

    Cuando se le solicite confirmación, introduzca yes para crear los recursos.

    Después de crear la red virtual, las salidas que ha definido se muestran en el terminal de salida.
  2. (Opcional) Vea la creación desde la consola:
    • Abra el menú de navegación , seleccione Red y, a continuación, seleccione Redes virtuales en la nube.
    • Seleccione su compartimento.
    • Vea que la red virtual en la nube aparece en la lista de redes.

Felicidades! Ha creado correctamente una red virtual básica con Terraform en su cuenta de Oracle Cloud Infrastructure. Tiene una red virtual y puede hacerlo en este punto. En las siguientes secciones, se muestra cómo personalizar una red creada a partir de un módulo.

3. Personalización de la red

Cree scripts para listas de seguridad, subredes privadas y subredes públicas para crear la misma red virtual que en el flujo de trabajo de creación de la consola.

Creación de una lista de seguridad para la subred privada
Declaración de una lista de seguridad
  1. Cree un archivo denominado private-security-list.tf.
  2. Agregue el siguiente código 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"
    }
  3. Guarde el archivo private-security-list.tf.
Explicación

En Referencia de argumento (oci_core_security_list), busque todos los argumentos necesarios (viñetas de primer nivel):

  • compartment_id
  • vcn_id
Para navegar a esta URL

Para navegar a Referencia de argumento (oci_core_security_list):

  1. Vaya a Proveedor de Oracle Cloud Infrastructure.
  2. En el cuadro Filtro de la parte superior izquierda, introduzca security list.

    Se devuelven resultados para los orígenes de datos y los recursos.

  3. En Núcleo, vaya a Recursos y seleccione oci_core_security_list.
  4. Seleccione Referencia de argumento.

    Se abre Referencia de argumento.

Declare la lista de seguridad:

  • Para compartment_id: use
    compartment_id = "<compartment-ocid>"
  • Para vcn_id, utilice el OCID de la red virtual básica. Para asignar el OCID antes de conocerlo, asigne una salida del módulo como entrada para el recurso de la lista de seguridad:
    • Obtenga el atributo de salida del módulo de la página Salidas del módulo.
    • Asigne un valor al argumento de recurso con la expresión:
      • <resource argument> = module.<module-name>.<output-attribute>
      • Ejemplo: vcn_id = module.vcn.vcn_id
      • Tanto oci_core_security_list resource como oracle-terraform-modules/vcn utilizan el mismo nombre de argumento para el OCID de la red virtual en la nube: vcn_id.
      • El vcn_id situado más a la izquierda es el argumento (entrada necesaria) para el recurso.
      • El vcn_id situado más a la derecha es el OCID de la VCN que crea con el módulo.
      • No importa si ha ejecutado el script del módulo de VCN y ha creado la VCN o no. De cualquier forma, Terraform asigna el OCID de la VCN a la lista de seguridad después de crear el módulo de VCN.
Adición de una regla de salida
Agregue una regla de salida a la lista de seguridad según los siguientes valores:
  • Sin estado: No
  • Destino: 0.0.0.0/0
  • Protocolo IP: Todos los protocolos
Nota

El campo Permitir de la tabla se genera automáticamente en función de otros campos. No agrega un argumento para él en el script.
  1. Agregue el siguiente código a private-security-list.tf:
      egress_security_rules {
          stateless = false
          destination = "0.0.0.0/0"
          destination_type = "CIDR_BLOCK"
          protocol = "all" 
      }
  2. Guarde el archivo private-security-list.tf.
  3. Agregue el siguiente código 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. Guarde el archivo outputs.tf.
  5. Muestre todos los archivos del directorio tf-vcn.
    ls

    Asegúrese de que los siguientes archivos estén presentes en el mismo directorio:

    • outputs.tf
    • private-security-list.tf
    • provider.tf
    • vcn-module.tf
    • versions.tf
Explicación

Para private-security-list.tf, vaya a Referencia de argumento (oci_core_security_list) y busque los siguientes argumentos:

  • egress_security_rules
    • sin estado
    • destino
    • destination_type
    • protocolo
Para navegar a esta URL

Para navegar a Referencia de argumento (oci_core_security_list):

  1. Vaya a Proveedor de Oracle Cloud Infrastructure.
  2. En el cuadro Filtro de la parte superior izquierda, introduzca security list.

    Se devuelven resultados para los orígenes de datos y los recursos.

  3. En Núcleo, vaya a Recursos y seleccione oci_core_security_list.
  4. Seleccione Referencia de argumento.

    Se abre Referencia de argumento.

Nota

Utilice el signo igual (=) para asignar un valor a un argumento solo dentro del bloque.

  • Escribir:
    egress_security_rules {
    <arguments with assigned values>
    }
  • No escriba:
    egress_security_rules = {
    <arguments with assigned values>
    }

Para los atributos que se utilizan como salidas en outputs.tf, seleccione Referencia de atributo para abrir Referencia de atributos (oci_core_security_list) y busque los siguientes atributos:

  • display_name
  • Identificador
Cree la lista de seguridad
  1. Cree la lista de seguridad para la subred privada, con Terraform:
    terraform init
    terraform plan
    terraform apply

    Cuando se le solicite confirmación, introduzca yes para crear los recursos.

    Después de crear la lista de seguridad, las salidas que haya definido se muestran en el terminal de salida.
  2. (Opcional) Vea la creación de red desde la consola.
    1. Abra el menú de navegación , seleccione Red y, a continuación, seleccione Redes virtuales en la nube.
    2. Seleccione la VCN.
    3. En la página de detalles, seleccione Seguridad o Listas de seguridad, según la opción que vea.
    4. Seleccione la lista de seguridad que se creó para una subred privada (security-list-for-private-subnet).
    5. Seleccione Reglas de seguridad o Reglas de salida, según la opción que vea.

Felicidades! Ha creado correctamente una lista de seguridad con una regla de salida en su red virtual en la nube. En la siguiente sección, agregará reglas de entrada a esta lista de seguridad.

Creación de reglas de entrada para la subred privada

En esta sección, agregue las siguientes reglas de entrada a la lista de seguridad que ha creado en la sección anterior.

Reglas de entrada

  • Regla 1:
    • Sin estado: No
    • Origen: 10.0.0.0/16
    • Protocolo IP: TCP
    • Rango de puertos de origen: Todos
    • Rango de puertos de destino: 22
  • Regla 2:
    • Sin estado: No
    • Origen: 0.0.0.0/0
    • Protocolo IP: ICMP
    • Tipo y código: 3, 4
  • Regla 3:
    • Sin estado: No
    • Origen: 10.0.0.0/16
    • Protocolo IP: ICMP
    • Tipo y código: 3
Nota

El campo Permite de la tabla se genera automáticamente en función de otros campos. No agrega un argumento para él en el script.
  1. Agregue el siguiente código 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. Guarde el archivo private-security-list.tf.
  3. Ejecute los scripts.
    terraform init
    terraform plan
    terraform apply

    Cuando se le solicite confirmación, introduzca yes para crear los recursos.

  4. (Opcional) Vea la creación desde la consola:
    1. Abra el menú de navegación , seleccione Red y, a continuación, seleccione Redes virtuales en la nube.
    2. Seleccione la VCN.
    3. En la página de detalles, seleccione Seguridad o Listas de seguridad, según la opción que vea.
    4. Seleccione la lista de seguridad que se creó para una subred privada (security-list-for-private-subnet).
    5. Seleccione Reglas de seguridad o Reglas de entrada, según la opción que vea.

Felicidades! Ha agregado correctamente tres reglas de entrada a la lista de seguridad. Esta lista de seguridad se utiliza para una subred privada. Cree otra lista de seguridad para una subred pública en la siguiente sección.

Explicación

En Referencia de argumento (oci_core_security_list), busque los siguientes argumentos:

  • ingress_security_rules
    • sin estado
    • fuente
    • source_type
    • protocolo
    • icmp_options
      • tipo
      • código
    • tcp_options
      • minutos
      • máximo
Para navegar a esta URL

Para navegar a Referencia de argumento (oci_core_security_list):

  1. Vaya a Proveedor de Oracle Cloud Infrastructure.
  2. En el cuadro Filtro de la parte superior izquierda, introduzca security list.

    Se devuelven resultados para los orígenes de datos y los recursos.

  3. En Núcleo, vaya a Recursos y seleccione oci_core_security_list.
  4. Seleccione Referencia de argumento.

    Se abre Referencia de argumento.

Creación de una lista de seguridad para la subred pública
En esta sección, creará una lista de seguridad en la red con reglas de salida y entrada. Posteriormente, asigne esta lista de seguridad a una subred pública.
  1. En el directorio tf-vcn, copie el archivo private-security-list.tf y asígnele el nombre public-security-list.tf.
    cp private-security-list.tf public-security-list.tf
  2. Abra el archivo public-security-list.tf y actualice lo siguiente:
    • nombre local del bloqueo de recursos: de "private-security-list" a "public-security-list"
    • nombre de lista de la seguridad: 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. Utilice la misma regla de salida que la privada.

    Regla de salida

    • Sin estado: No
    • Destino: 0.0.0.0/0
    • Protocolo IP: Todos los protocolos
      
      egress_security_rules {
          stateless = false
          destination = "0.0.0.0/0"
          destination_type = "CIDR_BLOCK"
          protocol = "all" 
      }
  4. Actualice la regla TCP para la primera regla de entrada de la siguiente manera:
    • de source = "10.0.0.0/16" a source = "0.0.0.0/0"

    Reglas de entrada

    • Regla 1:
      • Sin estado: No
      • Origen: 0.0.0.0/0
      • Protocolo IP: TCP
      • Rango de puertos de origen: Todos
      • Rango de puertos de destino: 22
    • Regla 2:
      • Sin estado: No
      • Origen: 0.0.0.0/0
      • Protocolo IP: ICMP
      • Tipo y código: 3, 4
    • Regla 3:
      • Sin estado: No
      • Origen: 10.0.0.0/16
      • Protocolo IP: ICMP
      • Tipo y código: 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. Guarde el archivo public-security-list.tf.
  6. Agregue el siguiente código 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. Guarde el archivo outputs.tf.
  8. Muestre todos los archivos del directorio tf-vcn.
    ls

    Asegúrese de que los siguientes archivos estén presentes en el mismo directorio:

    • outputs.tf
    • private-security-list.tf
    • provider.tf
    • public-security-list.tf
    • vcn-module.tf
    • versions.tf
  9. Ejecute los scripts.
    terraform init
    terraform plan
    terraform apply

    Cuando se le solicite confirmación, introduzca yes para crear la lista de seguridad.

  10. (Opcional) Vea la creación desde la consola.
    1. Abra el menú de navegación , seleccione Red y, a continuación, seleccione Redes virtuales en la nube.
    2. Seleccione la VCN.
    3. En la página de detalles, seleccione Seguridad o Listas de seguridad, según la opción que vea.
    4. Seleccione la lista de seguridad que se creó para una subred pública (security-list-for-public-subnet).
    5. Seleccione Reglas de seguridad o Reglas de entrada, según la opción que vea.
    6. Seleccione Reglas de seguridad o Reglas de salida, según la opción que vea.

Felicidades! Ha creado correctamente otra lista de seguridad en su red virtual en la nube.

Creación de una subred privada

En esta sección, creará una subred privada en la red y asociará la lista de seguridad privada a esta subred. También agrega la tabla de rutas NAT creada con el módulo VCN a esta subred. La tabla de rutas NAT tiene un gateway de NAT y un gateway de servicio y está diseñada para subredes privadas. Consulte el primer diagrama del tutorial.

  1. En el directorio tf-vcn, cree un archivo denominado private-subnet.tf y agregue el siguiente código:
    # 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. Guarde el archivo private-subnet.tf.
    Nota

    Asegúrese de que private-subnet.tf esté en el directorio tf-vcn.
  3. Agregue el siguiente código 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. Guarde el archivo outputs.tf.
    Asegúrese de que todos los archivos *.tf estén en el mismo directorio. Terraform procesa todos los archivos de un directorio en el orden correcto, según su relación.
  5. Ejecute los scripts.
    terraform init
    terraform plan
    terraform apply

    Cuando se le solicite confirmación, introduzca yes para que se cree la subred privada.

  6. (Opcional) Vea la creación desde la consola:
    1. Abra el menú de navegación , seleccione Red y, a continuación, seleccione Redes virtuales en la nube.
    2. Seleccione la VCN.
    3. En la página de detalles, seleccione Subredes.
    4. Seleccione la subred privada (subred privada).
    5. En la página de detalles, busque la tabla de rutas: nat-route.
    6. Seleccione Seguridad o Listas de seguridad (en función de lo que vea) y busque la lista de seguridad (security-list-for-private-subnet).

Felicidades! Ha creado correctamente una subred privada en su red virtual en la nube.

Explicación

En Referencia de argumento (oci_core_subnet), busque todos los argumentos necesarios:

  • compartment_id
  • vcn_id
  • cidr_block
Para navegar a esta URL

Para navegar a Referencia de argumento (oci_core_subnet):

  1. Vaya a Proveedor de Oracle Cloud Infrastructure.
  2. En el cuadro Filtro de la parte superior izquierda, introduzca subnet.

    Se devuelven resultados para los orígenes de datos y los recursos.

  3. En Núcleo, vaya a Recursos y seleccione oci_core_subnet.
  4. Seleccione Referencia de argumento.

    Se abre Referencia de argumento.

  • Sustituya los siguientes argumentos opcionales:
    • route_table_id
    • security_list_ids
    • display_name
  • Asigne valores a los siguientes argumentos:
    • cidr_block
      • Consulte el primer diagrama del tutorial.
    • route_table_id
      • OCID de una tabla de rutas.
      • Para ver los puertas de enlace para esta tabla de rutas, haga referencia a la subred privada en el primer diagrama del tutorial:
        • Gateway de NAT
        • Gateway de servicio
      • Asigne la tabla de rutas con el gateway de NAT creado con el módulo de VCN. Esta tabla de rutas también contiene un gateway de servicio.
        Nota

        • Utilice module.vcn.nat_route_id.
        • No utilice module.vcn.nat_gateway_id, porque devuelve el OCID del gateway y no la tabla de rutas.
      • (Opcional) En la consola, revise las reglas de la tabla de rutas y compare los valores de Tipo de destino con el diagrama del tutorial (Gateway de servicio, gateway de NAT).
        1. En la página de detalles de la VCN, seleccione Enrutamiento o Tablas de rutas (en función de lo que vea).
        2. Seleccione nat-route.
        3. Seleccione Reglas de ruta.
    • security_list_ids
      • Devuelve una lista de cadenas, cada una de las cuales es un OCID de una lista de seguridad.
      • Obtenga el OCID de la lista de seguridad privada.
      • Utilice corchetes para este argumento. Por ejemplo:
        security_list_ids = ["sec-list-1","sec-list-2","sec-list-3"]
      • Para asignar una lista de seguridad, introdúzcala dentro de los corchetes sin comas.
      • Para hacer referencia a la lista de seguridad creada con otro recurso, utilice su nombre local. Por ejemplo:
        security_list_ids = [oci_core_security_list.<local-name>.id]
        security_list_ids = [oci_core_security_list.private-security-list.id]
Creación de una subred pública

En esta sección, creará una subred pública en la red y asociará la lista de seguridad pública a esta subred. También puede agregar la tabla de rutas de Internet creada con el módulo de VCN a esta subred. La tabla de rutas de Internet tiene un gateway de Internet y está diseñada para subredes públicas. Consulte el primer diagrama del tutorial.

  1. En el directorio tf-vcn, cree un archivo denominado public-subnet.tf y agregue el siguiente código:
    # 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. Guarde el archivo public-subnet.tf.
    Nota

    Asegúrese de que public-subnet.tf esté en el directorio tf-vcn.
  3. Agregue el siguiente código 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. Guarde el archivo outputs.tf.
    Asegúrese de que todos los archivos *.tf estén en el mismo directorio. Terraform procesa todos los archivos de un directorio en el orden correcto, según su relación.
  5. Ejecute los scripts.
    terraform init
    terraform plan
    terraform apply

    Cuando se le solicite confirmación, introduzca yes para que se cree la subred pública.

  6. (Opcional) Vea la creación desde la consola:
    1. Abra el menú de navegación , seleccione Red y, a continuación, seleccione Redes virtuales en la nube.
    2. Seleccione la VCN.
    3. En la página de detalles, seleccione Subredes.
    4. Seleccione la subred pública (subred pública).
    5. En la página de detalles, busque la tabla de rutas: internet-route.
    6. Seleccione Seguridad o Listas de seguridad (en función de lo que vea) y busque la lista de seguridad (security-list-for-public-subnet).

Felicidades! Ha creado correctamente una subred pública en su red virtual en la nube.

Explicación

En Referencia de argumento (oci_core_subnet), busque todos los argumentos necesarios:

  • compartment_id
  • vcn_id
  • cidr_block
Para navegar a esta URL

Para navegar a Referencia de argumento (oci_core_subnet):

  1. Vaya a Proveedor de Oracle Cloud Infrastructure.
  2. En el cuadro Filtro de la parte superior izquierda, introduzca subnet.

    Se devuelven resultados para los orígenes de datos y los recursos.

  3. En Núcleo, vaya a Recursos y seleccione oci_core_subnet.
  4. Seleccione Referencia de argumento.

    Se abre Referencia de argumento.

  • Sustituya los siguientes argumentos opcionales:
    • route_table_id
    • security_list_ids
    • display_name
  • Asigne valores a los siguientes argumentos:
    • cidr_block
      • Consulte el primer diagrama del tutorial.
    • route_table_id
      • OCID de una tabla de rutas.
      • Para ver el gateway de esta tabla de rutas, haga referencia a la subred pública en el primer diagrama del tutorial:
        • Gateway de Internet
      • Asigne la tabla de rutas con un gateway de Internet creado con el módulo de VCN.
        Nota

        • Utilice module.vcn.ig_route_id.
      • (Opcional) En la consola, revise las reglas de la tabla de rutas y compare el valor de Tipo de destino con el diagrama del tutorial (gateway de Internet).
        1. En la página de detalles de la VCN, seleccione Enrutamiento o Tablas de rutas (en función de lo que vea).
        2. Seleccione internet-route.
        3. Seleccione Reglas de ruta.
    • security_list_ids
      • Devuelve una lista de cadenas, cada una de las cuales es un OCID de una lista de seguridad.
      • Obtenga el OCID de la lista de seguridad public.
      • Utilice corchetes para este argumento. Por ejemplo:
        security_list_ids = ["sec-list-1","sec-list-2","sec-list-3"]
      • Para asignar una lista de seguridad, introdúzcala dentro de los corchetes sin comas.
      • Para hacer referencia a la lista de seguridad creada con otro recurso, utilice su nombre local. Por ejemplo:
        security_list_ids = [oci_core_security_list.<local-name>.id]
        security_list_ids = [oci_core_security_list.public-security-list.id]

4. Volver a crear la VCN (opcional)

Destruya la VCN. A continuación, vuelva a ejecutar los scripts para crear otra VCN.

Ejecute los scripts

En las secciones anteriores, para comprobar su trabajo, ha ejecutado sus scripts cada vez que haya declarado un recurso. Ahora, los ejecuta juntos. Observa que los scripts son declarativos y Terraform resuelve el orden en el que se crean los objetos.

  1. Destruya la VCN con Terraform:
    terraform destroy

    Cuando se le solicite confirmación, introduzca yes para que se destruya el recurso.

  2. (Opcional) Vea la terminación desde la consola:
    • Abra el menú de navegación , seleccione Red y, a continuación, seleccione Redes virtuales en la nube.
    • Seleccione su compartimento.
    • Observe cómo la VCN desaparece de la lista.
  3. Cree una nueva red virtual en la nube con Terraform:
    terraform init
    terraform plan
    terraform apply

    Cuando se le solicite confirmación, introduzca yes para crear los recursos.

    Después de crear la red, las salidas que ha definido se muestran en el terminal de salida.

    Nota

    Esta nueva red virtual en la nube tiene nuevos OCID para sus recursos. Esta red no es la misma que la que ha destruido.
  4. (Opcional) Vea la creación desde la consola:
    • Abra el menú de navegación , seleccione Red y, a continuación, seleccione Redes virtuales en la nube.
    • Seleccione su compartimento.
    • Vea que la (nueva) red virtual en la nube recreada aparece en la lista de redes.
  5. Vuelva a mostrar las salidas.
    terraform output

Felicidades! Ha vuelto a crear correctamente una red virtual en la nube y sus componentes mediante Terraform, en su cuenta de Oracle Cloud Infrastructure.

Nota

Esta red virtual en la nube tiene los mismos componentes que una red virtual en la nube creada mediante el asistente de inicio de VCN en la consola, con la opción VCN con conexión a Internet. Puede seguir los pasos del tutorial para configurar una red y, a continuación, compararla con esta red.

Referencias: