Criar uma Rede Virtual na Nuvem

Use o Terraform para criar uma VCN (rede virtual na nuvem) na sua tenancy do Oracle Cloud Infrastructure.

As principais tarefas incluem:

  • Configure uma VCN básica.
  • Defina e adicione os seguintes recursos à rede:
    • Listas de segurança
    • Sub-redes privadas e públicas
Um diagrama dos componentes necessários para criar uma rede virtual na nuvem do Oracle Cloud Infrastructure com o Terraform. Em um ambiente Linux local, o usuário cria uma rede virtual na nuvem com o Terraform. Essa rede tem uma sub-rede pública que pode ser acessada pela internet. A rede também tem uma sub-rede privada que se conecta à internet por meio de um gateway NAT e também se conecta de forma privada ao Oracle Services Network. O bloco CIDR da rede virtual na nuvem é 10.0.0.0/16, para a sub-rede pública é 10.0.0.0/24 e para a sub-rede privada é 10.0.1.0/24.

Para obter mais informações, consulte:

Antes de Começar

Requisitos

Para executar este tutorial com sucesso, você precisa ter o seguinte:

1. Preparar

Prepare seu ambiente para criar uma VCN. Além disso, colete todas as informações necessárias para concluir o tutorial.

Reunir Informações Necessárias

Copie as informações a seguir no seu bloco de notas.

Para ver as etapas para coletar essas informações, consulte a tabela a seguir.

Item Etapas para coletar o item
Nome do compartimento Consulte o tutorial concluído Criar um Compartimento.
ID do Compartimento
  1. Na barra de pesquisa da Console, digite <your-compartment-name>.
  2. Selecione <your-compartment-name> nos resultados da pesquisa.
  3. Selecione Copiar ao lado do OCID.
Região
  1. Na barra de navegação da Console, localize sua região.

    Exemplo: Leste dos EUA (Ashburn)

    Para obter mais informações, consulte Trabalhando em Regiões.

  2. Procure o identificador da sua região em Regiões e Domínios de Disponibilidade.

    Exemplo: us-ashburn-1.

Adicionar Política de Recursos

Se seu nome de usuário estiver no grupo Administrators, ignore esta seção. Caso contrário, peça ao administrador para adicionar a seguinte política à sua tenancy:

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

Com esse privilégio, você pode gerenciar todos os recursos em seu compartimento, dando a você direitos administrativos nesse compartimento.

Etapas para Adicionar a Política
  1. Na Console: Abra o menu de navegação e selecione Identidade e Segurança. Em Identidade, selecione Políticas.
  2. Selecione seu compartimento.
  3. Selecione Criar Política.
  4. Na página Criar Política, informe os seguintes valores:
    • Nome: manage-<your-compartment-name>-resources
    • Descrição: Allow users to list, create, update, and delete resources in <your-compartment-name>.
    • Compartimento: <your-tenancy>(root)
  5. Para o Criador de Políticas, informe os seguintes valores:
    • Casos de uso da política: Compartment Management
    • Modelos de política comum: Let compartment admins manage the compartment
    • Domínio de identidades: <identity-domain>
    • Grupos <a-group-your-username-belongs-to>
    • Local: <your-compartment-name>
  6. Selecione Criar.

Referência: Políticas Comuns

2. Criar uma Rede Básica

Crie scripts para autenticação, uma VCN (rede virtual na nuvem) básica definida por um módulo e saídas.

Adicionar Autenticação

Primeiro, configure um diretório para seus scripts do Terraform. Em seguida, copie o provedor e os scripts de versões do tutorial Configurar OCI Terraform para que sua conta do Oracle Cloud Infrastructure possa autenticar os scripts em execução nesse diretório.

  1. No diretório $HOME, crie um diretório chamado tf-vcn e passe para esse diretório.
    mkdir tf-vcn
    cd tf-vcn
  2. Copie o arquivo provider.tf para o diretório tf-vcn.
    cp ../tf-provider/provider.tf .
  3. Copie o arquivo versions.tf para o diretório tf-vcn.
    cp ../tf-provider/versions.tf .
Declarar uma Rede Básica

Decle uma rede básica com um módulo de VCN (rede virtual na nuvem) do Oracle Cloud Infrastructure, documentado no Registro do Terraform. Em seguida, execute os scripts e crie a rede. Nas próximas seções, adicione componentes para personalizar a rede.

Dica

Você pode salvar uma pilha no workflow da Console para criar uma VCN. A pilha contém uma configuração do Terraform que você pode usar como referência para a configuração da VCN. Consulte Criando uma Pilha com Base em uma Página de Criação de Recursos e Obtendo a Configuração do Terraform de uma Pilha.
  1. No Registro do Terraform, vá para o módulo VCN do OCI em vcn.
    Como navegar até esta página:
    1. Vá para o Registro do Terraform.
    2. Selecione Módulos.
    3. Na lista Provedor, selecione Oracle.
    4. Selecione oracle-terraform-modules/vcn.
  2. Para Versão, na lista, selecione Version 3.6.0.
    Este tutorial usa a versão 3.6.0. Uma versão diferente pode exigir entradas diferentes e criar recursos diferentes para sua VCN. Para revisar as entradas obrigatórias e opcionais, selecione Entradas.
  3. Crie um arquivo chamado vcn-module.tf.
  4. Copie o código de Instruções de Provisionamento para vcn-module.tf.

    Por exemplo:

    # 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. Atualize vcn-module.tf para especificar o compartimento (entrada obrigatória) e substituir algumas entradas opcionais.
    # 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"]
    }
    • Substitua <compartment-ocid> e <region-identifier> pelas informações de Reúna as Informações Necessárias.
    • Se você quiser um label de DNS personalizado, cancele o comentário da linha para vcn_dns_label e altere o valor de seu "vcnmodule" padrão.
      Observação

      O nome do domínio de DNS da sua rede virtual na nuvem é:
      <your-dns-label>.oraclevcn.com
  6. Salve o arquivo vcn-module.tf.
Explicação
Sobre Módulos

Um módulo é um contêiner para vários recursos que são usados juntos. Em vez de declarar recursos de infraestrutura um a um, comece com um módulo fornecido pelo Oracle Cloud Infrastructure. Por exemplo, comece com um módulo básico de VCN. Em seguida, adicione aos seus scripts os recursos que não estão incluídos no módulo.

Declarar um Bloco de Módulo
  • Inicie o bloco com a palavra-chave: module
  • Adicione um label para o nome informado do módulo:
    • Exemplo: "vcn"
  • Dentro do bloco de código:
    • Adicione informações de source e version da seção Instruções de Provisionamento da documentação do módulo.
    • Forneça um valor para as entradas obrigatórias. Eles não têm um valor padrão. Por exemplo:
        # Required Inputs
        compartment_id = "<compartment-ocid>"
    • Forneça valores para as entradas opcionais que você deseja substituir. Caso contrário, seus valores padrão serão usados. Por exemplo:
        # 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
    • Você pode comentar as entradas opcionais e mostrar seu valor padrão; portanto, mais tarde, ao revisar seu código, você saberá quais valores eram esperados. Por exemplo:
        # Using the following default values
        # vcn_dns_label = "vcnmodule"
        # vcn_cidrs = ["10.0.0.0/16"]
Adicionar Saídas

Adicione blocos de saída ao seu código para obter informações sobre sua rede virtual na nuvem depois de executar seus scripts.

  1. No diretório tf-vcn, crie um arquivo chamado outputs.tf.
  2. Adicione o código a seguir 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. Salve o arquivo outputs.tf.
  4. Liste todos os arquivos no diretório tf-vcn.
    ls

    Certifique-se de que os seguintes arquivos estejam presentes no mesmo diretório:

    • outputs.tf
    • provider.tf
    • vcn-module.tf
    • versions.tf
Explicação
Sobre Saídas do Módulo

As saídas do módulo são os atributos que você pode retornar para esse módulo.

Localizar Saídas para Módulo da VCN

Vá para a página vcn e selecione Saídas para exibir uma lista de atributos que podem ser gerados para o módulo da VCN. Revise a descrição dos atributos:

  • ig_route_id
    • OCID da tabela de roteamento que inclui o gateway de internet
  • nat_gateway_id
    • OCID do gateway NAT
  • nat_route_id
    • OCID da tabela de roteamento que inclui o gateway NAT
  • vcn_id
    • OCID da VCN
Declarar um Bloco de Saída do Módulo
    • Inicie o bloco com a palavra-chave: output.
    • Adicione um rótulo a ser impresso com os resultados de saída:
      • O label pode conter letras, dígitos, sublinhados (_) e hifens (-). O primeiro caractere não deve ser um dígito.
      • Exemplo: "vcn_id"
    • Obtenha os atributos das saídas do módulo em Módulos do Oracle Terraform.
    • Dentro do bloco de código, informe um valor para a saída do módulo com a expressão:
      • value = module.<module-name>.<output-attribute>
      • Exemplo: value = module.vcn.vcn_id
    • (Opcional): Dentro do bloco de código, adicione uma string de descrição. Por exemplo:
      description = "OCID of the internet-route table. This route table has an internet gateway to be used for public subnets"
      Observação

      Uma string de descrição não é impressa na saída; portanto, verifique se o label descreve o que ele produz.
    • Crie um bloco de saída para cada saída.
Criar a Rede Básica
  1. Crie sua rede básica com o Terraform:
    terraform init
    terraform plan
    terraform apply

    Quando for solicitada a confirmação, digite yes para que seus recursos sejam criados.

    Depois que a rede virtual é criada, as saídas definidas são exibidas no terminal de saída.
  2. (Opcional) Assista à criação na Console:
    • Abra o menu de navegação , selecione Rede e selecione Redes virtuais na nuvem.
    • Selecione seu compartimento.
    • Observe sua rede virtual na nuvem que aparece na lista de redes.

Parabéns! Você criou com sucesso uma rede virtual básica usando o Terraform, na sua conta do Oracle Cloud Infrastructure. Você tem uma rede virtual e pode ter concluído neste momento. As próximas seções mostram como personalizar uma rede criada com base em um módulo.

3. Personalizar a Rede

Crie scripts para listas de segurança, sub-redes privadas e sub-redes públicas, para criar a mesma rede virtual que no workflow de criação da Console.

Criar uma Lista de Segurança para a Sub-rede Privada
Declarar uma Lista de Segurança
  1. Crie um arquivo chamado private-security-list.tf.
  2. Adicione o código a seguir aprivate-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"
    }
    • Substitua <compartment-ocid> pelas informações de Reunir Informações Necessárias.
    • Aponte vcn_id para o OCID da VCN que você criou com o módulo:
      vcn_id = module.vcn.vcn_id
  3. Salve o arquivo private-security-list.tf.
Explicação

Em Referência de Argumento (oci_core_security_list), localize todos os argumentos necessários (bullets de primeiro nível):

  • compartment_id
  • vcn_id
Para navegar até este URL

Para navegar até Referência de Argumento (oci_core_security_list):

  1. Vá para Provedor do Oracle Cloud Infrastructure.
  2. Na caixa Filtro no canto superior esquerdo, digite security list.

    Os resultados são retornados para origens de dados e recursos.

  3. Em Básico, vá para Recursos e selecione oci_core_security_list.
  4. Selecione Referência de Argumento.

    A Referência de Argumento é aberta.

Declarar a lista de segurança:

  • Para compartment_id: use
    compartment_id = "<compartment-ocid>"
  • Em vcn_id, use o OCID da rede virtual básica. Para designar o OCID antes de conhecê-lo, designe uma saída do módulo como entrada para o recurso da lista de segurança:
    • Obtenha o atributo de saída do módulo na página Saídas do módulo.
    • Atribua um valor ao argumento do recurso com a expressão:
      • <resource argument> = module.<module-name>.<output-attribute>
      • Exemplo: vcn_id = module.vcn.vcn_id
      • oci_core_security_list resource e oracle-terraform-modules/vcn usam o mesmo nome de argumento para o OCID da rede virtual na nuvem: vcn_id.
      • O vcn_id mais à esquerda é o argumento (entrada obrigatória) do recurso.
      • O vcn_id mais à direita é o OCID da VCN que você cria com o módulo.
      • Não importa se você executou o script do módulo de VCN e criou a VCN ou não. Dessa forma, o Terraform designa o OCID da VCN à lista de segurança após a criação do módulo da VCN.
Adicionar uma Regra de Saída
Adicione uma regra de saída à sua lista de segurança com base nos seguintes valores:
  • Sem Monitoramento de Estado: Não
  • Destino: 0.0.0.0/0
  • Protocolo IP: Todos os Protocolos
Observação

O campo Permite na tabela é gerado automaticamente com base em outros campos. Você não adiciona um argumento para ele em seu script.
  1. Adicione o código a seguir a private-security-list.tf:
      egress_security_rules {
          stateless = false
          destination = "0.0.0.0/0"
          destination_type = "CIDR_BLOCK"
          protocol = "all" 
      }
  2. Salve o arquivo private-security-list.tf.
  3. Adicione o código a seguir 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. Salve o arquivo outputs.tf.
  5. Liste todos os arquivos no diretório tf-vcn.
    ls

    Certifique-se de que os seguintes arquivos estejam presentes no mesmo diretório:

    • outputs.tf
    • private-security-list.tf
    • provider.tf
    • vcn-module.tf
    • versions.tf
Explicação

Para private-security-list.tf, vá para Referência de Argumento (oci_core_security_list) e localize os seguintes argumentos:

  • egress_security_rules
    • sem informações de estado
    • destino
    • destination_type
    • protocolo
Para navegar até este URL

Para navegar até Referência de Argumento (oci_core_security_list):

  1. Vá para Provedor do Oracle Cloud Infrastructure.
  2. Na caixa Filtro no canto superior esquerdo, digite security list.

    Os resultados são retornados para origens de dados e recursos.

  3. Em Básico, vá para Recursos e selecione oci_core_security_list.
  4. Selecione Referência de Argumento.

    A Referência de Argumento é aberta.

Observação

Use o sinal de igualdade (=) para designar um valor a um argumento somente dentro do bloco.

  • Gravar:
    egress_security_rules {
    <arguments with assigned values>
    }
  • Não escreva:
    egress_security_rules = {
    <arguments with assigned values>
    }

Para atributos a serem usados como saídas em outputs.tf, selecione Referência de Atributo para abrir a Referência de Atributos (oci_core_security_list) e localizar os seguintes atributos:

  • display_name
  • id
Criar a Lista de Segurança
  1. Crie a lista de segurança para a sub-rede privada, com o Terraform:
    terraform init
    terraform plan
    terraform apply

    Quando for solicitada a confirmação, digite yes para que seus recursos sejam criados.

    Depois que a lista de segurança é criada, as saídas definidas são exibidas no terminal de saída.
  2. (Opcional) Observe a criação da rede na Console.
    1. Abra o menu de navegação , selecione Rede e selecione Redes virtuais na nuvem.
    2. Selecione sua VCN.
    3. Na página de detalhes, selecione Segurança ou Listas de Segurança, dependendo da opção exibida.
    4. Selecione a lista de segurança que foi criada para uma sub-rede privada (security-list-for-private-subnet).
    5. Selecione Regras de segurança ou Regras de Saída, dependendo da opção exibida.

Parabéns! Você criou com sucesso uma lista de segurança com uma regra de saída na sua rede virtual na nuvem. Na próxima seção, você adiciona regras de entrada a essa lista de segurança.

Criar Regras de Entrada para a Sub-rede Privada

Nesta seção, você adiciona as regras de entrada a seguir à lista de segurança criada na seção anterior.

Regras de Entrada

  • Regra 1:
    • Sem Monitoramento de Estado: Não
    • Origem: 10.0.0.0/16
    • Protocolo IP: TCP
    • Faixa de Portas de Origem: Tudo
    • Faixa de Porta de Destino: 22
  • Regra 2:
    • Sem Monitoramento de Estado: Não
    • Origem: 0.0.0.0/0
    • Protocolo IP: ICMP
    • Tipo e Código: 3, 4
  • Regra 3:
    • Sem Monitoramento de Estado: Não
    • Origem: 10.0.0.0/16
    • Protocolo IP: ICMP
    • Tipo e Código: 3
Observação

O campo Permite na tabela é gerado automaticamente com base em outros campos. Você não adiciona um argumento para ele em seu script.
  1. Adicione o código a seguir 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. Salve o arquivo private-security-list.tf.
  3. Execute seus scripts.
    terraform init
    terraform plan
    terraform apply

    Quando for solicitada a confirmação, digite yes para que seus recursos sejam criados.

  4. (Opcional) Assista à criação na Console:
    1. Abra o menu de navegação , selecione Rede e selecione Redes virtuais na nuvem.
    2. Selecione sua VCN.
    3. Na página de detalhes, selecione Segurança ou Listas de Segurança, dependendo da opção exibida.
    4. Selecione a lista de segurança que foi criada para uma sub-rede privada (security-list-for-private-subnet).
    5. Selecione Regras de segurança ou Regras de Entrada, dependendo da opção exibida.

Parabéns! Você adicionou com sucesso três regras de entrada à sua lista de segurança. Você usa essa lista de segurança para uma sub-rede privada. Você cria outra lista de segurança para uma sub-rede pública na próxima seção.

Explicação

Em Referência de Argumento (oci_core_security_list), localize os seguintes argumentos:

  • ingress_security_rules
    • sem informações de estado
    • origem
    • source_type
    • protocolo
    • icmp_options
      • tipo
      • código
    • tcp_options
      • mínimo
      • máximo
Para navegar até este URL

Para navegar até Referência de Argumento (oci_core_security_list):

  1. Vá para Provedor do Oracle Cloud Infrastructure.
  2. Na caixa Filtro no canto superior esquerdo, digite security list.

    Os resultados são retornados para origens de dados e recursos.

  3. Em Básico, vá para Recursos e selecione oci_core_security_list.
  4. Selecione Referência de Argumento.

    A Referência de Argumento é aberta.

Criar uma Lista de Segurança para a Sub-rede Pública
Nesta seção, você cria uma lista de segurança em sua rede com regras de saída e entrada. Depois, você designa esta lista de segurança a uma sub-rede pública.
  1. No diretório tf-vcn, copie o arquivo private-security-list.tf e chame-o de public-security-list.tf.
    cp private-security-list.tf public-security-list.tf
  2. Abra o arquivo public-security-list.tf e atualize o seguinte:
    • nome local do bloco de recursos: de "private-security-list" a "public-security-list"
    • nome da lista de segurança: 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. Use a mesma regra de saída da rede privada.

    Regra de Saída

    • Sem Monitoramento de Estado: Não
    • Destino: 0.0.0.0/0
    • Protocolo IP: Todos os Protocolos
      
      egress_security_rules {
          stateless = false
          destination = "0.0.0.0/0"
          destination_type = "CIDR_BLOCK"
          protocol = "all" 
      }
  4. Atualize a regra TCP para a primeira regra de entrada da seguinte forma:
    • de source = "10.0.0.0/16" para source = "0.0.0.0/0"

    Regras de Entrada

    • Regra 1:
      • Sem Monitoramento de Estado: Não
      • Origem: 0.0.0.0/0
      • Protocolo IP: TCP
      • Faixa de Portas de Origem: Tudo
      • Faixa de Porta de Destino: 22
    • Regra 2:
      • Sem Monitoramento de Estado: Não
      • Origem: 0.0.0.0/0
      • Protocolo IP: ICMP
      • Tipo e Código: 3, 4
    • Regra 3:
      • Sem Monitoramento de Estado: Não
      • Origem: 10.0.0.0/16
      • Protocolo IP: ICMP
      • Tipo e 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. Salve o arquivo public-security-list.tf.
  6. Adicione o código a seguir 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. Salve o arquivo outputs.tf.
  8. Liste todos os arquivos no diretório tf-vcn.
    ls

    Certifique-se de que os seguintes arquivos estejam presentes no mesmo diretório:

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

    Quando for solicitada a confirmação, informe yes para a lista de segurança a ser criada.

  10. (Opcional) Assista à criação na Console.
    1. Abra o menu de navegação , selecione Rede e selecione Redes virtuais na nuvem.
    2. Selecione sua VCN.
    3. Na página de detalhes, selecione Segurança ou Listas de Segurança, dependendo da opção exibida.
    4. Selecione a lista de segurança que foi criada para uma sub-rede pública (security-list-for-public-subnet).
    5. Selecione Regras de segurança ou Regras de Entrada, dependendo da opção exibida.
    6. Selecione Regras de segurança ou Regras de Saída, dependendo da opção exibida.

Parabéns! Você criou com sucesso outra lista de segurança na sua rede virtual na nuvem.

Criar uma Sub-rede Privada

Nesta seção, você cria uma sub-rede privada na sua rede e associa a lista de segurança privada a essa sub-rede. Você também adiciona a essa sub-rede a tabela de roteamento NAT feita com o módulo de VCN. A tabela de roteamento NAT tem um gateway NAT e um gateway de serviço e foi projetada para sub-redes privadas. Consulte o primeiro diagrama no tutorial.

  1. No diretório tf-vcn, crie um arquivo chamado private-subnet.tf e adicione o seguinte código a ele:
    # 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. Salve o arquivo private-subnet.tf.
    Observação

    Certifique-se de que private-subnet.tf esteja no diretório tf-vcn.
  3. Adicione o código a seguir 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. Salve o arquivo outputs.tf.
    Certifique-se de que todos os arquivos *.tf estejam no mesmo diretório. O Terraform processa todos os arquivos em um diretório na ordem correta, com base em seu relacionamento.
  5. Execute seus scripts.
    terraform init
    terraform plan
    terraform apply

    Quando for solicitada a confirmação, informe yes para a sub-rede privada a ser criada.

  6. (Opcional) Assista à criação na Console:
    1. Abra o menu de navegação , selecione Rede e selecione Redes virtuais na nuvem.
    2. Selecione sua VCN.
    3. Na página de detalhes, selecione Sub-redes.
    4. Selecione a sub-rede privada (private-subnet).
    5. Na página de detalhes, localize a tabela de roteamento: nat-route.
    6. Selecione Segurança ou Listas de Segurança (dependendo do que você vir) e localize a lista de segurança (security-list-for-private-subnet).

Parabéns! Você criou com sucesso uma sub-rede privada na sua rede virtual na nuvem.

Explicação

Em Referência de Argumento (oci_core_subnet), localize todos os argumentos necessários:

  • compartment_id
  • vcn_id
  • cidr_block
Para navegar até este URL

Para navegar até Referência de Argumento (oci_core_subnet):

  1. Vá para Provedor do Oracle Cloud Infrastructure.
  2. Na caixa Filtro no canto superior esquerdo, digite subnet.

    Os resultados são retornados para origens de dados e recursos.

  3. Em Básico, vá para Recursos e selecione oci_core_subnet.
  4. Selecione Referência de Argumento.

    A Referência de Argumento é aberta.

  • Substitua os seguintes argumentos opcionais:
    • route_table_id
    • security_list_ids
    • display_name
  • Atribua valores aos seguintes argumentos:
    • cidr_block
      • Consulte o primeiro diagrama no tutorial.
    • route_table_id
      • O OCID de uma tabela de roteamento.
      • Para ver os gateways desta tabela de roteamento, faça referência à sub-rede privada no primeiro diagrama do tutorial:
        • Gateway NAT
        • Gateway de Serviço
      • Designe à tabela de roteamento o gateway NAT que você criou com o módulo de VCN. Esta tabela de roteamento também contém um gateway de serviço.
        Observação

        • Use module.vcn.nat_route_id.
        • Não use module.vcn.nat_gateway_id, porque ele retorna o OCID do gateway e não a tabela de roteamento.
      • (Opcional): Na Console, revise as regras da tabela de roteamento e compare os valores de Tipo de Destino com o diagrama do tutorial (Gateway de Serviço, Gateway NAT).
        1. Na página de detalhes da sua VCN, selecione Roteamento ou Tabelas de Roteamento (dependendo do que você vir).
        2. Selecione nat-route.
        3. Selecione Regras de Roteamento.
    • security_list_ids
      • Retorna uma lista de strings, cada uma sendo um OCID de uma lista de segurança.
      • Obtenha o OCID da lista de segurança privada.
      • Use colchetes para este argumento. Por exemplo:
        security_list_ids = ["sec-list-1","sec-list-2","sec-list-3"]
      • Para designar uma lista de segurança, coloque-a dentro dos colchetes sem vírgulas.
      • Para fazer referência à lista de segurança criada com outro recurso, use seu nome local. Por exemplo:
        security_list_ids = [oci_core_security_list.<local-name>.id]
        security_list_ids = [oci_core_security_list.private-security-list.id]
Criar uma Sub-rede Pública

Nesta seção, você cria uma sub-rede pública na sua rede e associa a lista de segurança pública a essa sub-rede. Você também adiciona a essa sub-rede a tabela de roteamento da internet feita com o módulo de VCN. A tabela de roteamento da internet tem um gateway de internet e foi projetada para sub-redes públicas. Consulte o primeiro diagrama no tutorial.

  1. No diretório tf-vcn, crie um arquivo chamado public-subnet.tf e adicione a ele o seguinte 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. Salve o arquivo public-subnet.tf.
    Observação

    Certifique-se de que public-subnet.tf esteja no diretório tf-vcn.
  3. Adicione o código a seguir 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. Salve o arquivo outputs.tf.
    Certifique-se de que todos os arquivos *.tf estejam no mesmo diretório. O Terraform processa todos os arquivos em um diretório na ordem correta, com base em seu relacionamento.
  5. Execute seus scripts.
    terraform init
    terraform plan
    terraform apply

    Quando for solicitada a confirmação, informe yes para a sub-rede pública a ser criada.

  6. (Opcional) Assista à criação na Console:
    1. Abra o menu de navegação , selecione Rede e selecione Redes virtuais na nuvem.
    2. Selecione sua VCN.
    3. Na página de detalhes, selecione Sub-redes.
    4. Selecione a sub-rede pública (public-subnet).
    5. Na página de detalhes, localize a tabela de roteamento: internet-route.
    6. Selecione Segurança ou Listas de Segurança (dependendo do que você vir) e localize a lista de segurança (security-list-for-public-subnet).

Parabéns! Você criou com sucesso uma sub-rede pública na sua rede virtual na nuvem.

Explicação

Em Referência de Argumento (oci_core_subnet), localize todos os argumentos necessários:

  • compartment_id
  • vcn_id
  • cidr_block
Para navegar até este URL

Para navegar até Referência de Argumento (oci_core_subnet):

  1. Vá para Provedor do Oracle Cloud Infrastructure.
  2. Na caixa Filtro no canto superior esquerdo, digite subnet.

    Os resultados são retornados para origens de dados e recursos.

  3. Em Básico, vá para Recursos e selecione oci_core_subnet.
  4. Selecione Referência de Argumento.

    A Referência de Argumento é aberta.

  • Substitua os seguintes argumentos opcionais:
    • route_table_id
    • security_list_ids
    • display_name
  • Atribua valores aos seguintes argumentos:
    • cidr_block
      • Consulte o primeiro diagrama no tutorial.
    • route_table_id
      • O OCID de uma tabela de roteamento.
      • Para ver o gateway desta tabela de roteamento, faça referência à sub-rede pública no primeiro diagrama do tutorial:
        • Gateway de Internet
      • Designe à tabela de roteamento um gateway de internet que você criou com o módulo de VCN.
        Observação

        • Use module.vcn.ig_route_id.
      • (Opcional): Na Console, revise as regras da tabela de roteamento e compare o valor do Tipo de Destino com o diagrama do tutorial (Gateway de Internet).
        1. Na página de detalhes da sua VCN, selecione Roteamento ou Tabelas de Roteamento (dependendo do que você vir).
        2. Selecione internet-route.
        3. Selecione Regras de Roteamento.
    • security_list_ids
      • Retorna uma lista de strings, cada uma sendo um OCID de uma lista de segurança.
      • Obtenha o OCID da lista de segurança pública.
      • Use colchetes para este argumento. Por exemplo:
        security_list_ids = ["sec-list-1","sec-list-2","sec-list-3"]
      • Para designar uma lista de segurança, coloque-a dentro dos colchetes sem vírgulas.
      • Para fazer referência à lista de segurança criada com outro recurso, use seu nome local. Por exemplo:
        security_list_ids = [oci_core_security_list.<local-name>.id]
        security_list_ids = [oci_core_security_list.public-security-list.id]

4. Recriar a VCN (Opcional)

Destrua sua VCN. Em seguida, execute novamente seus scripts para criar outra VCN.

Executar os Scripts

Nas seções anteriores, para verificar seu trabalho, você executou seus scripts toda vez que declarou um recurso. Agora, você os executa em conjunto. Você observa que os scripts são declarativos e o Terraform resolve a ordem na qual ele cria os objetos.

  1. Destrua sua VCN com o Terraform:
    terraform destroy

    Quando for solicitada a confirmação, informe yes para que seu recurso seja destruído.

  2. (Opcional) Observe o encerramento na Console:
    • Abra o menu de navegação , selecione Rede e selecione Redes virtuais na nuvem.
    • Selecione seu compartimento.
    • Observe que a sua VCN desaparece da lista.
  3. Crie uma nova rede virtual na nuvem com o Terraform:
    terraform init
    terraform plan
    terraform apply

    Quando for solicitada a confirmação, digite yes para que seus recursos sejam criados.

    Depois que a rede é criada, as saídas definidas são exibidas no terminal de saída.

    Observação

    Esta nova rede virtual na nuvem tem novos OCIDs para seus recursos. Esta rede não é a mesma que você destruiu.
  4. (Opcional) Assista à criação na Console:
    • Abra o menu de navegação , selecione Rede e selecione Redes virtuais na nuvem.
    • Selecione seu compartimento.
    • Observe sua rede virtual na nuvem (nova) recriada que aparece na lista de redes.
  5. Exiba as saídas novamente.
    terraform output

Parabéns! Você recriou com sucesso uma rede virtual na nuvem e seus componentes usando o Terraform, na sua conta do Oracle Cloud Infrastructure.

Observação

Essa rede virtual na nuvem tem os mesmos componentes de uma rede virtual na nuvem que é criada usando o Assistente Iniciar VCN na Console, com a opção VCN com Conectividade de Internet. Você pode seguir as etapas do tutorial para configurar uma rede e depois comparar com essa rede.

Referências: