Este módulo fornece o bootstrapping inicial necessário para provisionar uma nova rede de nuvem virtual (VCN) e outros serviços opcionais na Oracle Cloud Infrastructure (OCI).
Um VCN é a base principal de uma rede na OCI. Este módulo fornece a capacidade de criar os seguintes recursos:
| Recurso | Criado por padrão? |
|---|---|
| Vcn | Não (opcional) |
| Gateway da Internet | Não (opcional) |
| Nat Gateway | Não (opcional) |
| Gateway de serviço | Não (opcional) |
| Gateway de roteamento dinâmico | Não (opcional) |
| Bastião | Não (opcional) |
Ao usar este módulo, será criada uma rede básica em nuvem, incluindo os caminhos básicos de comunicação fundamental (para a maioria dos casos de uso, embora não todos). Para situações em que são necessárias as situações em que a VPN-Connect, o FastConnect ou o VCN Peering, esses serviços precisarão ser construídos sobre o VCN implantado por este módulo.
Vários exemplos totalmente funcionais foram fornecidos no diretório examples . Consulte o README.md em cada diretório de exemplo para obter instruções específicas para cada exemplo.
Para começar rapidamente, para a implantação mínima, você pode usar o seguinte exemplo:
module "oci_network" {
source = "../../"
#source = "oracle-terraform-modules/default-vcn/oci"
default_compartment_id = "${var.compartment_id}"
}
Isso implantará um VCN usando os padrões do módulo. Revise este ReadMe para obter uma descrição detalhada desses parâmetros.
Este módulo de serviço principal é normalmente usado na implantação, sem mais acesso necessário; Pode ser necessário acessar um bastião, se for solicitado que fosse criado como parte da solução.
Você pode continuar gerenciando o ambiente implantado usando o Terraform (Best), a OCI CLI, o OCI Console (UI), diretamente através da API, etc.
| Atributo | Tipo de dados | Obrigatório | Valor padrão | Valores válidos | Descrição |
|---|---|---|---|---|---|
| default_compartment_id | corda | sim | nenhum | string do compartimento OCID | Este é o OCID padrão que será usado ao criar objetos (a menos que seja substituído para qualquer objeto específico). Isso precisa ser o OCID de um compartimento pré-existente (não criará o compartimento). |
| vcn_options | mapa | não | Veja abaixo | Veja abaixo | Os parâmetros opcionais que podem ser usados para personalizar o VCN. |
| existing_vcn_id | corda | não | nulo | O OCID de qualquer VCN pré-existente | Se um novo VCN não for criado, o OCID de um VCN existente deve ser fornecido aqui. Todos os recursos criados farão parte deste VCN pré-existente (se um VCN não for fornecido). |
Observe que, à medida que o VCN é criado, os recursos padrão (tabela de rota, lista de segurança e opções de DHCP) são deixados como is (não modificados de forma alguma). Muitas vezes, esses recursos não são usados. Consulte a documentação sobre os recursos padrão, componentes padrão que acompanham seu VCN e listas de segurança padrão para obter mais informações.
vcn_options
O atributo vcn_options é um atributo de mapa opcional. Observe que, se esse atributo for usado, todas as chaves/valores devem ser especificadas (o Terraform não permite as chaves/valores do mapa padrão ou opcional). Possui as seguintes chaves definidas (e valores padrão):
| Chave | Tipo de dados | Valor padrão | Valores válidos | Descrição |
|---|---|---|---|---|
| nome de exibição | corda | "VCN" | Qualquer nome aceitável para a API OCI. | Usado para definir um nome específico para o seu VCN. |
| Compartment_id | corda | nulo | Compartimento OCID | OCID pré-existente do compartimento (se o compartimento padrão não for usado). Se esse valor for nulo, o compartimento padrão OCID será usado. |
| definido_tags | mapa (string) | {} | Qualquer mapa de nomes e valores de tags que seja aceitável para a API OCI. | Se qualquer tags definida deve ser definida nesse recurso, faça -o com este atributo. |
| Freeform_tags | mapa (string) | {} | Qualquer mapa de nomes e valores de tags que seja aceitável para a API OCI. | Se houver tags de forma livre definida neste recurso, faça -o com este atributo. |
| Cidr | corda | "10.0.0.0/16" | IPv4 Cidr | Especifique o IPv4 CIDR a ser usado para o VCN. |
| enable_dns | bool | verdadeiro | verdadeiro/falso | Se o DNS deve ou não ser ativado no VCN. |
| dns_label | corda | "VCN" | Nome DNS válido. | Especifique o rótulo DNS a ser usado para o VCN. Se esse valor for nulo, o DNS será desativado para o VCN. |
Exemplo
O exemplo a seguir cria VCN com um CIDR de 10.0.0.0/24, nome do teste do módulo , rótulo DNS do testVCN e use o compartimento padrão OCID (não mostrado no exemplo acima).
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 dados | Obrigatório | Valor padrão | Valores válidos | Descrição |
|---|---|---|---|---|---|
| create_igw | bool | não | falso | verdadeiro/falso | Se um IGW deve ou não ser criado no VCN. |
| igw_options | mapa | não | Veja abaixo | Veja abaixo | Os parâmetros opcionais que podem ser usados para personalizar o IGW. |
igw_options
O atributo igw_options é um atributo de mapa opcional. Observe que, se esse atributo for usado, todas as chaves/valores devem ser especificadas (o Terraform não permite as chaves/valores do mapa padrão ou opcional). Possui as seguintes chaves definidas (e valores padrão):
| Chave | Tipo de dados | Valor padrão | Valores válidos | Descrição |
|---|---|---|---|---|
| nome de exibição | corda | "IGW" | Qualquer nome aceitável para a API OCI. | Usado para definir um nome específico para o seu IGW. |
| Compartment_id | corda | nulo | Compartimento OCID | OCID pré-existente do compartimento (se o compartimento padrão não for usado). Se esse valor for nulo, o compartimento padrão OCID será usado. |
| definido_tags | mapa (string) | {} | Qualquer mapa de nomes e valores de tags que seja aceitável para a API OCI. | Se qualquer tags definida deve ser definida nesse recurso, faça -o com este atributo. |
| Freeform_tags | mapa (string) | {} | Qualquer mapa de nomes e valores de tags que seja aceitável para a API OCI. | Se houver tags de forma livre definida neste recurso, faça -o com este atributo. |
| habilitado | bool | verdadeiro | verdadeiro/falso | Se o IGW deve ou não ser ativado. |
Exemplo
module "oci_network" {
... /snip - shortened for brevity...
igw_options = {
display_name = "my_igw"
compartment_id = null
defined_tags = null
freeform_tags = null
enabled = false
}
}
O exemplo acima criará um IGW (ativado) no VCN com um nome de exibição de my_igw e usará o OCID do compartimento padrão (não mostrado no exemplo acima).
| Atributo | Tipo de dados | Obrigatório | Valor padrão | Valores válidos | Descrição |
|---|---|---|---|---|---|
| create_natgw | bool | não | falso | verdadeiro/falso | Se um NATGW deve ou não ser criado no VCN. |
| natgw_options | mapa | não | Veja abaixo | Veja abaixo | Os parâmetros opcionais que podem ser usados para personalizar o NATGW. |
natgw_options
O atributo natgw_options é um atributo de mapa opcional. Observe que, se esse atributo for usado, todas as chaves/valores devem ser especificadas (o Terraform não permite as chaves/valores do mapa padrão ou opcional). Possui as seguintes chaves definidas (e valores padrão):
| Chave | Tipo de dados | Valor padrão | Valores válidos | Descrição |
|---|---|---|---|---|
| nome de exibição | corda | "Natgw" | Qualquer nome aceitável para a API OCI. | Usado para definir um nome específico para o seu IGW. |
| Compartment_id | corda | nulo | Compartimento OCID | OCID pré-existente do compartimento (se o compartimento padrão não for usado). Se esse valor for nulo, o compartimento padrão OCID será usado. |
| definido_tags | mapa (string) | {} | Qualquer mapa de nomes e valores de tags que seja aceitável para a API OCI. | Se qualquer tags definida deve ser definida nesse recurso, faça -o com este atributo. |
| Freeform_tags | mapa (string) | {} | Qualquer mapa de nomes e valores de tags que seja aceitável para a API OCI. | Se houver tags de forma livre definida neste recurso, faça -o com este atributo. |
| block_traffic | bool | falso | verdadeiro/falso | Se o NATGW deve bloquear ou não o tráfego. |
Exemplo
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
}
}
O exemplo acima criará um NATGW no VCN com um nome de exibição do my_natgw , ele não bloqueará o tráfego e usará o OCID do compartimento padrão (não mostrado no exemplo acima).
| Atributo | Tipo de dados | Obrigatório | Valor padrão | Valores válidos | Descrição |
|---|---|---|---|---|---|
| create_svcgw | bool | não | falso | verdadeiro/falso | Se um SVCGW deve ou não ser criado no VCN. |
| svcgw_options | mapa | não | Veja abaixo | Veja abaixo | Os parâmetros opcionais que podem ser usados para personalizar o SVCGW. |
svcgw_options
O atributo svcgw_options é um atributo de mapa opcional. Observe que, se esse atributo for usado, todas as chaves/valores devem ser especificadas (o Terraform não permite as chaves/valores do mapa padrão ou opcional). Possui as seguintes chaves definidas (e valores padrão):
| Chave | Tipo de dados | Valor padrão | Valores válidos | Descrição |
|---|---|---|---|---|
| nome de exibição | corda | "SVCGW" | Qualquer nome aceitável para a API OCI. | Usado para definir um nome específico para o seu SVCGW. |
| Compartment_id | corda | nulo | Compartimento OCID | OCID pré-existente do compartimento (se o compartimento padrão não for usado). Se esse valor for nulo, o compartimento padrão OCID será usado. |
| definido_tags | mapa (string) | {} | Qualquer mapa de nomes e valores de tags que seja aceitável para a API OCI. | Se qualquer tags definida deve ser definida nesse recurso, faça -o com este atributo. |
| Freeform_tags | mapa (string) | {} | Qualquer mapa de nomes e valores de tags que seja aceitável para a API OCI. | Se houver tags de forma livre definida neste recurso, faça -o com este atributo. |
| serviços | Lista (string) | nulo | O (s) OCID (s) de qualquer serviço de gateway de serviço OCI válido. | Forneça o serviço que deve ser permitido pelo Gateway de Serviço. Use a saída do módulo svcgw_services para uma lista de serviços na região (veja abaixo um exemplo disso). |
Exemplo
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
]
}
}
O exemplo acima criará um SVCGW no VCN com um nome de exibição de my_svcgw , use o compartimento padrão OCID (não mostrado no exemplo acima) e usará o primeiro serviço na lista de serviços disponíveis na região.
| Atributo | Tipo de dados | Obrigatório | Valor padrão | Valores válidos | Descrição |
|---|---|---|---|---|---|
| create_drg | bool | não | falso | verdadeiro/falso | Se um DRG deve ou não ser criado no VCN. |
| drg_options | mapa | não | Veja abaixo | Veja abaixo | Os parâmetros opcionais que podem ser usados para personalizar o DRG. |
drg_options
O atributo drg_options é um atributo de mapa opcional. Observe que, se esse atributo for usado, todas as chaves/valores devem ser especificadas (o Terraform não permite as chaves/valores do mapa padrão ou opcional). Possui as seguintes chaves definidas (e valores padrão):
| Chave | Tipo de dados | Valor padrão | Valores válidos | Descrição |
|---|---|---|---|---|
| nome de exibição | corda | "DRG" | Qualquer nome aceitável para a API OCI. | Usado para definir um nome específico para o seu DRG. |
| Compartment_id | corda | nulo | Compartimento OCID | OCID pré-existente do compartimento (se o compartimento padrão não for usado). Se esse valor for nulo, o compartimento padrão OCID será usado. |
| definido_tags | mapa (string) | {} | Qualquer mapa de nomes e valores de tags que seja aceitável para a API OCI. | Se qualquer tags definida deve ser definida nesse recurso, faça -o com este atributo. |
| Freeform_tags | mapa (string) | {} | Qualquer mapa de nomes e valores de tags que seja aceitável para a API OCI. | Se houver tags de forma livre definida neste recurso, faça -o com este atributo. |
| route_table_id | corda | nulo | O OCID de qualquer tabela de rota OCI válida e pré-existente. | Isso é opcional, mas nos casos em que uma associação de tabela de rota é desejada (com o DRG), é o lugar para estabelecer essa associação. |
Exemplo
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
}
}
O exemplo acima criará um SVCGW no VCN com um nome de exibição de my_drg , use o compartimento padrão OCID (não mostrado no exemplo acima) e não associará nenhuma tabela de rota ao DRG.
O atributo route_tables é um atributo de mapa opcional. Observe que, se esse atributo for usado, todas as chaves/valores devem ser especificadas (o Terraform não permite as chaves/valores do mapa padrão ou opcional). A chave indica o nome de exibição para a tabela de rota, enquanto o valor é um mapa que define os atributos. O valor é um mapa que possui as seguintes teclas definidas (e valores padrão):
| Chave | Tipo de dados | Valor padrão | Valores válidos | Descrição |
|---|---|---|---|---|
| Compartment_id | corda | nulo | Compartimento OCID | OCID pré-existente do compartimento (se o compartimento padrão não for usado). Se esse valor for nulo, o compartimento padrão OCID será usado. |
| definido_tags | mapa (string) | {} | Qualquer mapa de nomes e valores de tags que seja aceitável para a API OCI. | Se qualquer tags definida deve ser definida nesse recurso, faça -o com este atributo. |
| Freeform_tags | mapa (string) | {} | Qualquer mapa de nomes e valores de tags que seja aceitável para a API OCI. | Se houver tags de forma livre definida neste recurso, faça -o com este atributo. |
| rota_rules | Lista (objeto) - Veja abaixo | {} | Veja abaixo | Isso é opcional, mas é o local onde as regras da rota são configuradas. |
route_rules
| Chave | Tipo de dados | Valor padrão | Valores válidos | Descrição |
|---|---|---|---|---|
| Next_hop_id | corda | nenhum | OCID de um recurso de Next Hop | É aqui que o próximo salto é especificado. |
| dst_type | corda | nenhum | Cidr_block , Service_cidr_block | Especifique que tipo de destino está sendo fornecido no atributo DST . |
| dst | corda | nenhum | Um destino OCI válido (CIDR ou serviço CIDR). | Especifique o destino (rede remota) a ser usada para esta regra de rota. |
Exemplo
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"]
}
]
}
}
}
O exemplo acima criará uma tabela de rota no VCN com um nome de exibição de RT1 usando o OCID padrão do compartimento (não mostrado no exemplo acima), contendo uma regra de rota (apontando uma rota padrão para o gateway da Internet).
O atributo dhcp_options é um atributo de mapa opcional. Observe que, se esse atributo for usado, todas as chaves/valores devem ser especificadas (o Terraform não permite as chaves/valores do mapa padrão ou opcional). A chave indica o nome de exibição para a tabela de rota, enquanto o valor é um mapa que define os atributos. O valor é um mapa que possui as seguintes teclas definidas (e valores padrão):
| Chave | Tipo de dados | Valor padrão | Valores válidos | Descrição |
|---|---|---|---|---|
| Compartment_id | corda | nulo | Compartimento OCID | OCID pré-existente do compartimento (se o compartimento padrão não for usado). Se esse valor for nulo, o compartimento padrão OCID será usado. |
| Server_type | corda | "Vcnlocalplusinternet" | VcnlocalplusInternet , customDNSServer | Um dos valores permitidos pela API OCI. |
| Search_Domain_Name | corda | "$ {oci_core_vcn.this.dns_label} .oraclevcn.com" se local.vcn_with_dns for definido, nulo caso contrário | Forneça um nome DNS válido a ser usado. | Isso será dado como domínio a ser pesquisado. |
| Forwarder_1_ip | corda | nulo | Qualquer endereço IP válido | Isso é usado quando um servidor DNS personalizado é especificado. |
| Forwarder_2_ip | corda | nulo | Qualquer endereço IP válido | Isso é usado quando um servidor DNS personalizado é especificado. |
| Forwarder_3_ip | corda | nulo | Qualquer endereço IP válido | Isso é usado quando um servidor DNS personalizado é especificado. |
Exemplo
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
}
}
}
O exemplo acima criará duas opções DHCP, uma denominada Custom , que possui dois endereços IP usados e faz referência ao tipo de opção DHCP personalizado. A opção VCN DHCP é bastante básica, apenas indicando que deve usar o vcnlocalplusinternet e o nome VCN .
Cada recurso discreto criado pelo módulo será exportado, permitindo acesso a todos os atributos retornados para o recurso.
| Recurso | Sempre devolvido? | Descrição |
|---|---|---|
| anúncios | sim | A lista de anúncios disponíveis para a região em que você está trabalhando. |
| vcn | não* | O recurso VCN que foi criado pelo módulo. |
| IGW | não* | O recurso IGW criado pelo módulo (se foi solicitado/criado). |
| Natgw | não* | O recurso NATGW criado pelo módulo (se foi solicitado/criado). |
| svcgw | não* | O recurso SVCGW criado pelo módulo (se foi solicitado/criado). |
| svcgw_services | sim | Os serviços disponíveis que podem ser usados. |
| drg | não* | Os recursos DRG e DRGattachment criados pelo módulo (se foi solicitado/criado). Observe que o DRG é acessível via drg.drg e drgattachment via drg.drg_attachment. |
| route_tables | não* | A (s) tabela (s) de rota (s) criada/gerenciada pelo módulo (se foi solicitada/criada). Um mapa é retornado, onde a chave é o nome da tabela de rota e o valor é uma listagem completa de todos os atributos do recurso. |
| dhcp_options | não* | As opções DHCP criadas/gerenciadas pelo módulo (se foi solicitado/criado). Um mapa é retornado, onde a chave é o nome da opção DHCP e o valor é uma listagem completa de todos os atributos do recurso. |
*Somente retornou quando o recurso for criado para ser criado.
Observe que você ainda pode fazer referência às saídas (mesmo que não sejam devolvidas) sem causar um erro no Terraform (deve ser inteligente o suficiente para saber não causar um erro nesses casos).
vcn_options , igw_options , etc), você deve fornecer todos eles. Os mapas não têm uma noção de um valor opcional (ou padrão padrão) para as chaves dentro do mapa, exigindo que todas as chaves/valores sejam passadas (se uma tecla for passada, todas as chaves devem ser passadas).terraform destroy , terraform apply (em vez de confiar no terraform apply para lidar com as coisas corretamente): 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 Notas de lançamento para obter informações sobre notas de lançamento.
Este módulo foi desenvolvido e testado executando o Terraform no MacOS Mojave versão 10.14.5
user-mac$ terraform --version
Terraform v0.12.3
+ provider.oci v3.31.0
Este projeto é de código aberto. O Oracle aprecia quaisquer contribuições feitas pela comunidade de código aberto.
Copyright (c) 2020 Oracle e/ou suas afiliadas.
Licenciado sob a licença permissiva universal v 1.0, como mostrado em https://oss.oracle.com/license/up.
Consulte a licença para obter mais detalhes.