Este módulo proporciona el bootstrapping inicial necesario para provocar una nueva red de nube virtual (VCN) y otros servicios opcionales en Oracle Cloud Infrastructure (OCI).
Un VCN es la base central de una red en OCI. Este módulo proporciona la capacidad de crear los siguientes recursos:
| Recurso | Creado por defecto? |
|---|---|
| VCN | No (opcional) |
| Puerta de enlace de Internet | No (opcional) |
| Puerta de entrada a Nat | No (opcional) |
| Puerta de enlace de servicio | No (opcional) |
| Puerta de enlace de enrutamiento dinámico | No (opcional) |
| Bastión | No (opcional) |
Al usar este módulo, se creará una red de nube básica, incluidas las rutas básicas de comunicación fundamental (para la mayoría de los casos de uso, aunque no todos). Para situaciones en las que se necesita VPN Connect, FastConnect o VCN Pesing, estos servicios deberán construirse sobre el VCN implementado por este módulo.
Se han proporcionado varios ejemplos completamente funcionales en el directorio examples . Consulte el README.md en cada directorio de ejemplo para obtener instrucciones específicas para cada ejemplo.
Para comenzar rápidamente, para la implementación mínima, puede usar el siguiente ejemplo:
module "oci_network" {
source = "../../"
#source = "oracle-terraform-modules/default-vcn/oci"
default_compartment_id = "${var.compartment_id}"
}
Esto implementará un VCN utilizando los valores predeterminados del módulo. Revise este readMe para obtener una descripción detallada de estos parámetros.
Este módulo de servicio central se usa típicamente en la implementación, sin que no se requiere más acceso; Es posible que deba acceder a un bastión, si se le solicita que se cree como parte de la solución.
Puede continuar administrando el entorno implementado utilizando Terraform (Best), OCI CLI, la consola OCI (UI), directamente a través de la API, etc.
| Atributo | Tipo de datos | Requerido | Valor predeterminado | Valores válidos | Descripción |
|---|---|---|---|---|---|
| default_compartment_id | cadena | Sí | ninguno | cadena del compartimento ACID | Este es el OCID predeterminado que se usará al crear objetos (a menos que se anule para cualquier objeto específico). Esto debe ser el ACID de un compartimento preexistente (no creará el compartimento). |
| VCN_OPTIONS | mapa | No | vea abajo | vea abajo | Los parámetros opcionales que se pueden usar para personalizar el VCN. |
| existente_vcn_id | cadena | No | nulo | El ocid de cualquier VCN preexistente | Si no se crea un nuevo VCN, entonces se debe proporcionar el ACID de un VCN existente aquí. Todos los recursos creados serán parte de este VCN preexistente (si no se proporciona un VCN). |
Tenga en cuenta que a medida que se crea el VCN, los recursos predeterminados (tabla de ruta, lista de seguridad y opciones DHCP) se dejan como se modifican de ninguna manera). A menudo no se utilizan estos recursos. Consulte la documentación sobre los recursos predeterminados, los componentes predeterminados que vienen con su VCN y listas de seguridad predeterminadas para obtener más información.
vcn_options
El atributo vcn_options es un atributo de mapa opcional. Tenga en cuenta que si se usa este atributo, se deben especificar todas las teclas/valores (Terraform no permite las teclas/valores de mapa predeterminados u opcionales). Tiene las siguientes claves definidas (y valores predeterminados):
| Llave | Tipo de datos | Valor predeterminado | Valores válidos | Descripción |
|---|---|---|---|---|
| nombre para mostrar | cadena | "VCN" | Cualquier nombre aceptable para la API OCI. | Se usa para definir un nombre específico para su VCN. |
| compartimento_id | cadena | nulo | Compartimento | El compartimento preexistente ACID (si no se utilizará el compartimento predeterminado). Si este valor es nulo, se utilizará el compartimento predeterminado ACID. |
| definido_tags | mapa (cadena) | {} | Cualquier mapa de nombres y valores de etiquetas que sea aceptable para la API OCI. | Si se deben establecer alguna etiqueta definida en este recurso, hágalo con este atributo. |
| Freeform_tags | mapa (cadena) | {} | Cualquier mapa de nombres y valores de etiquetas que sea aceptable para la API OCI. | Si se deben establecer etiquetas de forma libre en este recurso, hágalo con este atributo. |
| CIDR | cadena | "10.0.0.0/16" | IPv4 CIDR | Especifique el IPv4 CIDR que se utilizará para el VCN. |
| enable_dns | bool | verdadero | verdadero/falso | Si el DNS debe habilitarse o no en el VCN. |
| dns_label | cadena | "VCN" | Nombre de DNS válido. | Especifique la etiqueta DNS que se utilizará para el VCN. Si este valor es nulo, DNS se deshabilitará para el VCN. |
Ejemplo
El siguiente ejemplo crea VCN con un CIDR de 10.0.0.0/24, Nombre de visualización de la prueba del módulo , la etiqueta DNS de TestVcn y use el compartimento predeterminado ACID (no se muestra en el ejemplo anterior).
module "oci_network" {
... /snip - shortened for brevity...
vcn_options = {
display_name = "Module test"
cidr = "10.0.0.0/24"
enable_dns = true
dns_label = "testvcn"
compartment_id = null
defined_tags = null
freeform_tags = null
}
}
| Atributo | Tipo de datos | Requerido | Valor predeterminado | Valores válidos | Descripción |
|---|---|---|---|---|---|
| create_igw | bool | No | FALSO | verdadero/falso | Si se debe crear o no un IGW en el VCN. |
| IGW_OPTIONS | mapa | No | vea abajo | vea abajo | Los parámetros opcionales que se pueden usar para personalizar el IGW. |
igw_options
El atributo igw_options es un atributo de mapa opcional. Tenga en cuenta que si se usa este atributo, se deben especificar todas las teclas/valores (Terraform no permite las teclas/valores de mapa predeterminados u opcionales). Tiene las siguientes claves definidas (y valores predeterminados):
| Llave | Tipo de datos | Valor predeterminado | Valores válidos | Descripción |
|---|---|---|---|---|
| nombre para mostrar | cadena | "IGW" | Cualquier nombre aceptable para la API OCI. | Se usa para definir un nombre específico para su IGW. |
| compartimento_id | cadena | nulo | Compartimento | El compartimento preexistente ACID (si no se utilizará el compartimento predeterminado). Si este valor es nulo, se utilizará el compartimento predeterminado ACID. |
| definido_tags | mapa (cadena) | {} | Cualquier mapa de nombres y valores de etiquetas que sea aceptable para la API OCI. | Si se deben establecer alguna etiqueta definida en este recurso, hágalo con este atributo. |
| Freeform_tags | mapa (cadena) | {} | Cualquier mapa de nombres y valores de etiquetas que sea aceptable para la API OCI. | Si se deben establecer etiquetas de forma libre en este recurso, hágalo con este atributo. |
| activado | bool | verdadero | verdadero/falso | Si el IGW debe estar habilitado o no. |
Ejemplo
module "oci_network" {
... /snip - shortened for brevity...
igw_options = {
display_name = "my_igw"
compartment_id = null
defined_tags = null
freeform_tags = null
enabled = false
}
}
El ejemplo anterior creará un IGW (habilitado) en el VCN con un nombre de visualización de MY_IGW y usará el compartimento predeterminado ACID (no se muestra en el ejemplo anterior).
| Atributo | Tipo de datos | Requerido | Valor predeterminado | Valores válidos | Descripción |
|---|---|---|---|---|---|
| create_natgw | bool | No | FALSO | verdadero/falso | Si se debe crear o no un NATGW en el VCN. |
| natgw_options | mapa | No | vea abajo | vea abajo | Los parámetros opcionales que se pueden usar para personalizar el NATGW. |
natgw_options
El atributo natgw_options es un atributo de mapa opcional. Tenga en cuenta que si se usa este atributo, se deben especificar todas las teclas/valores (Terraform no permite las teclas/valores de mapa predeterminados u opcionales). Tiene las siguientes claves definidas (y valores predeterminados):
| Llave | Tipo de datos | Valor predeterminado | Valores válidos | Descripción |
|---|---|---|---|---|
| nombre para mostrar | cadena | "Natgw" | Cualquier nombre aceptable para la API OCI. | Se usa para definir un nombre específico para su IGW. |
| compartimento_id | cadena | nulo | Compartimento | El compartimento preexistente ACID (si no se utilizará el compartimento predeterminado). Si este valor es nulo, se utilizará el compartimento predeterminado ACID. |
| definido_tags | mapa (cadena) | {} | Cualquier mapa de nombres y valores de etiquetas que sea aceptable para la API OCI. | Si se deben establecer alguna etiqueta definida en este recurso, hágalo con este atributo. |
| Freeform_tags | mapa (cadena) | {} | Cualquier mapa de nombres y valores de etiquetas que sea aceptable para la API OCI. | Si se deben establecer etiquetas de forma libre en este recurso, hágalo con este atributo. |
| block_traffic | bool | FALSO | verdadero/falso | Si el NATGW debe bloquear o no el tráfico. |
Ejemplo
module "oci_network" {
... /snip - shortened for brevity...
natgw_options = {
display_name = "my_natgw"
compartment_id = null
defined_tags = null
freeform_tags = null
block_traffic = false
}
}
El ejemplo anterior creará un NATGW en el VCN con un nombre de pantalla de My_NATGW , no bloqueará el tráfico y usará el compartimento predeterminado ACID (no se muestra en el ejemplo anterior).
| Atributo | Tipo de datos | Requerido | Valor predeterminado | Valores válidos | Descripción |
|---|---|---|---|---|---|
| create_svcgw | bool | No | FALSO | verdadero/falso | Si se debe crear o no un SVCGW en el VCN. |
| svcgw_options | mapa | No | vea abajo | vea abajo | Los parámetros opcionales que se pueden usar para personalizar el SVCGW. |
svcgw_options
El atributo svcgw_options es un atributo de mapa opcional. Tenga en cuenta que si se usa este atributo, se deben especificar todas las teclas/valores (Terraform no permite las teclas/valores de mapa predeterminados u opcionales). Tiene las siguientes claves definidas (y valores predeterminados):
| Llave | Tipo de datos | Valor predeterminado | Valores válidos | Descripción |
|---|---|---|---|---|
| nombre para mostrar | cadena | "SVCGW" | Cualquier nombre aceptable para la API OCI. | Se usa para definir un nombre específico para su SVCGW. |
| compartimento_id | cadena | nulo | Compartimento | El compartimento preexistente ACID (si no se utilizará el compartimento predeterminado). Si este valor es nulo, se utilizará el compartimento predeterminado ACID. |
| definido_tags | mapa (cadena) | {} | Cualquier mapa de nombres y valores de etiquetas que sea aceptable para la API OCI. | Si se deben establecer alguna etiqueta definida en este recurso, hágalo con este atributo. |
| Freeform_tags | mapa (cadena) | {} | Cualquier mapa de nombres y valores de etiquetas que sea aceptable para la API OCI. | Si se deben establecer etiquetas de forma libre en este recurso, hágalo con este atributo. |
| servicios | Lista (cadena) | nulo | Los OCID (s) de cualquier servicio de puerta de enlace de servicio OCI válido. | Proporcione el servicio que debe permitir la puerta de enlace de servicio. Use la salida del módulo svcgw_services para una lista de servicios en la región (ver más abajo para un ejemplo de esto). |
Ejemplo
module "oci_network" {
... /snip - shortened for brevity...
svcgw_options = {
display_name = "my_svcgw"
compartment_id = null
defined_tags = null
freeform_tags = null
services = [
module.oci_network.svcgw_services.0.id
]
}
}
El ejemplo anterior creará un SVCGW en el VCN con un nombre de pantalla de My_SVCGW , use el compartimento predeterminado ACID (no se muestra en el ejemplo anterior) y usará el primer servicio en la lista de servicios disponibles en la región.
| Atributo | Tipo de datos | Requerido | Valor predeterminado | Valores válidos | Descripción |
|---|---|---|---|---|---|
| create_drg | bool | No | FALSO | verdadero/falso | Si se debe crear o no un DRG en el VCN. |
| DRG_OPTIONS | mapa | No | vea abajo | vea abajo | Los parámetros opcionales que se pueden usar para personalizar el DRG. |
drg_options
El atributo drg_options es un atributo de mapa opcional. Tenga en cuenta que si se usa este atributo, se deben especificar todas las teclas/valores (Terraform no permite las teclas/valores de mapa predeterminados u opcionales). Tiene las siguientes claves definidas (y valores predeterminados):
| Llave | Tipo de datos | Valor predeterminado | Valores válidos | Descripción |
|---|---|---|---|---|
| nombre para mostrar | cadena | "DRG" | Cualquier nombre aceptable para la API OCI. | Se usa para definir un nombre específico para su DRG. |
| compartimento_id | cadena | nulo | Compartimento | El compartimento preexistente ACID (si no se utilizará el compartimento predeterminado). Si este valor es nulo, se utilizará el compartimento predeterminado ACID. |
| definido_tags | mapa (cadena) | {} | Cualquier mapa de nombres y valores de etiquetas que sea aceptable para la API OCI. | Si se deben establecer alguna etiqueta definida en este recurso, hágalo con este atributo. |
| Freeform_tags | mapa (cadena) | {} | Cualquier mapa de nombres y valores de etiquetas que sea aceptable para la API OCI. | Si se deben establecer etiquetas de forma libre en este recurso, hágalo con este atributo. |
| ruta_table_id | cadena | nulo | El OCID de cualquier tabla de ruta OCI preexistente y válida. | Esto es opcional, pero en los casos en que se desea una asociación de tabla de ruta (con el DRG), es el lugar para establecer esta asociación. |
Ejemplo
module "oci_network" {
... /snip - shortened for brevity...
drg_options = {
display_name = "my_drg"
compartment_id = null
defined_tags = null
freeform_tags = null
route_table_id = null
}
}
El ejemplo anterior creará un SVCGW en el VCN con un nombre de pantalla de My_DRG , use el compartimento predeterminado ACID (no se muestra en el ejemplo anterior) y no asociará ninguna tabla de ruta con el DRG.
El atributo route_tables es un atributo de mapa opcional. Tenga en cuenta que si se usa este atributo, se deben especificar todas las teclas/valores (Terraform no permite las teclas/valores de mapa predeterminados u opcionales). La clave indica el nombre de visualización para la tabla de ruta, mientras que el valor es un mapa que define los atributos. El valor es un mapa que tiene las siguientes claves definidas (y valores predeterminados):
| Llave | Tipo de datos | Valor predeterminado | Valores válidos | Descripción |
|---|---|---|---|---|
| compartimento_id | cadena | nulo | Compartimento | El compartimento preexistente ACID (si no se utilizará el compartimento predeterminado). Si este valor es nulo, se utilizará el compartimento predeterminado ACID. |
| definido_tags | mapa (cadena) | {} | Cualquier mapa de nombres y valores de etiquetas que sea aceptable para la API OCI. | Si se deben establecer alguna etiqueta definida en este recurso, hágalo con este atributo. |
| Freeform_tags | mapa (cadena) | {} | Cualquier mapa de nombres y valores de etiquetas que sea aceptable para la API OCI. | Si se deben establecer etiquetas de forma libre en este recurso, hágalo con este atributo. |
| ruta_rules | Lista (objeto) - ver a continuación | {} | Vea abajo | Esto es opcional, pero es el lugar donde se configuran las reglas de ruta. |
route_rules
| Llave | Tipo de datos | Valor predeterminado | Valores válidos | Descripción |
|---|---|---|---|---|
| next_hop_id | cadena | ninguno | Ocid de un recurso de próxima salto | Aquí es donde se especifica el siguiente salto. |
| dst_type | cadena | ninguno | CIDR_BLOCK , servicio_cidr_block | Especifique qué tipo de destino se está dando en el atributo DST . |
| DST | cadena | ninguno | Un destino OCI válido (CIDR o Servicio CIDR). | Especifique el destino (red remota) que se utilizará para esta regla de ruta. |
Ejemplo
module "oci_network" {
... /snip - shortened for brevity...
route_tables = {
rt1 = {
display_name = "my_drg"
compartment_id = null
defined_tags = null
freeform_tags = null
route_rules = [
{
dst = "0.0.0.0/0"
dst_type = "CIDR_BLOCK"
next_hop_id = local.next_hop_ids["igw"]
}
]
}
}
}
El ejemplo anterior creará una tabla de ruta en el VCN con un nombre de pantalla de RT1 utilizando el compartimento predeterminado ACID (no se muestra en el ejemplo anterior), que contiene una regla de ruta (apuntando una ruta predeterminada a la puerta de enlace de Internet).
El atributo dhcp_options es un atributo de mapa opcional. Tenga en cuenta que si se usa este atributo, se deben especificar todas las teclas/valores (Terraform no permite las teclas/valores de mapa predeterminados u opcionales). La clave indica el nombre de visualización para la tabla de ruta, mientras que el valor es un mapa que define los atributos. El valor es un mapa que tiene las siguientes claves definidas (y valores predeterminados):
| Llave | Tipo de datos | Valor predeterminado | Valores válidos | Descripción |
|---|---|---|---|---|
| compartimento_id | cadena | nulo | Compartimento | El compartimento preexistente ACID (si no se utilizará el compartimento predeterminado). Si este valor es nulo, se utilizará el compartimento predeterminado ACID. |
| servidor_type | cadena | "Vcnlocalplusinternet" | VCNLOCALPLUSINTERNET , CustomDnsServer | Uno de los valores permitidos por la API OCI. |
| Search_domain_name | cadena | "$ {oci_core_vcn.this.dns_label} .oraclevcn.com" Si local.vcn_with_dns está configurado, nulo de lo contrario | Proporcione un nombre DNS válido para ser utilizado. | Esto se dará como el dominio a buscar. |
| reenviar_1_ip | cadena | nulo | Cualquier dirección IP válida | Esto se usa cuando se especifica un servidor DNS personalizado. |
| reenviar_2_ip | cadena | nulo | Cualquier dirección IP válida | Esto se usa cuando se especifica un servidor DNS personalizado. |
| reenviar_3_ip | cadena | nulo | Cualquier dirección IP válida | Esto se usa cuando se especifica un servidor DNS personalizado. |
Ejemplo
module "oci_network" {
... /snip - shortened for brevity...
dhcp_options = {
custom = {
compartment_id = null
server_type = local.dhcp_option_types["custom"]
forwarder_1_ip = "10.0.0.11"
forwarder_2_ip = "10.0.2.11"
forwarder_3_ip = null
search_domain_name = "test.local"
}
vcn = {
compartment_id = null
server_type = local.dhcp_option_types["vcn"]
forwarder_1_ip = null
forwarder_2_ip = null
forwarder_3_ip = null
search_domain_name = null
}
}
}
El ejemplo anterior creará dos opciones DHCP, una llamada personalizada , que tiene dos direcciones IP utilizadas y hace referencia al tipo de opción DHCP personalizado. La opción VCN DHCP es bastante básica, solo indica que debe usar VCNLocalPlusInternet y el nombre VCN .
Cada recurso discreto creado por el módulo se exportará, lo que permite el acceso a todos los atributos devueltos para el recurso.
| Recurso | Siempre devuelto? | Descripción |
|---|---|---|
| anuncios | Sí | La lista de anuncios disponibles para la región en la que está trabajando. |
| VCN | No* | El recurso VCN que ha sido creado por el módulo. |
| IGW | No* | El recurso IGW creado por el módulo (si se solicitó/creó). |
| natgw | No* | El recurso NATGW creado por el módulo (si se solicitó/creó). |
| svcgw | No* | El recurso SVCGW creado por el módulo (si se solicitó/creó). |
| svcgw_services | Sí | Los servicios disponibles que se pueden utilizar. |
| DRG | No* | Los recursos DRG y DRGattachment creados por el módulo (si se solicitó/creó). Tenga en cuenta que se puede acceder al DRG a través de DRG.DRG y DRGATTACHMENT a través de DRG.DRG_ATTACHMENT. |
| ruta_tables | No* | Las tabla (s) de ruta creadas/administradas por el módulo (si se solicitó/creó). Se devuelve un mapa, donde la clave es el nombre de la tabla de ruta y el valor es una lista completa de todos los atributos de recursos. |
| dhcp_options | No* | Las opciones DHCP creadas/administradas por el módulo (si se solicitó/creó). Se devuelve un mapa, donde la clave es el nombre de la opción DHCP y el valor es una lista completa de todos los atributos de recursos. |
*Solo se devolvió cuando se ha solicitado el recurso para ser creado.
Tenga en cuenta que aún puede hacer referencia a las salidas (incluso si no se devuelven) sin causar un error en Terraform (debe ser lo suficientemente inteligente como para saber no lanzar un error en estos casos).
vcn_options , igw_options , etc.), debe proporcionarlos todos. Los mapas no tienen una noción de un valor opcional (o predeterminado) para las claves dentro del mapa, lo que requiere que se pasen todas las teclas/valores (si se pasa una clave, todas las claves deben pasar).terraform destroy , luego terraform apply (en lugar de confiar en terraform apply para manejar las cosas correctamente):: Error: Cycle: module.oci_network.oci_core_nat_gateway.this[0], module.oci_network.output.natgw, module.oci_network.oci_core_service_gateway.this[0], module.oci_network.output.svcgw, module.oci_network.oci_core_service_gateway.this[0] (destroy), module.oci_network.oci_core_nat_gateway.this[0] (destroy), module.oci_network.oci_core_vcn.this[0] (destroy), module.oci_network.oci_core_drg_attachment.this[0], module.oci_network.oci_core_route_table.this[1] (destroy), module.oci_network.oci_core_drg_attachment.this[0] (destroy), module.oci_network.output.drg, local.next_hop_ids, module.oci_network.var.route_tables, module.oci_network.oci_core_route_table.this (prepare state), module.oci_network.oci_core_route_table.this[0] (destroy), module.oci_network.oci_core_internet_gateway.this[0] (destroy), module.oci_network.oci_core_internet_gateway.this[0], module.oci_network.output.igw
Consulte las notas de la versión para obtener información de notas de versión.
Este módulo ha sido desarrollado y probado ejecutando Terraform en MacOS Mojave versión 10.14.5
user-mac$ terraform --version
Terraform v0.12.3
+ provider.oci v3.31.0
Este proyecto es de código abierto. Oracle aprecia las contribuciones que hacen la comunidad de código abierto.
Copyright (c) 2020 Oracle y/o sus afiliados.
Licenciado bajo la Licencia de Permisivo Universal V 1.0 como se muestra en https://oss.oracle.com/licenses/uppl.
Vea la licencia para más detalles.