Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriverti a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Configura zone, viste e risolutori DNS privati per accelerare la certificazione professionale degli architetti OCI con Terraform
Introduzione
Ottenere la certificazione Oracle Cloud Infrastructure (OCI) Architect Professional richiede una conoscenza approfondita di Oracle Cloud e un'esperienza pratica. Questa serie di esercitazioni accelera il tuo percorso sfruttando Infrastructure as Code (IaC) con Terraform e Ansible.
La figura 1 illustra l'architettura da distribuire per la certificazione OCI Architect Professional Lab 2: Oracle Cloud Infrastructure Architect Professional (Oracle University Lab - 6h 14m).
Figura 1: Endpoint LPG (Local Peering Gateway) per creare un nome di dominio DNS privato
Vantaggi principali del DNS privato
Il DNS privato offre diversi vantaggi per gestire e proteggere le tue risorse OCI. Ciò include, a titolo esemplificativo e non esaustivo:
- Organizzazione: utilizza i nomi di dominio preferiti per un'esperienza intuitiva e organizzata.
- Sicurezza: proteggi le risorse riservate filtrando e bloccando l'accesso a domini specifici.
- Bilanciamento del carico: distribuisci il traffico su più server, migliorando le prestazioni e l'affidabilità.
- Ambiente e connettività ibridi: facilita una comunicazione trasparente nel cloud all'interno e tra le reti VCN, nonché tra le reti on-premise e le risorse OCI.
Scopriamo come sfruttare il DNS privato di OCI per gestire domini personalizzati e connettere le risorse tra le reti. Imparerai a creare zone private, definire record e configurare resolver per uso interno, offrendoti il controllo granulare sull'accesso alle risorse all'interno di OCI.
Approccio semi-automatico in sette attività
L'esercitazione ti guiderà nell'automazione di un ambiente scalabile e multi-VCN in OCI con risoluzione DNS privata. Utilizzando la console OCI, Terraform e Ansible, creerai due VCN, stabilirai i peer gateway (LPG) locali tra loro, avvierai un'istanza di virtual machine (VM), configurerai zone DNS private personalizzate e eseguirai un test completo della risoluzione DNS prima e dopo l'impostazione del resolver VCN. Alla fine, avrai un ambiente multi-VCN completamente funzionale con funzionalità DNS private nelle tue reti.
Obiettivi
Questa è la seconda esercitazione della serie che segue l'esercitazione 1: Lab 1: Accelerate Oracle Cloud Infrastructure Architect Professional Certification with Terraform per accelerare la preparazione della certificazione OCI Architect Professional (2024). Sfruttiamo i principi IaC con Terraform e Ansible, concentrandosi sui concetti DNS di base rilevanti per l'esame. Mentre i laboratori pratici di certificazione: Lab 2: Oracle Cloud Infrastructure Architect Professional (Oracle University Lab - 6h 14m) sono completi, Lab 2 può richiedere molto tempo e il completamento manuale può richiedere oltre 30 minuti. L'automazione di attività di routine come la creazione di VCN, subnet pubbliche e private, GPL e VM, riduce notevolmente i tempi di completamento di oltre l'80% come dimostrato nell'esercitazione 1: Accelera la certificazione professionale di Oracle Cloud Infrastructure Architect con Terraform, consentendoti di concentrarti sulla padronanza dei concetti DNS OCI di base.
Prerequisiti
-
Familiarità con i principi IaC, Terraform, Ansible e Oracle Cloud Infrastructure OCI Command Line Interface (OCI CLI).
-
Informazioni sull'uso dei moduli Terraform per eseguire il provisioning dell'infrastruttura OCI. Per ulteriori informazioni, vedere Riutilizza configurazione con moduli.
-
Uso di OCI Cloud Shell, Oracle Resource Manager (ORM) o IDE (ad esempio, Visual Studio).
-
Completa l'ultimo laboratorio: Certificazione OCI Architect Professional e scopri come creare configurazioni VCN Terraform con ORM.
Task 1: Creare due reti cloud virtuali
Opzione manuale:
Puoi creare le VCN manualmente utilizzando OCI Console. Per indicare questa creazione manuale, è necessario inizializzare i flag is_vcn1_created
e is_vcn2_created
in false
.
Per creare risorse di rete di base come VCN, gateway Internet, tabella di instradamento, lista di sicurezza, subnet pubbliche e private, vedere Avvio rapido del networking virtuale.
Figura 2: Viste della console per raccogliere gli OCID della VCN-01/VCN-02 e l'OCID della subnet pubblica VCN-01
Andare alla console OCI, andare a Networking, Reti cloud virtuali e visualizzare i dettagli della VCN-01, prendere nota dell'OCID e dell'OCID della subnet pubblica. Eseguire le stesse operazioni per la VCN-02, annotare i relativi OCID e aggiungere gli OCID raccolti al file di configurazione 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"
Opzione automatizzata:
Inoltre, forniamo due opzioni di automazione per creare la VCN (VCN-01
e VCN-02
): un approccio modulo radice e un approccio modulo figlio. Il primo è più semplice e adatto per lo sviluppo e il test o l'implementazione di VCN una tantum. Il secondo offre una migliore organizzazione e scalabilità per implementazioni più grandi e complesse, promuovendo la riutilizzabilità e la manutenibilità del codice, rendendolo ideale per gli ambienti di produzione.
Per indicare a Terraform di creare le reti VCN, è innanzitutto necessario impostare i flag is_vcn1_created
e is_vcn2_created
su true
in input.auto.tfvars
o come valori predefiniti in variables.tf
. Specificare quindi il blocco CIDR VCN (vcn?_cidr_block
), il blocco CIDR della subnet pubblica (public_subnet?_cidr_block
), il blocco CIDR della subnet privata (private_subnet?_cidr_block
) e il prefisso del nome host (host_name?_prefix
). I nomi delle variabili vengono astratti mediante l'uso del punto interrogativo (?
) come segnaposto. Sostituendo ?
con 1 o 2, definirete configurazioni separate per VCN-01 e VCN-02, rispettivamente.
È inoltre necessario definire i valori per variabili specifiche: oci_regions
(mapping degli identificativi delle aree alle chiavi), network_deployment_option
(TF-ROOT-MODULE
o TF-CHILD-MODULE
) e dipslay_name_prefix
(ad esempio,AP-Lab-02-1
). Il nome visualizzato della VCN finale include il valore network_deployment_option
per generare nomi completi (ad esempio, PHX-AP-LAB02-1-TF-ROOT-MODULE-VCN-01
).
-
Approccio 1: modulo radice Terraform
Per questo approccio, abbiamo semplificato la configurazione di Terraform. Il file
network.tf
è stato duplicato dall'esercitazione 1: Accelerare la certificazione Oracle Cloud Infrastructure Architect Professional con Terraform in una sottodirectory denominatalab02-demo-flat/
all'interno del modulo radice. Questa directory utilizza due file separati,network1.tf
enetwork2.tf
, per automatizzare la creazione della VCN-01 e della VCN-02 per semplificare i test e la comprensione.# 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
-
Approccio 2: modulo figlio Terraform
È inoltre possibile utilizzare un modulo Terraform predefinito dalla directory
lab02-demo-module/
, che converte il filenetwork.tf
del modulo radice in un modulo figlio che aderisce alle procedure ottimali IaC. In alternativa, puoi utilizzare i moduli Terraform predefiniti provenienti da repository pubblici come Oracle Cloud Infrastructure Provider, OCI GitHub (terraform-provider-OCI) o moduli Oracle interni come quelli disponibili in OCI Live Labs.Impostare il valore
network_deployment_option
in modo che rifletta l'utilizzo dell'approccio Child Module.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" }
Task 2: Crea due Local Peering Gateway
Opzione manuale:
Per creare manualmente GPL in OCI, vedere Creazione di un Local Peering Gateway. In questo caso, impostare i flag is_lpg1_created
e is_lpg2_created
su false
nel file di configurazione (input.auto.tfvars
o variables.tf
).
Opzione automatizzata:
Per automatizzare l'attività utilizzando Terraform, impostare questi flag su true
. In questo modo, Terraform dovrà creare 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
Il seguente snippet di codice Terraform crea sia LPG-01 che LPG-02 e stabilisce una relazione di peering tra di essi, abilitando la connettività privata tra le VCN.
# 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
}
Task 3: avviare un'istanza di Virtual Machine
Opzione manuale:
Per avviare manualmente un'istanza VM tramite OCI Console, vedere Creazione di un'istanza.
Opzione automatizzata:
Forniremo un'automazione del provisioning delle VM utilizzando una versione semplificata del codice Terraform dell'esercitazione 1: Accelera la certificazione professionale di Oracle Cloud Infrastructure Architect con Terraform. Per indicare a Terraform di creare una virtual machine VM-01, impostare il flag is_instance_created
su true
. Il nome visualizzato della VM includerà l'impostazione network_deployment_option
(ad esempio, PHX-AP-LAB02-1-TF-ROOT-MODULE-VM-01
o PHX-AP-LAB02-1-TF-CHILD-MODULE-VM-01
) se la VCN viene creata con Terraform.
# Task 3: Launch a VM(VM-01) in the Public Subnet of VCN-01.
is_instance_created = true
Il seguente codice Terraform automatizza la creazione di una VM-01 come mostrato nella Figura 1 all'interno della subnet pubblica 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"
}
}
Task 4: creare zone private personalizzate per la VCN-01 e la VCN-02
Le zone DNS private di OCI memorizzano record DNS interni, accessibili solo all'interno di una VCN. Per comprendere i concetti DNS, mostreremo in primo luogo come creare manualmente due zone private personalizzate. La Figura 3 illustra la creazione di una zona DNS privata zone-a.local
nella VCN-01 (PHX-AP-LAB02-1-VCN-01
) e vi aggiunge una record
.
Figura 3: Creare una zona DNS privata e associarla alla VCN-01, quindi aggiungere un nuovo record alla zona
Opzione manuale:
-
Crea e configura una zona DNS privata per la VCN-01 (
zone-a.local
).-
Andare alla console OCI, andare a Networking, Gestione DNS, Zone e fare clic su Zone private.
-
Fare clic su Crea zona, immettere il nome della zona (
zone-a.local
), selezionare Seleziona vista privata DNS esistente,PHX-AP-LAB02-1-VCN-01
come VCN associata e fare clic su Crea. -
Dopo la creazione della zona, visualizzare i record NS e SOA generati automaticamente.
-
Fare clic su Gestisci record e selezionare Aggiungi record.
-
Immettere le informazioni seguenti e fare clic su Aggiungi record.
- Nome: immettere
server01
. - Tipo: selezionare
A - IPv4 Address
. - TTL: immettere
30 seconds
(se necessario, sbloccare il campo). - Indirizzo: immettere
10.0.0.2
.
- Nome: immettere
-
Fare clic su Pubblica modifiche e su Conferma pubblicazione delle modifiche.
Note: attendere il completamento dell'operazione (stato modificato da UPDATING in ACTIVE).
-
-
Crea e configura una zona DNS privata per la VCN-02 (
zone-b.local
). Attenersi alla stessa procedura della Figura 3 per creare una zona privata per la VCN-02 (PHX-AP-LAB02-1-VCN-02
).-
Passare a Zone, Zone private, quindi fare clic su Crea zona.
-
Immettere il nome come
zone-b.local
, selezionare Seleziona vista privata DNS esistente,PHX-AP-LAB02-1-VCN-02
come VCN associata e fare clic su Crea. -
Fare clic su Gestisci record e selezionare Aggiungi record.
-
Immettere le informazioni seguenti e fare clic su Aggiungi record.
- Nome: immettere
server01
. - Tipo: selezionare
A - IPv4 Address
. - TTL: immettere
60 seconds
(se necessario, sbloccare il campo). - Indirizzo: immettere
172.16.0.123
.
- Nome: immettere
-
Fare clic su Pubblica modifiche e su Conferma pubblicazione delle modifiche.
Note: se si salta un passo di creazione manuale, si generano errori quali:
zone not found: 3 (NXDOMAIN)
.
-
Opzione automatizzata:
Questo tutorial fornisce anche un approccio automatizzato avanzato utilizzando Ansible. Ansible è uno strumento di automazione open source che gestisce le configurazioni per la tua infrastruttura. In questo contesto, un playbook Ansible è una raccolta di attività che automatizzano la creazione di zone DNS private. Per ulteriori informazioni, vedere Parole chiave di Playbook Ansible.
Impostare is_task4_automated
su true
in input.auto.tfvars
o in variabes.tf
per attivare un'esecuzione Ansible playbook
in playbooks.sh
, automatizzando in una singola esecuzione sia la creazione di zone DNS private che l'aggiunta di record.
# Task 4: Create and Configure two DNS zones (zone-a and zone-b).
is_task4_automated = true
Utilizzando il provisioninger local-exec
di Terraform, puoi eseguire una guida Ansible per creare automaticamente zone-a.local
nelle zone VCN-01 e zone-b.local
nella VCN-02 con il rispettivo records
. Per ulteriori informazioni, vedere Codice origine: 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"
}
}
Task 5: eseguire il test dell'istanza per la zona associata A
Opzione manuale:
SSH manuale nell'istanza VM per verificare se l'istanza VM è associata a zone-a.local
.
-
SSH nell'istanza con l'indirizzo IP pubblico.
ssh -i <private_ssh_key> <public_ip_address>
-
Cercare i record DNS per
server01.zone-a.local
.host server01.zone-a.local
Output previsto:
server01.zone-a.local has address 10.0.0.2
-
Verificare la voce della zona generata dal sistema.
host -t NS zone-a.local
Output previsto:
zone-a.local has NS record vcn-dns.oraclevcn.com.
-
Verificare il record autorità per la zona.
host -t SOA zone-a.local
Output previsto:
zone-a.local has SOA record ven-dns.oraclevcn.com. hostmaster.oracle.com. 2 3600 3600 3600 10
-
Osserva la differenza nella risoluzione DNS in base alle viste VCN associate.
host server01.zone-b.local
Output previsto:
server01.zone-b.local not found: 3 (NXDOMAIN)
L'output indica che
zone-b.local
non è associato ad alcuna vista della VCN.
Opzione automatizzata:
Impostare il flag is_test_instance_associated_zone_a
su true
per indicare a Terraform di eseguire il test dell'associazione VM-01
con zone-a.local
.
# Test Instance for Associated Zone (zone-a.local)
is_test_instance_associated_zone_a = true
Il seguente codice Terraform utilizza il provisioninger remote-exec
per automatizzare il test dell'associazione di 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\"", ]
}
}
Task 6: configurare il resolver VCN e aggiungere l'altra vista privata
Opzione manuale:
Per configurare manualmente il resolver VCN, passare alla pagina dei dettagli VCN-01 nella console OCI, selezionare Resolver VCN e Vista privata.
Selezionare VCN-02 dal menu a discesa e fare clic su Salva per salvare le modifiche. Attendere che lo stato della pagina dei dettagli del risolutore privato passi da UPDATING a ACTIVE.
Opzione automatizzata:
Per automatizzare la configurazione del resolver VCN, utilizziamo il provisioninger local-exec
di Terraform per eseguire l'interfaccia CLI OCI, le playbook Ansible o i moduli Terraform.
Impostare il flag is_task6_automated
su true
per indicare a Terraform.
is_task6_automated = true
Lo script bash update_resolver.sh
fornito evidenzia i passi per aggiornare il resolver privato per la VCN-01 e associare la VCN-02 come vista privata DNS. Inoltre, un esempio di configurazione DNS Terraform ibrido per OCI è disponibile qui: 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"
}
}
Task 7: eseguire il test dell'istanza per la zona B associata
Opzione manuale:
Verificare che il server si risolva correttamente dopo aver configurato il resolver VCN.
-
SSH nell'istanza con l'indirizzo IP pubblico.
ssh -i <private_ssh_key> <public_ip_address>
-
Cercare i record DNS per
server01.zone-a.local
.host server01.zone-b.local
Output previsto:
server01.zone-b.local has address 172.16.0.123
Nota: se la risoluzione DNS non riesce, attendere alcuni minuti affinché le modifiche diventino effettive. Se necessario, riavviare l'istanza.
Opzione automatizzata:
Impostare il flag is_test_instance_associated_zone_b
su true
per indicare a Terraform di eseguire il test dell'associazione di VM-01 con la seconda zona (zone-b.local
) nella seconda VCN (VCN-02).
# Test Instance for Assoicated Zone B
is_test_instance_associated_zone_b = true
Il codice seguente utilizza il provisioninger remote-exec
di Terraform per automatizzare il test, verificando l'associazione dell'istanza VM a 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\"" ]
}
}
Opzioni di distribuzione
Esamineremo due opzioni di implementazione:
-
Oracle Resource Manager (ORM), che offre un'interfaccia intuitiva con flussi di lavoro guidati.
-
CLI Terraform (Community Edition), che offre una gestione flessibile e scalabile delle risorse di Lab 2 tramite file di configurazione dichiarativi.
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
).
Opzione 1: utilizzare Oracle Resource Manager (ORM)
La Figura 4 mostra la creazione dello stack ORM per la creazione delle risorse del laboratorio 2.
Figura 4: Oracle Resource Manager - Crea stack Lab2 (VCN-01, VCN-02, LPG-01 e LPG-02, VM-01)
Terraform automatizza il provisioning dell'infrastruttura in sette passi, come mostrato nella Figura 5: analisi delle configurazioni di origine, creazione del package del modello Terraform, fornitura di valori variabili predefiniti, creazione di stack ORM, modifiche alla pianificazione, applicazione di tali modifiche al provisioning delle risorse in OCI e, facoltativamente, eliminazione delle risorse. L'integrazione degli strumenti CI/CD DevOps come Jenkins o OCI DevOps può automatizzare l'intero processo, fornendo una soluzione conveniente vicina a una single-click.
Figura 5: Oracle Resource Manager Stack Workflow (creare, pianificare, applicare ed eliminare)
Opzione 2: utilizzare l'interfaccia CLI (Community Edition) (Terraform Command Line Interface)
L'interfaccia CLI Terraform è un potente strumento infrastructure as code che consente una gestione flessibile e scalabile delle risorse cloud attraverso file di configurazione dichiarativi. Scaricare il codice Terraform da qui: OCI-blog-fast-tracking-apcertif-part2.zip, personalizzare il file input.auto.tfvars
con i dettagli OCI (compartment_id
, image_ids
) e seguire le istruzioni in README.md
per impostare l'ambiente, eseguire i comandi terraform init
, terraform plan
e terraform apply
per completare Lab 2.
Per ogni task sono stati inclusi script bash che preimpostano i flag Terraform necessari, riducendo i clic e i tempi di completamento. Questi script offrono diversi livelli di flessibilità:
-
Esecuzione sequenziale: a partire dal task da 1 a 3 (
run_task1-3.sh
erun_task4.sh
), quindi passando al task 7 (run_task6-7.sh
). -
Ordine personalizzato: è possibile sospendere il task da 1 a 3, completare il task 4 manualmente, riprendere il task 5 utilizzando Terraform, quindi eseguire il task 6 manualmente e utilizzare uno script successivo per completare il task 7.
-
Esecuzione ibrida: eseguire automaticamente i task da 1 a 5 (
run_task1-3.sh
,run_task4.sh
, quindirun_task5.sh
) e utilizzare l'interazione inrun_taks6-7.sh
per sospendere fino al completamento manuale del task 6 in OCI Console prima di riprendere lo script per il completamento automatico del task 7. -
Completamente automatizzato: puoi integrare questi task in una pipeline CI/CD per l'esecuzione con un clic in un ambiente di produzione DevOps.
In sostanza, questo pacchetto fornisce guide e best practice per configurare il DNS privato, semplificando Lab 2 e garantendo un'esperienza di apprendimento fluida con il DNS OCI.
##########################################################################
# 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
Questa esercitazione ha fornito un approccio completo alla configurazione di zone, viste e risolutori DNS privati in Oracle Cloud Infrastructure (OCI). Offriva sia metodi manuali che automatizzati per creare, configurare e testare questi componenti. Questo approccio pratico e semi-automatico garantisce una solida comprensione della risoluzione DNS tra diversi VCN nell'infrastruttura OCI.
Attraverso sette task, hai creato due VCN, stabilito LPG, avviato una VM, configurato due zone DNS personalizzate e verificato l'associazione DNS della VM prima e dopo aver aggiunto la seconda VCN come vista privata associata al resolver DNS della prima VCN.
Passi successivi
Automatizzando il provisioning dell'infrastruttura OCI utilizzando gli strumenti Infrastructure as Code IaC come Terraform, Ansible, Oracle Resource Manager ORM e OCI CLI bash shell scripting, questa esercitazione aiuta i candidati alla certificazione OCI Architect Professional (2024) ad accelerare attività complesse, come quelle nelle configurazioni DNS di Lab 2, da 30 minuti a soli 5 minuti. Questo incremento dell'efficienza temporale riduce gli errori umani, riduce i costi di gestione delle risorse e aumenta i tassi di successo su larga scala.
Impara Terraform e Ansible, quindi utilizza ORM, CLI OCI e script bash per esplorare le migliori pratiche IaC per una gestione efficace dell'infrastruttura OCI.
Collegamenti correlati
Conferme
- Autore - Mahamat H. Guiagoussou (architetto principale del cloud)
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.
Per la documentazione del prodotto, visita l'Oracle Help Center.
Configure Private DNS Zones, Views, and Resolvers to Accelerate OCI Architect Professional Certification with Terraform
G19549-01
November 2024