Configurar os Módulos Terraform

Os recursos de rede necessários para hospedar aplicativos SaaS de tenant único no Oracle Cloud são definidos nos módulos Terraform. Faça download dos módulos e defina as variáveis necessárias.

Fazer Download do Código do Terraform

O código do Terraform para esta solução está disponível no GitHub.

  1. No painel de navegação à esquerda, clique em Fazer Download do Código.
  2. Clique em Repositório Git.
  3. Clonar ou fazer download do repositório para seu computador local.

Sobre o Código Terraform

O código do Terraform para esta solução é organizado em vários módulos, cada um contendo os recursos para um componente específico da topologia de destino.

O código do Terraform contém os seguintes diretórios e arquivos no nível superior:
  • chef: Este diretório contém as receitas de Chef para instalar e configurar os gateways de roteamento.
  • examples: Este diretório contém o código Terraform necessário para implementar esta solução. O código nesse diretório usa os módulos definidos no diretório modules.
  • LICENSE.txt: Este arquivo contém os termos e condições da licença para o código de amostra.
  • modules: Este diretório contém os módulos Terraform que fornecem os blocos de construção da solução.
  • README.md: Este arquivo fornece uma breve descrição do código e instruções básicas para o uso do código.
  • test: Esse diretório contém scripts de teste que você pode usar para verificar a implantação.
O diretório examples/full-deployment contém o código que chama os módulos Terraform necessários para esta solução. Ele contém os seguintes subdiretórios e arquivos:
examples/full-deployment
├── common
│   ├── compartments
│   └── configuration
├── Makefile
├── management
│   ├── access
│   ├── network
│   ├── server_attachment
│   └── servers
├── peering
│   ├── network
│   └── routing
├── README.md
├── tenant
│   ├── network
│   └── servers
├── terraform.tfvars.sample
└── terragrunt.hcl
Diretório ou Arquivo de Configuração Recursos Definidos na Configuração
common/configuration Nenhum.

O código nesse diretório usa o módulo Terraform em examples/network_calculator, para calcular o número de VCNs de tenant e VCNs de pareamento necessários, o tamanho do CIDR de cada VCN e o mapeamento entre as VCNs de tenant e as VCNs de pareamento. Os resultados do cálculo são usados quando as VCNs e outros recursos de rede são criados.

common/compartments
  • Um compartimento de gerenciamento.
  • Um ou mais compartimentos para VCNs de pareamento.
  • Um compartimento para cada inquilino.
management/access Uma instância de computação do Oracle Linux anexada a uma sub-rede pública na VCN ISV. Esta instância é o servidor bastion da topologia.
management/network
  • A VCN ISV, também chamada de VCN de gerenciamento.
  • Gateways NAT e de internet para a ISV VCN.
  • As seguintes sub-redes:
    • Uma sub-rede de gerenciamento privada para o servidor de gerenciamento.
    • Uma sub-rede de acesso pública para o servidor bastion.
    • Uma sub-rede de pareamento privada para os gateways de roteamento
  • A tabela de roteamento default da VCN, com uma regra para rotear o tráfego vinculado à internet pública por meio do gateway da internet.
  • Uma tabela de roteamento para a sub-rede do pareamento, com uma regra para rotear o tráfego vinculado à internet pública por meio do gateway NAT.
  • Uma lista de segurança para a sub-rede de acesso, com as seguintes regras:
    • Permite tráfego ICMP de entrada de qualquer origem.
    • Permite o tráfego TCP de saída associado a qualquer destino.
  • Uma lista de segurança para a sub-rede de pareamento, com as seguintes regras:
    • Permite o tráfego TCP de saída associado a qualquer destino.
    • Permite tráfego ICMP de entrada de qualquer origem.
    • Permite o tráfego TCP de entrada de qualquer origem para a porta 5666.
  • Uma lista de segurança para a sub-rede de gerenciamento, com as seguintes regras:
    • Permite tráfego ICMP de entrada da sub-rede de acesso.
    • Permite tráfego HTTP de entrada da sub-rede de acesso à porta 80.
    • Permite o tráfego TCP de saída associado a qualquer destino.
management/server_attachment
  • Uma tabela de roteamento anexada à sub-rede de gerenciamento, com as seguintes regras:
    • Rotear tráfego para a internet pública por meio do gateway NAT.
    • Rotear tráfego para cada uma das VCNs do tenant para a instância de gateway de roteamento apropriado.
  • Uma tabela de roteamento anexada à sub-rede de acesso, com as seguintes regras:
    • O tráfego de rota associado à internet pública por meio do gateway da internet.
    • Rotear tráfego para cada uma das VCNs do tenant para a instância de gateway de roteamento apropriado.
management/servers Uma instância de computação do Oracle Linux anexada à sub-rede de gerenciamento na VCN ISV.

Você pode usar o servidor de gerenciamento para instalar e executar um aplicativo de monitoramento de infraestrutura, como Nagios Core.

peering/network
  • Um grupo dinâmico que consiste nas instâncias de computação que hospedam os gateways de roteamento.
  • Uma política para permitir que o grupo dinâmico definido nessa configuração use as VNICs e endereços privados no compartimento.
  • Duas VCNs de pareamento, com uma sub-rede em cada VCN.
  • Um gateway de pareamento local (LPG) para cada VCN.
  • Uma lista de segurança para cada sub-rede, com regras para permitir todo o tráfego de entrada ICMP e todo o tráfego TCP de saída.
  • Uma tabela de roteamento para cada sub-rede, com regras para rotear o limite de tráfego para cada VCN do tenant por meio do LPG da VCN de pareamento apropriada.
peering/routing
  • Dois gateways de roteamento:
    • Um gateway é um par de instâncias de computação, cada uma em um domínio de falha diferente, com o Pacemaker instalado para ativar a alta disponibilidade. Cada instância de computação tem duas VNICs secundárias, com um endereço IP flutuante anexado à primeira VNIC secundária. Este gateway destina-se a demonstrar failover de HA para o gateway de roteamento.
    • O outro gateway é uma instância de computação única.
  • Um grupo de segurança de rede com as seguintes regras:
    • Permitir todo o tráfego TCP dentro do grupo para as portas 3121, 2224 e 21064.
    • Permitir que todo tráfego UDP dentro do grupo até a porta 4505.
tenant/network Os seguintes recursos para cada tenant:
  • Uma VCN de tenant.
  • Gateways NAT e de internet para a VCN do tenant.
  • Duas sub-redes, uma pessoa pública e a outra privada.
  • Um LPG para a VCN.
  • Uma tabela de roteamento para a sub-rede pública, com as seguintes regras:
    • O tráfego de rota associado à internet pública por meio do gateway da internet.
    • Rotear tráfego para a sub-rede pareamento por meio do LPG.
    • Rotear o tráfego para a sub-rede de gerenciamento por meio do LPG.
  • Uma tabela de roteamento para a sub-rede privada, com as seguintes regras:
    • Rotear tráfego para a internet pública por meio do gateway NAT.
    • Rotear tráfego para a sub-rede pareamento por meio do LPG.
    • Rotear o tráfego para a sub-rede de gerenciamento por meio do LPG.
  • Uma lista de segurança para a sub-rede pública, com as seguintes regras:
    • Permite tráfego ICMP de entrada de qualquer destino.
    • Permitir tráfego TCP de saída para qualquer destino.
  • Uma lista de segurança para a sub-rede privada, com as seguintes regras:
    • Permite tráfego ICMP de entrada de qualquer destino.
    • Permitir tráfego TCP de saída para qualquer destino.
    • Permite o tráfego TCP de entrada para a porta 5666.
tenant/servers Uma instância de computação do Oracle Linux em cada compartimento de tenants.

Você pode usar esta instância para instalar e executar um agente de monitoramento de infraestrutura. Por exemplo, se você instalar Nagios Core no servidor de gerenciamento na ISV VCN, poderá instalar o agente Nagios na instância de computação em cada compartimento tenant. O agente pode monitorar os servidores no compartimento e enviar métricas para o servidor de monitoramento Nagios.

terraform.tfvars.sample Um modelo para o arquivo de variáveis Terraform.
terragrunt.hcl A configuração do Terragrunt.

Definir as Variáveis do Terraform

Especifique os parâmetros necessários para o Terraform estabelecer conexão com a tenancy do Oracle Cloud Infrastructure, chaves SSH para as instâncias de computação e a senha para o cluster de roteamento.

  1. Copie examples/full-deployment/terraform.tfvars.sample para examples/full-deployment/terraform.tfvars.
  2. Abra examples/full-deployment/terraform.tfvars em um editor de texto sem formatação e defina os valores das variáveis como se segue:
    Variável Descrição
    tenancy_ocid O OCID da sua tenancy.

    Você pode localizar o OCID de sua tenancy na console web do Oracle Cloud Infrastructure. Selecione Administração no menu de serviços e, em seguida, clique em Detalhes da Tenancy.

    user_ocid O OCID do usuário que você deseja que o Terraform use para autenticação com o Oracle Cloud Infrastructure.

    Para localizar o OCID do usuário, selecione Identidade no menu de serviços e, em seguida, selecione Usuários. Localize seu nome de usuário na lista e copie seu OCID.

    fingerprint A impressão digital da chave de assinatura da API que você fez upload.
    private_key_path O caminho completo e o nome do arquivo que contém sua chave de assinatura de API privada.
    região O ID da região em que você deseja criar os recursos.

    Por exemplo, o ID da região Leste dos EUA (Ashburn) é us-ashburn-1.

    Consulte Regiões e Domínios de Disponibilidade.

    compartment_ocid O OCID do compartimento no qual você deseja criar os recursos.

    O compartimento que você especificar será o compartimento pai da topologia.

    Para localizar o OCID de um compartimento, selecione Identidade no menu de serviços e, em seguida, selecione Compartimentos. Localize o compartimento que você precisa na lista e copie seu OCID.

    bastion_ssh_public_key_file O caminho completo e o nome do arquivo que contém a chave pública SSH para o servidor bastion.
    bastion_ssh_private_key_file O caminho completo e o nome do arquivo que contém a chave privada SSH para o servidor bastion.
    remote_ssh_public_key_file O caminho completo e o nome do arquivo que contém a chave pública SSH para as instâncias de computação privada na topologia.
    remote_ssh_private_key_file O caminho completo e o nome do arquivo que contém a chave privada SSH para as instâncias de computação privada na topologia.

    Salve e feche terraform.tfvars.

    Veja a seguir um exemplo de um arquivo terraform.tfvars concluído:

    tenancy_ocid = "ocid1.tenancy.oc1..aaaaaaaa2 (truncated)"
    user_ocid = "ocid1.user.oc1..aaaaaaaag (truncated)"
    fingerprint = "56:f6:8e:bf: (truncated)"
    private_key_path = "/home/joe/.oci/oci_api_key.pem"
    region = "us-ashburn-1"
    
    compartment_ocid = "ocid1.compartment.oc1..aaaaaaaam (truncated)"
    
    bastion_ssh_public_key_file = "/home/joe/.ssh/ida_rsa_bastion.pub"
    bastion_ssh_private_key_file = "/home/joe/.ssh/ida_rsa_bastion"
    remote_ssh_public_key_file = "/home/joe/.ssh/ida_rsa_remote.pub"
    remote_ssh_private_key_file = "/home/joe/.ssh/ida_rsa_remote"
  3. Defina um segredo compartilhado para o cluster de roteamento em uma variável de ambiente.
    export TF_VAR_hacluster_password="somePassword"

    A senha deve conter pelo menos oito caracteres. Ela deve incluir pelo menos uma letra maiúscula, uma minúscula, um numeral e um caractere especial (não alfanumérico).