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
Para obtener más información, consulte:
Antes de empezar
Para realizar correctamente este tutorial, debe tener lo siguiente:
- Una cuenta de Oracle Cloud Infrastructure de pago. Consulte Solicitar y gestionar promociones de Oracle Cloud gratis.
- Una computadora MacOS, Linux o Windows.
- Recursos del tutorial de Terraform:
- Pase por todos los pasos de:
- Mantenga los scripts creados en los siguientes directorios:
-
$HOME/tf-provider/ -
$HOME/tf-compartment/
-
- Mantenga el compartimento del tutorial Creación de un compartimento en su arrendamiento.
1. Preparación
Prepare su entorno para crear una VCN. Además, recopile toda la información que necesita para realizar el tutorial.
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 |
|
| Región |
|
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.
- En la consola: abra el menú de navegación y seleccione Identidad y seguridad. En Identidad, seleccione Políticas.
- Seleccione su compartimento.
- Seleccione Crear política.
- 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)
-
Name:
- 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>
-
Casos de uso de política:
- 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.
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.
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.
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.
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"
- Ejemplo:
- Dentro del bloque de código:
- Agregue información de
sourceyversionde 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"]
- Agregue información de
Agregue bloques de salida al código para obtener información sobre la red virtual en la nube después de ejecutar los scripts.
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"
-
La etiqueta puede contener letras, dígitos, caracteres de subrayado (
- 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.
- Inicie el bloque con la palabra clave:
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.
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 Referencia de argumento (oci_core_security_list):
- Vaya a Proveedor de Oracle Cloud Infrastructure.
-
En el cuadro Filtro de la parte superior izquierda, introduzca
security list.Se devuelven resultados para los orígenes de datos y los recursos.
- En Núcleo, vaya a Recursos y seleccione oci_core_security_list.
- 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 resourcecomooracle-terraform-modules/vcnutilizan el mismo nombre de argumento para el OCID de la red virtual en la nube:vcn_id. - El
vcn_idsituado más a la izquierda es el argumento (entrada necesaria) para el recurso. - El
vcn_idsituado 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.
-
- Sin estado: No
- Destino: 0.0.0.0/0
- Protocolo IP: Todos los protocolos
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.
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 Referencia de argumento (oci_core_security_list):
- Vaya a Proveedor de Oracle Cloud Infrastructure.
-
En el cuadro Filtro de la parte superior izquierda, introduzca
security list.Se devuelven resultados para los orígenes de datos y los recursos.
- En Núcleo, vaya a Recursos y seleccione oci_core_security_list.
- Seleccione Referencia de argumento.
Se abre Referencia de argumento.
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
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.
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
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.
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.
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 Referencia de argumento (oci_core_security_list):
- Vaya a Proveedor de Oracle Cloud Infrastructure.
-
En el cuadro Filtro de la parte superior izquierda, introduzca
security list.Se devuelven resultados para los orígenes de datos y los recursos.
- En Núcleo, vaya a Recursos y seleccione oci_core_security_list.
- Seleccione Referencia de argumento.
Se abre Referencia de argumento.
- Para protocol, consulte Protocol Numbers:
- TCP: 6
- ICMP: 1
- Para icmp_options, consulte Internet Control Message Protocol (ICMP) Parameters.
- Para tcp_options, si no tiene ningún rango de puertos, como Rango de destino: 22, defina el valor máximo y mínimo en el mismo número. Por ejemplo:
- min = 22
- máximo = 22
Felicidades! Ha creado correctamente otra lista de seguridad en su red virtual en la nube.
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.
Felicidades! Ha creado correctamente una subred privada en su red virtual en la nube.
En Referencia de argumento (oci_core_subnet), busque todos los argumentos necesarios:
- compartment_id
- vcn_id
- cidr_block
Para navegar a Referencia de argumento (oci_core_subnet):
- Vaya a Proveedor de Oracle Cloud Infrastructure.
-
En el cuadro Filtro de la parte superior izquierda, introduzca
subnet.Se devuelven resultados para los orígenes de datos y los recursos.
- En Núcleo, vaya a Recursos y seleccione oci_core_subnet.
- 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.
- Utilice
- (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).
- En la página de detalles de la VCN, seleccione Enrutamiento o Tablas de rutas (en función de lo que vea).
- Seleccione nat-route.
- 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]
-
cidr_block
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.
Felicidades! Ha creado correctamente una subred pública en su red virtual en la nube.
En Referencia de argumento (oci_core_subnet), busque todos los argumentos necesarios:
- compartment_id
- vcn_id
- cidr_block
Para navegar a Referencia de argumento (oci_core_subnet):
- Vaya a Proveedor de Oracle Cloud Infrastructure.
-
En el cuadro Filtro de la parte superior izquierda, introduzca
subnet.Se devuelven resultados para los orígenes de datos y los recursos.
- En Núcleo, vaya a Recursos y seleccione oci_core_subnet.
- 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).
- En la página de detalles de la VCN, seleccione Enrutamiento o Tablas de rutas (en función de lo que vea).
- Seleccione internet-route.
- 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]
-
cidr_block
4. Volver a crear la VCN (opcional)
Destruya la VCN. A continuación, vuelva a ejecutar los scripts para crear otra VCN.
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.
Felicidades! Ha vuelto a crear correctamente una red virtual en la nube y sus componentes mediante Terraform, en su cuenta de Oracle Cloud Infrastructure.
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:
Siguiente paso
Para el siguiente tutorial de Terraform, vaya a:
Para obtener más información sobre el desarrollo con productos Oracle, consulte estos sitios: