Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever em uma conta gratuita, consulte Conceitos Básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Configurar Zonas, Views e Resolvedores Privados de DNS para Acelerar a Certificação OCI Architect Professional com o Terraform
Introdução
A obtenção da certificação de Arquiteto Profissional da Oracle Cloud Infrastructure (OCI) exige um profundo conhecimento da Oracle Cloud e experiência prática. Esta série de tutoriais acelera sua jornada aproveitando a Infraestrutura como Código (IaC) com o Terraform e o Ansible.
A Figura 1 ilustra a arquitetura a ser implantada para o OCI Architect Professional Certification Lab 2: Oracle Cloud Infrastructure Architect Professional (Oracle University Lab - 6h 14m).
Figura 1: Pontos Finais do LPG (Local Peering Gateway) para Criar Nome de Domínio de DNS Privado
Principais Benefícios do DNS Privado
O DNS privado oferece várias vantagens para gerenciar e proteger seus recursos da OCI. Isso inclui, mas não se limita ao seguinte:
- Organização: Use nomes de domínio preferenciais para uma experiência intuitiva e organizada.
- Segurança: proteja recursos confidenciais filtrando e bloqueando o acesso a domínios específicos.
- Balanceamento de Carga: Distribua o tráfego entre vários servidores, melhorando o desempenho e a confiabilidade.
- Ambiente Híbrido e Conectividade: Facilite a comunicação perfeita na nuvem dentro e entre VCNs, bem como entre redes on-premises e recursos da OCI.
Vamos nos aprofundar em como aproveitar o DNS privado da OCI para gerenciar domínios personalizados e conectar recursos entre redes. Você aprenderá a criar zonas privadas, definir registros e configurar resolvedores para uso interno, oferecendo controle granular sobre o acesso a recursos no OCI.
Abordagem semi-automatizada em sete tarefas
O tutorial irá guiá-lo através da automação de um ambiente escalável e multi-VCN na OCI com resolução de DNS privado. Usando a Console do OCI, o Terraform e o Ansible, você criará duas VCNs, estabelecerá gateways de pareamento local (LPGs) entre eles, iniciará uma instância de máquina virtual (VM), configurará zonas de DNS privadas personalizadas e testará completamente a resolução de DNS antes e depois de configurar o resolvedor de VCN. No final, você terá um ambiente multi-VCN totalmente funcional com funcionalidade de DNS privado em suas redes.
Objetivos
Este é o segundo tutorial da série a seguir: tutorial 1: Lab 1: Accelerate Oracle Cloud Infrastructure Architect Professional Certification with Terraform para acelerar sua preparação para a OCI Architect Professional Certification (2024). Aproveitamos os princípios do IaC com o Terraform e o Ansible, com foco nos principais conceitos de DNS relevantes para o exame. Embora os laboratórios práticos de certificação: Lab 2: Oracle Cloud Infrastructure Architect Professional (Oracle University Lab - 6h 14m) sejam abrangentes, o Lab 2 pode ser demorado, levando mais de 30 minutos para ser concluído manualmente. A automação de tarefas rotineiras, como a criação de VCNs, sub-redes públicas e privadas, LPGs e VMs, reduz significativamente o tempo de conclusão em mais de 80%, conforme demonstrado no Tutorial 1: Acelere a Certificação Profissional do Oracle Cloud Infrastructure Architect com o Terraform, permitindo que você se concentre em dominar os principais conceitos do OCI DNS.
Pré-requisitos
-
Familiaridade com os princípios IaC, Terraform, Ansible e Oracle Cloud Infrastructure OCI Command Line Interface (OCI CLI).
-
Compreensão do uso de módulos Terraform para provisionar a infraestrutura da OCI. Para obter mais informações, consulte Reutilizar Configuração com Módulos.
-
Uso do OCI Cloud Shell, Oracle Resource Manager (ORM) ou IDE (por exemplo, Visual Studio).
-
Conclua o último laboratório: Certificação OCI Architect Professional e saiba como criar configurações do VCN Terraform com o ORM.
Tarefa 1: Criar Duas Redes Virtuais na Nuvem
Opção manual:
Você pode criar VCNs manualmente usando a Console do OCI. Para indicar essa criação manual, os sinalizadores is_vcn1_created
e is_vcn2_created
devem ser inicializados como false
.
Para criar recursos de rede principais como VCN, gateway de internet, tabela de roteamento, lista de segurança, sub-redes públicas e privadas, consulte Início Rápido da Rede Virtual.
Figura 2: Views da Console para Coletar OCIDs da VCN-01/VCN-02 e OCID da Sub-rede Pública da VCN-01
Vá para a Console do OCI, navegue até Rede, Redes Virtuais na Nuvem e exiba os detalhes da VCN-01, anote seu OCID e o OCID de sua sub-rede pública. Faça o mesmo para a VCN-02, anote seus OCIDs e adicione os OCIDs coletados ao arquivo de configuração do Terraform (input.auto.tfvars
ou variables.tf
).
# Create VCN-01 and VCN-02 with OCI VCN Wizard (set is_vcn1_created and is_vcn2_created to false)
is_vcn1_created = false
is_vcn2_created = false
# Update VCN-01 OCID and its Public Subnet OCID, as well as VCN-02 OCID
vcn1_id = "REPLACE_CREATED_VCN1_OCID_HERE"
public_subnet1_id = "REPLACE_CREATED_PUBLIC_SUBNET1_OCID_HERE"
vcn2_id = "REPLACE_CREATED_VCN2_OCID_HERE"
Opção automatizada:
Também fornecemos duas opções de automação para criar a VCN (VCN-01
e VCN-02
): uma abordagem Módulo Raiz e uma abordagem Módulo Filho. O primeiro é mais simples e adequado para desenvolvimento e teste ou implantação única de VCNs. O segundo oferece melhor organização e escalabilidade para implementações maiores e complexas, promovendo a reutilização e a manutenção do código, tornando-o ideal para ambientes de produção.
Para instruir o Terraform a criar as VCNs, primeiro você precisa definir os flags is_vcn1_created
e is_vcn2_created
como true
em input.auto.tfvars
ou como valores padrão em variables.tf
. Em seguida, especifique o bloco CIDR da VCN (vcn?_cidr_block
), o bloco CIDR da sub-rede pública (public_subnet?_cidr_block
), o bloco CIDR da sub-rede privada (private_subnet?_cidr_block
) e o prefixo do nome do host (host_name?_prefix
). Os nomes de variáveis são abstraídos por meio do uso de um ponto de interrogação (?
) como um espaço reservado. Substituindo ?
por 1 ou 2, você definirá configurações separadas para VCN-01 e VCN-02, respectivamente.
Você também precisa definir os valores para variáveis específicas: oci_regions
(mapeando identificadores de região para chaves), network_deployment_option
(TF-ROOT-MODULE
ou TF-CHILD-MODULE
) e dipslay_name_prefix
(por exemplo,AP-Lab-02-1
). O nome para exibição final da VCN inclui o valor network_deployment_option
para gerar nomes abrangentes (por exemplo, PHX-AP-LAB02-1-TF-ROOT-MODULE-VCN-01
).
-
Abordagem 1: Módulo Raiz do Terraform
Para essa abordagem, simplificamos a configuração do Terraform. Duplicamos o arquivo
network.tf
do Tutorial 1: Acelere a Certificação do Arquiteto Profissional do Oracle Cloud Infrastructure com o Terraform em um subdiretório chamadolab02-demo-flat/
dentro do módulo raiz. Esse diretório usa dois arquivos separados,network1.tf
enetwork2.tf
, para automatizar a criação da VCN-01 e da VCN-02 para facilitar o teste e a compreensão.# Network Deployment Methods (Root Module) network_deployment_option = "TF-ROOT-MODULE" # For testing and PoC only # Turn flags on to instruct Terraform to create VCN-02 and VCN-02 is_vcn1_created = true is_vcn2_created = true # Networking parameters: CIDR Blocks and Host Name prefix vcn1_cidr_block = "10.0.0.0/16" vcn2_cidr_block = "172.0.0.0/16" public_subnet1_cidr_block = "10.0.0.0/24" public_subnet2_cidr_block = "172.0.0.0/24" private_subnet1_cidr_block = "10.0.1.0/24" private_subnet2_cidr_block = "172.0.1.0/24" host_name_prefix = "<RegionKey>apl2" # Same prefix VCN-01/02
-
Abordagem 2: Módulo Filho do Terraform
Você também pode usar um módulo Terraform pré-criado no diretório
lab02-demo-module/
, que converte o arquivonetwork.tf
do módulo raiz em um módulo filho seguindo as melhores práticas do IaC. Como alternativa, você pode usar módulos Terraform pré-criados de repositórios públicos, como o Oracle Cloud Infrastructure Provider, o OCI GitHub (terraform-provider-OCI) ou módulos Oracle internos, como os disponíveis no OCI Live Labs.Defina o valor
network_deployment_option
para refletir o uso da abordagem Módulo Filho.network_deployment_option = "TF-CHILD-MODULE" # IaC Best Practice for Production.
# Module Call to Create VCN-01 module "vcn-01" { source = "./modules/network" region = var.region compartment_id = var.compartment_id display_name_prefix = "${var.display_name_prefix}-${var.network_deployment_option}-VCN-01" network_deployment_type = var.network_deployment_option vcn_cidr_block = var.vcn1_cidr_block public_subnet_cidr_block = var.public_subnet1_cidr_block private_subnet_cidr_block = var.private_subnet1_cidr_block host_name_prefix = "${try(var.regions_keys_map[var.region], "OCI")}${var.host_name_prefix}1" } # Module Call to Create VCN-02 module "vcn-02" { source = "./modules/network" region = var.region compartment_id = var.compartment_id display_name_prefix = "${var.display_name_prefix}-${var.network_deployment_option}-VCN-02" network_deployment_type = var.network_deployment_option vcn_cidr_block = var.vcn2_cidr_block public_subnet_cidr_block = var.public_subnet2_cidr_block private_subnet_cidr_block = var.private_subnet2_cidr_block host_name_prefix = "${try(var.regions_keys_map[var.region], "OCI")}${var.host_name_prefix}2" }
Tarefa 2: Criar Dois LPGs (Local Peering Gateways)
Opção manual:
Para criar LPGs no OCI manualmente, consulte Criando um LPG (Local Peering Gateway). Nesse caso, defina os sinalizadores is_lpg1_created
e is_lpg2_created
como false
em seu arquivo de configuração (input.auto.tfvars
ou variables.tf
).
Opção automatizada:
Para automatizar a tarefa usando o Terraform, defina esses flags como true
. Isso instrui o Terraform a criar LPG-01 e LPG-02.
# Create 2 Local Peering Gateways (LPG-01 and LPG-02) then peer them.
is_lpg1_created = true
is_lpg2_created = true
O trecho de código do Terraform a seguir cria o LPG-01 e o LPG-02 e estabelece um relacionamento de pareamento entre eles, permitindo conectividade privada entre suas VCNs.
# LPG-01 Creation
resource "oci_core_local_peering_gateway" "lpg-01" {
count = (var.is_vcn1_created && var.is_lpg1_created) ? 1 : 0
# Required
compartment_id = var.compartment_id
display_name = var.is_vcn1_created ? "${try(var.regions_keys_map[var.region], "OCI")}-${var.display_name_prefix}-${var.network_deployment_option}-LPG-01" : "${try(var.regions_keys_map[var.region], "OCI")}-${var.display_name_prefix}-LPG-01"
vcn_id = var.is_vcn1_created ? module.vcn-01.vcn_ocid : var.vcn1_id
}
# LPG-02 Creation
resource "oci_core_local_peering_gateway" "lpg-02" {
depends_on = [oci_core_local_peering_gateway.lpg_01]
count = (var.is_vcn2_created && var.is_lpg2_created) ? 1 : 0
# Required
compartment_id = var.compartment_id
display_name = var.is_vcn1_created ? "${try(var.regions_keys_map[var.region], "OCI")}-${var.display_name_prefix}-${var.network_deployment_option}-LPG-02" : "${try(var.regions_keys_map[var.region], "OCI")}-${var.display_name_prefix}-LPG-02"
vcn_id = var.is_vcn2_created ? module.vcn-02.vcn_ocid : var.vcn2_id
# Peering lpg-02 with lpg-01
peer_id = oci_core_local_peering_gateway.lpg_01[count.index].id
}
Tarefa 3: Iniciar uma Instância de Máquina Virtual
Opção manual:
Para iniciar uma instância de VM manualmente por meio da Console do OCI, consulte Criando uma Instância.
Opção automatizada:
Forneceremos uma automação do provisionamento de VM usando uma versão simplificada do código do Terraform do Tutorial 1: Acelere a Certificação Profissional do Oracle Cloud Infrastructure Architect com o Terraform. Para instruir o Terraform a criar uma máquina virtual VM-01, defina o flag is_instance_created
como true
. O nome para exibição da VM incluirá a definição network_deployment_option
(por exemplo, PHX-AP-LAB02-1-TF-ROOT-MODULE-VM-01
ou PHX-AP-LAB02-1-TF-CHILD-MODULE-VM-01
) se a VCN for criada com o Terraform.
# Task 3: Launch a VM(VM-01) in the Public Subnet of VCN-01.
is_instance_created = true
O código do Terraform a seguir automatiza a criação de uma VM-01, conforme mostrado na Figura 1 na sub-rede pública da VCN-01.
resource "oci_core_instance" "this" {
count = (var.is_instance_created) ? 1 : 0
availability_domain = data.oci_identity_availability_domains.ads.availability_domains[0].name
compartment_id = var.compartment_id
create_vnic_details {
assign_private_dns_record = "true"
assign_public_ip = "true"
subnet_id = var.is_vcn1_created ? module.vcn-01.public_subnet_ocid : var.public_subnet1_id
}
display_name = var.is_vcn1_created ? "${try(var.regions_keys_map[var.region], "OCI")}-${var.display_name_prefix}-${var.network_deployment_option}-VM-0${count.index + 1}" : "${try(var.regions_keys_map[var.region], "OCI")}-${var.display_name_prefix}-VM-0${count.index + 1}"
instance_options {
are_legacy_imds_endpoints_disabled = "false"
}
metadata = {
"ssh_authorized_keys" = "${file(var.ssh_public_key)}"
}
shape = var.shape_name
shape_config {
memory_in_gbs = var.shape_memory_in_gbs
ocpus = var.shape_numberof_ocpus
}
source_details {
source_id = var.image_ids[var.region]
source_type = "image"
}
}
Tarefa 4: Criar Zonas Privadas Personalizadas para VCN-01 e VCN-02
As zonas DNS privadas do OCI armazenam registros DNS internos, acessíveis apenas dentro de uma VCN. Para entender os conceitos de DNS, primeiro mostraremos como criar manualmente duas zonas privadas personalizadas. A Figura 3 ilustra a criação de uma Zona de DNS privada zone-a.local
na VCN-01 (PHX-AP-LAB02-1-VCN-01
) e adiciona um record
a ela.
Figura 3: Crie uma zona de DNS Privado e associe-a à VCN-01, em seguida, adicione um novo registro à zona
Opção manual:
-
Crie e configure uma zona de DNS privada para VCN-01 (
zone-a.local
).-
Vá para a Console do OCI, navegue até Rede, Gerenciamento de DNS, Zonas e clique em Zonas Privadas.
-
Clique em Criar Zona, digite o nome da zona (
zone-a.local
), selecione Selecionar View Privada de DNS existente,PHX-AP-LAB02-1-VCN-01
como a VCN associada e clique em Criar. -
Depois que a zona for criada, exiba os registros NS e SOA gerados automaticamente.
-
Clique em Gerenciar Registros e selecione Adicionar Registro.
-
Especifique as informações a seguir e clique em Adicionar Registro.
- Nome: Informe
server01
. - Type: Selecione
A - IPv4 Address
. - TTL: Digite
30 seconds
(desbloqueie o campo, se necessário). - Endereço: Informe
10.0.0.2
.
- Nome: Informe
-
Clique em Publicar Alterações e Confirmar Publicação de Alterações.
Observações: Aguarde a conclusão bem-sucedida da operação (estado alterado de UPDATING para ACTIVE).
-
-
Crie e configure uma zona de DNS privada para VCN-02 (
zone-b.local
). Siga as mesmas etapas da Figura 3 para criar uma zona privada para a VCN-02 (PHX-AP-LAB02-1-VCN-02
).-
Navegue até Zonas, Zonas Privadas e clique em Criar Zona.
-
Digite Nome como
zone-b.local
, selecione Selecionar View Privada de DNS existente,PHX-AP-LAB02-1-VCN-02
como a VCN associada e clique em Criar. -
Clique em Gerenciar Registros e selecione Adicionar Registro.
-
Especifique as informações a seguir e clique em Adicionar Registro.
- Nome: Informe
server01
. - Type: Selecione
A - IPv4 Address
. - TTL: Digite
60 seconds
(desbloqueie o campo, se necessário). - Endereço: Informe
172.16.0.123
.
- Nome: Informe
-
Clique em Publicar Alterações e Confirmar Publicação de Alterações.
Observações: Se você ignorar uma etapa de criação manual, isso resultará em erros como:
zone not found: 3 (NXDOMAIN)
.
-
Opção automatizada:
Este tutorial também fornece uma abordagem automatizada avançada usando o Ansible. O Ansible é uma ferramenta de automação de código aberto que gerencia configurações para sua infraestrutura. Neste contexto, um manual do Ansible é uma coleção de tarefas que automatizam a criação de zonas DNS privadas. Para obter mais informações, consulte Palavras-chave do Ansible Playbook.
Defina is_task4_automated
como true
em input.auto.tfvars
ou em variabes.tf
para acionar uma execução Ansible playbook
em playbooks.sh
, automatizando em uma única execução a criação de zonas DNS privadas e a adição de registros.
# Task 4: Create and Configure two DNS zones (zone-a and zone-b).
is_task4_automated = true
Usando o provisionador local-exec
do Terraform, você pode executar um playbook do Ansible para criar automaticamente zone-a.local
nas zonas VCN-01 e zone-b.local
na VCN-02 com suas respectivas records
. Para obter mais informações, consulte Código-fonte: oci-ansible-collection.
# Create 2 Custom Private Zones and Associated Records in OCI
resource "null_resource" "ansible-create-zones-playbook" {
count = (var.is_task4_automated) ? 1 : 0
# Create inventory
provisioner "local-exec" {
command = "sh ~/terraform-ws/lab2-demos/playbooks.sh"
}
}
Tarefa 5: Testar sua Instância para a Zona A Associada
Opção manual:
Faça SSH manualmente na instância de VM para verificar se sua instância de VM está associada a zone-a.local
.
-
SSH na instância com o endereço IP público.
ssh -i <private_ssh_key> <public_ip_address>
-
Procure registros de DNS para
server01.zone-a.local
.host server01.zone-a.local
Saída Esperada:
server01.zone-a.local has address 10.0.0.2
-
Verifique a entrada de zona gerada pelo sistema.
host -t NS zone-a.local
Saída Esperada:
zone-a.local has NS record vcn-dns.oraclevcn.com.
-
Verifique o registro de autoridade para a zona.
host -t SOA zone-a.local
Saída Esperada:
zone-a.local has SOA record ven-dns.oraclevcn.com. hostmaster.oracle.com. 2 3600 3600 3600 10
-
Observe a diferença na resolução de DNS com base nas views de VCN associadas.
host server01.zone-b.local
Saída Esperada:
server01.zone-b.local not found: 3 (NXDOMAIN)
A saída indica que
zone-b.local
não está associado a nenhuma das views da VCN.
Opção automatizada:
Defina o flag is_test_instance_associated_zone_a
como true
para instruir o Terraform a testar a associação VM-01
com zone-a.local
.
# Test Instance for Associated Zone (zone-a.local)
is_test_instance_associated_zone_a = true
O código do Terraform a seguir usa o provisionador remote-exec
para automatizar o teste da associação de zona VM-01.
resource "null_resource" "dns_test_1" {
depends_on = [oci_core_instance.this[0]]
count = (var.is_test_instance_associated_zone_a) ? 1 : 0
connection {
agent = false
timeout = "30m"
host = oci_core_instance.this[0].public_ip
user = "opc"
private_key = file(var.ssh_private_key) # Avoid exposing SSH keys directly
}
provisioner "remote-exec" {
inline = [
"echo \"Begin Test 1 - Instance Associated Zone-A\"",
"echo \"1. Successful SSH to the instance using public ip address: ${oci_core_instance.this[0].public_ip}\"",
"echo \"2. Look up DNS records for server01.zone-a.local.\"",
"host server01.zone-a.local",
"echo \"3. Verify the system-generated zone entry.\"",
"host -t NS zone-a.local",
"echo \"4. Verify the authority record for the zone.\"",
"host -t SOA zone-a.local",
"echo \"5. Observe the difference in DNS resolution based on the associated VCN views.\"",
"host server01.zone-b.local",
"echo \"End Test 1 - Instance Associated Zone-A\"", ]
}
}
Tarefa 6: Configurar o Resolvedor de VCN e Adicionar a Outra View Privada
Opção manual:
Para configurar o resolvedor de VCN manualmente, navegue até a página de detalhes da VCN-01 na Console do OCI, selecione Resolvedor de VCN e View Privada.
Selecione VCN-02 no menu drop-down e clique em Salvar para salvar as alterações. Aguarde a alteração do status da página de detalhes do resolvedor privado de UPDATING para ACTIVE.
Opção automatizada:
Para automatizar a configuração do resolvedor de VCN, aproveitamos o provisionador local-exec
do Terraform para executar módulos OCI CLI, playbooks Ansible ou Terraform.
Defina o flag is_task6_automated
como true
para instruir o Terraform.
is_task6_automated = true
O script bash fornecido update_resolver.sh
destaca as etapas para atualizar o resolvedor privado da VCN-01 e associar a VCN-02 como uma view privada de DNS. Além disso, um exemplo de configuração de DNS híbrido do Terraform para OCI está disponível aqui: terraform-OCI-hybrid-dns.
# Task 6: Configure the VCN Resolver, adding the Other Private View
resource "null_resource" "run-get-resolver" {
count = (var.is_task6_automated) ? 1 : 0
# Create inventory
provisioner "local-exec" {
command = "sh ~/terraform-ws/lab2-demos/update_resolver.sh"
}
}
Tarefa 7: Testar sua Instância para a Zona B Associada
Opção manual:
Verifique se o servidor é resolvido corretamente após configurar o resolvedor de VCN.
-
SSH na instância com o endereço IP público.
ssh -i <private_ssh_key> <public_ip_address>
-
Procure registros de DNS para
server01.zone-a.local
.host server01.zone-b.local
Saída Esperada:
server01.zone-b.local has address 172.16.0.123
Observação: Se a resolução do DNS falhar, aguarde alguns minutos para que as alterações entrem em vigor. Se necessário, reinicialize a instância.
Opção automatizada:
Defina o flag is_test_instance_associated_zone_b
como true
para instruir o Terraform a testar a associação da VM-01 com a segunda zona (zone-b.local
) na segunda VCN (VCN-02).
# Test Instance for Assoicated Zone B
is_test_instance_associated_zone_b = true
O código a seguir usa o provisionador remote-exec
do Terraform para automatizar o teste, verificando a associação da instância da VM com zone-b.local
.
resource "null_resource" "dns_test_2" {
depends_on = [oci_core_instance.this[0]]
count = (var.is_test_instance_associated_zone_a) ? 1 : 0
connection {
agent = false
timeout = "30m"
host = oci_core_instance.this[0].public_ip
user = "opc"
private_key = file(var.ssh_private_key)
}
provisioner "remote-exec" {
inline = [
"echo \"Begin Test 2 - Instance Associated Zone-B\"",
"echo \"1. Successfull SSH into the instance using its public ip address: ${oci_core_instance.this[0].public_ip}\"",
"echo \"2. Look up DNS records for server01.zone-b.local.\"",
"host server01.zone-b.local",
"echo \"End Test 2 - Instance Associated Zone-B\"" ]
}
}
Opções de Implantação
Vamos explorar duas opções de implantação:
-
O Oracle Resource Manager (ORM), que oferece uma interface amigável com workflows guiados.
-
A CLI do Terraform (Community Edition), fornecendo gerenciamento flexível e escalável de recursos do Lab 2 por meio de arquivos de configuração declarativos.
To provision Lab 2 resources (VCN-01/VCN-02, LPG-01/LPG-02, and VM-01) and trigger the required tests, you need to provide default values for: image OCIDs map for each used region (image_ids
), compartment OCID (compartment_id
), display name prefix (display_name_prefix
), networking (is_vcn1_created
, is_vcn2_created
, is lpg1_created
, is_lpg2_created
, vcn_1_id
, vcn_2_id
, and public_subnet1_id
), compute instance (is_instance_created
, shape_name
), and testing flags for instance and zone associations (is_test_instance_associated_zone_a
and is_test_instance_associated_zone_b
).
Opção 1: Usar o Oracle Resource Manager (ORM)
A Figura 4 mostra a criação da pilha do ORM para a criação de recursos do Laboratório 2.
Figura 4: Oracle Resource Manager - Criar Pilha Lab2 (VCN-01, VCN-02, LPG-01 e LPG-02, VM-01)
O Terraform automatiza o provisionamento de infraestrutura em sete etapas, conforme mostrado na Figura 5: análise de configurações de origem, criação do pacote de modelos do Terraform, fornecimento de valores de variáveis padrão, criação de pilhas ORM, planejamento de alterações, aplicação dessas alterações para provisionar recursos no OCI e, opcionalmente, destruição de recursos. A integração de ferramentas de CI/CD DevOps, como Jenkins ou OCI DevOps, pode automatizar todo o processo, fornecendo uma solução conveniente, próxima a um clique único.
Figura 5: Workflow da Pilha do Oracle Resource Manager (criar, planejar, aplicar e destruir)
Opção 2: Usar Interface de Linha de Comando (CLI) do Terraform (Community Edition)
A CLI do Terraform é uma poderosa ferramenta de infraestrutura como código que permite o gerenciamento flexível e escalável de recursos de nuvem por meio de arquivos de configuração declarativos. Faça download do código do Terraform aqui: OCI-blog-fast-tracking-apcertif-part2.zip e personalize o arquivo input.auto.tfvars
com os detalhes do OCI (compartment_id
, image_ids
) e siga as instruções em README.md
para configurar o ambiente, execute os comandos terraform init
, terraform plan
e terraform apply
para concluir o Laboratório 2.
Incluímos scripts bash para cada tarefa que pré-definem os sinalizadores necessários do Terraform, reduzindo os cliques e o tempo de conclusão. Esses scripts oferecem vários níveis de flexibilidade:
-
Execução Sequencial: Começando com a Tarefa 1 a 3 (
run_task1-3.sh
erun_task4.sh
) progredindo para a Tarefa 7 (run_task6-7.sh
). -
Ordem Personalizada: Você pode pausar após a Tarefa 1 a 3, concluir a Tarefa 4 manualmente, retomar com a Tarefa 5 usando o Terraform, executar a Tarefa 6 manualmente e usar um script subsequente para concluir a Tarefa 7.
-
Execução Híbrida: Execute automaticamente a Tarefa 1 a 5 (
run_task1-3.sh
,run_task4.sh
e, em seguida,run_task5.sh
) e aproveite a interação emrun_taks6-7.sh
para pausar até que a Tarefa 6 seja concluída manualmente na Console do OCI antes de retomar o script para conclusão automática da Tarefa 7. -
Totalmente Automatizado: Você pode integrar essas tarefas em um pipeline de CI/CD para execução com um clique em um ambiente de produção DevOps.
Basicamente, esse pacote fornece guias e melhores práticas para configurar o DNS privado, simplificando o Laboratório 2 e garantindo uma experiência de aprendizado tranquila com o OCI DNS.
##########################################################################
# Terraform module: Configuring Private DNS Zones, Views, and Resolvers. #
# File Name: input.auto.tfvars #
# Copyright (c) 2024 Oracle Author: Mahamat H. Guiagoussou. #
##########################################################################
# Working Compartment
compartment_id = "REPLACE_WITH_YOUR_WORKING_COMPARTMENT_OCID_HERE"
# Region based display name prefix
display_name_prefix = "AP-LAB02-1" # Replace with your prefix
# TASK 1 - Create 2 VCNs (VCN-01 and VCN-02) manually using the OCI
# VCN Wizard (semi automated option) or Terraform (Root or Child)
# Turn flags off to indicate VCN-01 and VCN-02 are not created with TF
#is_vcn1_created = false # Set to 'false' to create VCN-01
#is_vcn2_created = false # Set to 'false' to create VCN-02
# After Creating VCN-01 & VCN-02 with VCN Wizard, updae OCIDs
vcn_id = "REPLACE_VCN1_OCID_HERE"
vcn_id = "REPLACE_VCN2_OCID_HERE"
public_subnet_id = "REPLACE_PUBLIC_VCN1_SUBNET_OCID_HERE"
# Create VCN-01 and VCN-02 with Terraform. Use only one of 2 options:
# (1) Root Module - Dupplicated code ("network1.tf" & "network2.tf")
# (2) Child Module - Use an existing Terraform Network Module.
# Network Deployment Options (Root Module)
network_deployment_option = "TF-ROOT-MODULE" # "TF-CHILD-MODULE"
# Turn flags on to instruct Terraform to create VCN-02 and VCN-02
is_vcn1_created = true # Set to 'true' to create VCN-01
is_vcn2_created = true # Set to 'true' to create VCN-02
# Networking parameters: CIDR Blocks and Host Name prefix
vcn1_cidr_block = "10.0.0.0/16"
vcn2_cidr_block = "172.0.0.0/16"
public_subnet1_cidr_block = "10.0.0.0/24"
public_subnet2_cidr_block = "172.0.0.0/24"
private_subnet1_cidr_block = "10.0.1.0/24"
private_subnet2_cidr_block = "172.0.1.0/24"
host_name_prefix = "<region-key>apl1"
# Task 2: Create two(2) Local Peering Gateways (LPG-01 & LPG-02)
is_lpg1_created = false
is_lpg2_created = false
# Task 3: Launch a VM (VM-01) in the public subnet
is_instance_created = false
# Shape Definition
shape_name = "VM.Standard.A1.Flex"
shape_memory_in_gbs = "6"
shape_numberof_ocpus = "1"
# SSH keys
ssh_public_key = "REPLACE_SSH_PUBLIC_KEY_PATH"
ssh_private_key = "REPLACE_SSH_PRIVATE_KEY_PATH"
# Task 4: Create and Configure OCI Private Zones (zone-a/b.local)
is_task4_automated = false
# Task 5: Test your instance for Associated Zone A.
is_test_instance_associated_zone_a = false
# Task 6: Configure the VCN Resolver, adding the Other Private View.
is_task6_automated = false
# Task 7: Test your Instance for Associated Zone B.
is_test_instance_assoracle = false
Este tutorial forneceu uma abordagem abrangente para configurar zonas, views e resolvedores de DNS privados no OCI (Oracle Cloud Infrastructure). Ele ofereceu métodos manuais e automatizados para criar, configurar e testar esses componentes. Essa abordagem prática e semi-automatizada garante uma compreensão sólida da resolução de DNS em diferentes VCNs na OCI.
Por meio de sete tarefas, você criou duas VCNs, LPGs estabelecidos, iniciou uma VM, configurou duas zonas de DNS personalizadas e verificou a associação de DNS da VM antes e depois de adicionar a segunda VCN como uma view privada associada ao Resolvedor de DNS da primeira VCN.
Próximas Etapas
Ao automatizar o provisionamento da infraestrutura do OCI usando ferramentas de Infraestrutura como Código IaC, como Terraform, Ansible, Oracle Resource Manager ORM e script bash shell do OCI CLI, este tutorial ajuda os candidatos à Certificação OCI Architect Professional (2024) a acelerar tarefas complexas, como as das configurações de DNS do Laboratório 2, de 30 minutos para apenas 5 minutos. Esse aumento na eficiência do tempo reduz erros humanos, reduz os custos de gerenciamento de recursos e aumenta as taxas de sucesso em escala.
Aprenda o Terraform e o Ansible e aproveite o ORM, a CLI do OCI e o script bash para explorar as melhores práticas do IaC para um gerenciamento eficaz da infraestrutura da OCI.
Links Relacionados
Confirmações
- Autor - Mahamat H. Guiagoussou (Principal Arquiteto de Nuvem)
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Configure Private DNS Zones, Views, and Resolvers to Accelerate OCI Architect Professional Certification with Terraform
G19551-01
November 2024