Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse para obtener una cuenta gratuita, consulte Introducción a la cuenta gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar la práctica, sustituya estos valores por otros específicos de su entorno en la nube.
Configuración de zonas, vistas y solucionadores de DNS privados para acelerar la certificación de OCI Architect Professional con Terraform
Introducción
Lograr la certificación de Oracle Cloud Infrastructure (OCI) Architect Professional requiere un profundo conocimiento de Oracle Cloud y experiencia práctica. Esta serie de tutoriales acelera su recorrido aprovechando la infraestructura como código (IaC) con Terraform y Ansible.
La figura 1 ilustra la arquitectura que se desplegará para la certificación de arquitecto profesional de OCI Laboratorio 2: Oracle Cloud Infrastructure Architect Professional (laboratorio de Oracle University: 6h 14m).
Figura 1: Puntos finales de gateway de intercambio de tráfico local (LPG) para crear un nombre de dominio de DNS privado
Ventajas clave de DNS privado
El DNS privado ofrece varias ventajas para gestionar y proteger los recursos de OCI. Esto incluye pero no se limita a lo siguiente:
- Organización: utilice nombres de dominio preferidos para una experiencia intuitiva y organizada.
- Seguridad: proteja los recursos confidenciales filtrando y bloqueando el acceso a dominios específicos.
- Equilibrio de carga: distribuya el tráfico entre varios servidores, mejorando el rendimiento y la fiabilidad.
- Entorno híbrido y conectividad: facilita una comunicación fluida en la nube dentro y entre las redes virtuales en la nube, así como entre redes locales y recursos de OCI.
Vamos a profundizar en cómo aprovechar el DNS privado de OCI para gestionar dominios personalizados y conectar recursos a través de redes. Aprenderá a crear zonas privadas, definir registros y configurar solucionadores para uso interno, lo que le proporcionará un control granular sobre el acceso a los recursos en OCI.
Enfoque semi-automatizado en siete tareas
El tutorial le guiará a través de la automatización de un entorno escalable y de varias VCN en OCI con resolución de DNS privada. Con la consola de OCI, Terraform y Ansible, creará dos VCN, establecerá gateways de intercambio de tráfico local (LPG) entre ellos, iniciará una instancia de máquina virtual (VM), configurará zonas de DNS privadas personalizadas y probará a fondo la resolución de DNS antes y después de configurar el solucionador de VCN. Al final, tendrá un entorno de varias VCN totalmente funcional con funcionalidad de DNS privado en todas sus redes.
Objetivos
Este es el segundo tutorial de la serie que sigue al tutorial 1: Laboratorio 1: Acelerar la certificación de Oracle Cloud Infrastructure Architect Professional con Terraform para acelerar la preparación de OCI Architect Professional Certification (2024). Utilizamos los principios IaC con Terraform y Ansible, centrándonos en los conceptos principales de DNS relevantes para el examen. Mientras que los laboratorios prácticos de certificación: Laboratorio 2: Oracle Cloud Infrastructure Architect Professional (Oracle University Lab - 6h 14m) son completos, el laboratorio 2 puede llevar mucho tiempo y tardar más de 30 minutos en completarse manualmente. La automatización de tareas rutinarias como la creación de redes virtuales en la nube, subredes públicas y privadas, LPG y máquinas virtuales reduce significativamente el tiempo de finalización en más del 80 %, como se demuestra en el tutorial 1: Acelere la certificación de Oracle Cloud Infrastructure Architect Professional con Terraform, lo que le permite centrarse en dominar los conceptos principales de OCI DNS.
Requisitos
-
Familiaridad con los principios de IaC, Terraform, Ansible y Interfaz de línea de comandos (CLI de OCI) de Oracle Cloud Infrastructure.
-
Descripción del uso de módulos de Terraform para aprovisionar la infraestructura de OCI. Para obtener más información, consulte Reutilización de la Configuración con Módulos.
-
Uso de OCI Cloud Shell, Oracle Resource Manager (ORM) o IDE (por ejemplo, Visual Studio).
-
Realice el último laboratorio: OCI Architect Professional Certification y aprenda a crear configuraciones de Terraform de VCN con ORM.
Tarea 1: Creación de dos redes virtuales en la nube
Opción manual:
Puede crear VCN manualmente mediante la consola de OCI. Para indicar esta creación manual, los indicadores is_vcn1_created
y is_vcn2_created
se deben inicializar en false
.
Para crear recursos de red principales como VCN, gateway de Internet, tabla de rutas, lista de seguridad, subredes públicas y privadas, consulte Inicio rápido de redes virtuales.
Figura 2: Vistas de consola para recopilar OCID de VCN-01/VCN-02 y OCID de subred pública de VCN-01
Vaya a la consola de OCI, vaya a Networking, Virtual Cloud Networks y vea los detalles de VCN-01, anote su OCID y el OCID de su subred pública. Haga lo mismo con VCN-02, anote sus OCID y agregue los OCID recopilados al archivo de configuración de Terraform (input.auto.tfvars
o 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"
Opción automatizada:
También proporcionamos dos opciones de automatización para crear la VCN (VCN-01
y VCN-02
): un enfoque de módulo raíz y un enfoque de módulo secundario. La primera es más sencilla y adecuada para el desarrollo y las pruebas o para el despliegue de VCN de una sola vez. El segundo ofrece una mejor organización y escalabilidad para despliegues más grandes y complejos, promoviendo la reutilización y la capacidad de mantenimiento del código, lo que lo hace ideal para entornos de producción.
Para indicar a Terraform que cree las VCN, primero debe definir los indicadores is_vcn1_created
y is_vcn2_created
en true
en input.auto.tfvars
o como valores por defecto en variables.tf
. A continuación, especifique el bloque CIDR de la VCN (vcn?_cidr_block
), el bloque CIDR de la subred pública (public_subnet?_cidr_block
), el bloque CIDR de la subred privada (private_subnet?_cidr_block
) y el prefijo de nombre de host (host_name?_prefix
). Los nombres de variables se abstraen mediante el uso del signo de interrogación (?
) como marcador de posición. Al sustituir ?
por 1 o 2, definirá configuraciones independientes para VCN-01 y VCN-02, respectivamente.
También debe definir los valores para variables específicas: oci_regions
(asignando identificadores de región a claves), network_deployment_option
(TF-ROOT-MODULE
o TF-CHILD-MODULE
) y dipslay_name_prefix
(por ejemplo,AP-Lab-02-1
). El nombre mostrado de la VCN final incluye el valor network_deployment_option
para generar nombres completos (por ejemplo, PHX-AP-LAB02-1-TF-ROOT-MODULE-VCN-01
).
-
Enfoque 1: Módulo raíz de Terraform
Para este enfoque, hemos simplificado la configuración de Terraform. Hemos duplicado el archivo
network.tf
del tutorial 1: Aceleración de la certificación de Oracle Cloud Infrastructure Architect Professional con Terraform en un subdirectorio denominadolab02-demo-flat/
del módulo raíz. Este directorio utiliza dos archivos independientes,network1.tf
ynetwork2.tf
, para automatizar la creación de VCN-01 y VCN-02 para facilitar las pruebas y la comprensión.# 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
-
Enfoque 2: Módulo secundario de Terraform
También puede utilizar un módulo de Terraform predefinido del directorio
lab02-demo-module/
, que convierte el archivonetwork.tf
del módulo raíz en un módulo secundario que cumple las mejores prácticas de IaC. También puede utilizar módulos de Terraform predefinidos desde repositorios públicos como Oracle Cloud Infrastructure Provider, OCI GitHub (terraform-provider-OCI) o módulos internos de Oracle como los disponibles en OCI Live Labs.Defina el valor
network_deployment_option
para reflejar el uso del enfoque Módulo secundario.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" }
Tarea 2: Creación de dos gateways de intercambio de tráfico locales
Opción manual:
Para crear LPG en OCI manualmente, consulte Creación de un gateway de intercambio de tráfico local. En este caso, defina los indicadores is_lpg1_created
y is_lpg2_created
en false
en el archivo de configuración (input.auto.tfvars
o variables.tf
).
Opción automatizada:
Para automatizar la tarea mediante Terraform, defina estos indicadores en true
. Esto indica a Terraform que cree LPG-01 y LPG-02.
# Create 2 Local Peering Gateways (LPG-01 and LPG-02) then peer them.
is_lpg1_created = true
is_lpg2_created = true
El siguiente fragmento de código de Terraform crea tanto LPG-01 como LPG-02 y establece una relación de intercambio de tráfico entre ellos, lo que permite la conectividad privada entre sus redes virtuales en la nube.
# 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
}
Tarea 3: Iniciar una instancia de máquina virtual
Opción manual:
Para iniciar una instancia de VM manualmente mediante la consola de OCI, consulte Creación de una instancia.
Opción automatizada:
Proporcionaremos una automatización del aprovisionamiento de VM mediante una versión simplificada del código de Terraform del tutorial 1: Acelere la certificación de Oracle Cloud Infrastructure Architect Professional con Terraform. Para indicar a Terraform que cree una máquina virtual VM-01, defina el indicador is_instance_created
en true
. El nombre mostrado de la VM incluirá el valor network_deployment_option
(por ejemplo, PHX-AP-LAB02-1-TF-ROOT-MODULE-VM-01
o PHX-AP-LAB02-1-TF-CHILD-MODULE-VM-01
) si la VCN se crea con Terraform.
# Task 3: Launch a VM(VM-01) in the Public Subnet of VCN-01.
is_instance_created = true
El siguiente código de Terraform automatiza la creación de una VM-01, como se muestra en la figura 1 de la subred pública 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"
}
}
Tarea 4: Creación de zonas privadas personalizadas para VCN-01 y VCN-02
Las zonas de DNS privadas de OCI almacenan registros de DNS internos, a los que solo se puede acceder dentro de una VCN. Para comprender los conceptos de DNS, primero mostraremos cómo crear manualmente dos zonas privadas personalizadas. La figura 3 ilustra la creación de una zona de DNS privada zone-a.local
en VCN-01 (PHX-AP-LAB02-1-VCN-01
) y le agrega record
.
Figura 3: cree una zona de DNS privada y asóciela a la VCN-01 y, a continuación, agregue un nuevo registro a la zona
Opción manual:
-
Cree y configure una zona de DNS privada para VCN-01 (
zone-a.local
).-
Vaya a la consola de OCI, vaya a Networking, DNS Management, Zonas y haga clic en Private Zones.
-
Haga clic en Crear zona, introduzca el nombre de zona (
zone-a.local
), seleccione Seleccionar vista privada de DNS existente,PHX-AP-LAB02-1-VCN-01
como VCN asociada y haga clic en Crear. -
Después de crear la zona, vea los registros NS y SOA generados automáticamente.
-
Haga clic en Gestionar registros y seleccione Agregar registro.
-
Introduzca la siguiente información y haga clic en Agregar registro.
- Nombre: introduzca
server01
. - Tipo: seleccione
A - IPv4 Address
. - TTL: introduzca
30 seconds
(desbloquee el campo si es necesario). - Dirección: introduzca
10.0.0.2
.
- Nombre: introduzca
-
Haga clic en Publicar cambios y en Confirmar publicación de cambios.
Notas: espere a que la operación finalice correctamente (el estado cambió de UPDATING a ACTIVE).
-
-
Cree y configure una zona de DNS privada para VCN-02 (
zone-b.local
). Siga los mismos pasos que en la Figura 3 para crear una zona privada para VCN-02 (PHX-AP-LAB02-1-VCN-02
).-
Vaya a Zonas, Zonas privadas y haga clic en Crear zona.
-
Introduzca Nombre como
zone-b.local
, seleccione Seleccionar vista privada de DNS existente,PHX-AP-LAB02-1-VCN-02
como VCN asociada y haga clic en Crear. -
Haga clic en Gestionar registros y seleccione Agregar registro.
-
Introduzca la siguiente información y haga clic en Agregar registro.
- Nombre: introduzca
server01
. - Tipo: seleccione
A - IPv4 Address
. - TTL: introduzca
60 seconds
(desbloquee el campo si es necesario). - Dirección: introduzca
172.16.0.123
.
- Nombre: introduzca
-
Haga clic en Publicar cambios y en Confirmar publicación de cambios.
Notas: si omite un paso de creación manual, genera errores como:
zone not found: 3 (NXDOMAIN)
.
-
Opción automatizada:
En este tutorial también se proporciona un enfoque automatizado avanzado con Ansible. Ansible es una herramienta de automatización de código abierto que gestiona las configuraciones de la infraestructura. En este contexto, un manual de Ansible es una recopilación de tareas que automatizan la creación de zonas de DNS privadas. Para obtener más información, consulte Palabras clave del cuaderno de estrategias de Ansible.
Defina is_task4_automated
en true
en input.auto.tfvars
o en variabes.tf
para disparar una ejecución de Ansible playbook
en playbooks.sh
, automatizando en una sola ejecución la creación de zonas de DNS privadas y la adición de registros.
# Task 4: Create and Configure two DNS zones (zone-a and zone-b).
is_task4_automated = true
Mediante el aprovisionador local-exec
de Terraform, puede ejecutar un cuaderno de estrategias de Ansible para crear automáticamente zone-a.local
en las zonas VCN-01 y zone-b.local
en VCN-02 con sus respectivas zonas records
. Para obtener más información, consulte Source Code: 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"
}
}
Tarea 5: Prueba de la instancia para la zona A asociada
Opción manual:
SSH manual en la instancia de VM para verificar si la instancia de VM está asociada a zone-a.local
.
-
Utilice SSH para acceder a la instancia con la dirección IP pública.
ssh -i <private_ssh_key> <public_ip_address>
-
Busque los registros DNS para
server01.zone-a.local
.host server01.zone-a.local
Salida Esperada:
server01.zone-a.local has address 10.0.0.2
-
Verifique la entrada de zona generada por el sistema.
host -t NS zone-a.local
Salida Esperada:
zone-a.local has NS record vcn-dns.oraclevcn.com.
-
Verifique el registro de autoridad para la zona.
host -t SOA zone-a.local
Salida Esperada:
zone-a.local has SOA record ven-dns.oraclevcn.com. hostmaster.oracle.com. 2 3600 3600 3600 10
-
Observe la diferencia en la resolución de DNS según las vistas de VCN asociadas.
host server01.zone-b.local
Salida Esperada:
server01.zone-b.local not found: 3 (NXDOMAIN)
La salida indica que
zone-b.local
no está asociado a ninguna de las vistas de la VCN.
Opción automatizada:
Defina el indicador is_test_instance_associated_zone_a
en true
para indicar a Terraform que pruebe la asociación VM-01
con zone-a.local
.
# Test Instance for Associated Zone (zone-a.local)
is_test_instance_associated_zone_a = true
El siguiente código de Terraform utiliza el aprovisionador remote-exec
para automatizar la prueba de la asociación 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\"", ]
}
}
Tarea 6: Configuración del solucionador de VCN y adición de la otra vista privada
Opción manual:
Para configurar el solucionador de VCN manualmente, vaya a la página de detalles de VCN-01 en la consola de OCI, seleccione Solucionador de VCN y Vista privada.
Seleccione VCN-02 en el menú desplegable y haga clic en Guardar para guardar los cambios. Espere a que el estado de la página de detalles del solucionador privado cambie de UPDATING a ACTIVE.
Opción automatizada:
Para automatizar la configuración del solucionador de VCN, utilizamos el aprovisionador local-exec
de Terraform para ejecutar la CLI de OCI, los cuadernos de estrategias de Ansible o los módulos de Terraform.
Defina el indicador is_task6_automated
en true
para indicar a Terraform.
is_task6_automated = true
El script bash proporcionado update_resolver.sh
resalta los pasos para actualizar el solucionador privado para VCN-01 y asociar VCN-02 como una vista privada de DNS. Además, un ejemplo de configuración de DNS de Terraform híbrido para OCI está disponible aquí: 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"
}
}
Tarea 7: Prueba de la instancia para la zona B asociada
Opción manual:
Verifique que el servidor se resuelva correctamente después de configurar el solucionador de VCN.
-
Utilice SSH para acceder a la instancia con la dirección IP pública.
ssh -i <private_ssh_key> <public_ip_address>
-
Busque los registros DNS para
server01.zone-a.local
.host server01.zone-b.local
Salida Esperada:
server01.zone-b.local has address 172.16.0.123
Nota: Si la resolución de DNS falla, espere unos minutos para que se apliquen los cambios. Si es necesario, reinicie la instancia.
Opción automatizada:
Defina el indicador is_test_instance_associated_zone_b
en true
para indicar a Terraform que pruebe la asociación de VM-01 con la segunda zona (zone-b.local
) en la segunda VCN (VCN-02).
# Test Instance for Assoicated Zone B
is_test_instance_associated_zone_b = true
El siguiente código utiliza el aprovisionador remote-exec
de Terraform para automatizar la prueba, verificando la asociación de la instancia de VM con 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\"" ]
}
}
Opciones de Despliegue
Exploraremos dos opciones de despliegue:
-
Oracle Resource Manager (ORM), que ofrece una interfaz fácil de utilizar con flujos de trabajo guiados.
-
La CLI de Terraform (Community Edition), que proporciona una gestión flexible y ampliable de los recursos del laboratorio 2 mediante archivos de configuración 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
).
Opción 1: Usar Oracle Resource Manager (ORM)
La figura 4 muestra la creación de la pila de ORM para la creación de recursos de laboratorio 2.
Figura 4: Oracle Resource Manager - Crear pila Lab2 (VCN-01, VCN-02, LPG-01 y LPG-02, VM-01)
Terraform automatiza el aprovisionamiento de infraestructura en siete pasos, como se muestra en la Figura 5: análisis de configuraciones de origen, creación del paquete de plantillas de Terraform, suministro de valores de variables por defecto, creación de pilas ORM, planificación de cambios, aplicación de esos cambios para aprovisionar recursos en OCI y, opcionalmente, destrucción de recursos. La integración de herramientas de integración y despliegue continuos de DevOps como Jenkins u OCI DevOps puede automatizar todo el proceso, lo que proporciona una solución práctica, casi con un clic único.
Figura 5: Flujo de Trabajo de Pila de Oracle Resource Manager (crear, planificar, aplicar y destruir)
Opción 2: uso de la interfaz de línea de comandos (CLI) de Terraform (Community Edition)
La CLI de Terraform es una potente herramienta de infraestructura como código que permite una gestión flexible y ampliable de los recursos en la nube mediante archivos de configuración declarativos. Descargue el código de Terraform desde aquí: OCI-blog-fast-tracking-apcertif-part2.zip y personalice el archivo input.auto.tfvars
con los detalles de OCI (compartment_id
, image_ids
) y siga las instrucciones de README.md
para configurar el entorno, ejecute los comandos terraform init
, terraform plan
y terraform apply
para completar el laboratorio 2.
Hemos incluido scripts bash para cada tarea que establecen previamente los indicadores de Terraform necesarios, lo que reduce los clics y el tiempo de finalización. Estos scripts ofrecen varios niveles de flexibilidad:
-
Ejecución secuencial: a partir de la tarea 1 a 3 (
run_task1-3.sh
yrun_task4.sh
) y, a continuación, avanzando a la tarea 7 (run_task6-7.sh
). -
Orden personalizada: puede hacer una pausa después de la tarea 1 a 3, completar la tarea 4 manualmente, reanudar con la tarea 5 mediante Terraform y, a continuación, ejecutar la tarea 6 manualmente y utilizar un script posterior para completar la tarea 7.
-
Ejecución híbrida: ejecute automáticamente la tarea 1 a 5 (
run_task1-3.sh
,run_task4.sh
y, a continuación,run_task5.sh
) y aproveche la interacción enrun_taks6-7.sh
para pausarla hasta que la tarea 6 se complete manualmente en la consola de OCI antes de reanudar el script para la finalización automática de la tarea 7. -
Totalmente automatizado: puede integrar estas tareas en un pipeline de integración y despliegue continuos para la ejecución con un solo clic en un entorno de producción DevOps.
Básicamente, este paquete proporciona guías y mejores prácticas para configurar DNS privado, simplificar el laboratorio 2 y garantizar una experiencia de aprendizaje fluida con 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
En este tutorial se proporciona un enfoque completo para configurar zonas, vistas y solucionadores de DNS privados en Oracle Cloud Infrastructure (OCI). Ofreció métodos manuales y automatizados para crear, configurar y probar estos componentes. Este enfoque práctico y semiautomatizado garantiza una sólida comprensión de la resolución de DNS en diferentes redes virtuales en OCI.
A través de siete tareas, ha creado dos VCN, establecido LPG, iniciado una VM, configurado dos zonas de DNS personalizadas y verificado la asociación de DNS de VM antes y después de agregar la segunda VCN como una vista privada asociada al solucionador de DNS de la primera VCN.
Pasos Siguientes
Al automatizar el aprovisionamiento de la infraestructura de OCI mediante herramientas de infraestructura como código IaC como Terraform, Ansible, Oracle Resource Manager ORM y scripts de shell bash de la CLI de OCI, este tutorial ayuda a los candidatos a OCI Architect Professional Certification (2024) a acelerar tareas complejas, como las de las configuraciones de DNS de laboratorio 2, de 30 minutos a solo 5 minutos. Este aumento de la eficiencia del tiempo reduce los errores humanos, reduce los costos de gestión de recursos y aumenta las tasas de éxito a escala.
Aprenda Terraform y Ansible y, a continuación, aproveche ORM, la CLI de OCI y los scripts bash para explorar las mejores prácticas de IaC para una gestión eficaz de la infraestructura de OCI.
Enlaces relacionados
Agradecimientos
- Autor: Mahamat H. Guiagoussou (arquitecto principal maestro en la nube)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de formación gratuita en el canal YouTube de Oracle Learning. Además, visita education.oracle.com/learning-explorer para convertirte en un Oracle Learning Explorer.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Configure Private DNS Zones, Views, and Resolvers to Accelerate OCI Architect Professional Certification with Terraform
G19546-01
November 2024