Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zur Registrierung für einen kostenlosen Account finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Ersetzen Sie diese Werte nach Abschluss der Übung durch Werte, die für Ihre Cloud-Umgebung spezifisch sind.
Konfigurieren Sie private DNS-Zonen, -Ansichten und -Resolver, um die OCI Architect Professional-Zertifizierung mit Terraform zu beschleunigen
Einführung
Um die Oracle Cloud Infrastructure (OCI) Architect Professional-Zertifizierung zu erlangen, sind ein umfassendes Verständnis der Oracle Cloud und praktische Erfahrungen erforderlich. Diese Tutorialreihe beschleunigt Ihren Weg, indem Sie Infrastructure as Code (IaC) mit Terraform und Ansible nutzen.
Abbildung 1 zeigt die Architektur, die für die OCI Architect Professional-Zertifizierung Lab 2: Oracle Cloud Infrastructure Architect Professional (Oracle University Lab - 6h 14m) bereitgestellt werden soll.
Abbildung 1: Lokale Peering-Gateway-(LPG-)Endpunkte zum Erstellen eines privaten DNS-Domainnamens
Private DNS – Hauptvorteile
Das private DNS bietet mehrere Vorteile für die Verwaltung und Sicherung Ihrer OCI-Ressourcen. Dazu gehören unter anderem:
- Organisation: Verwenden Sie bevorzugte Domainnamen für ein intuitives und organisiertes Erlebnis.
- Sicherheit: Schützen Sie sensible Ressourcen, indem Sie den Zugriff auf bestimmte Domains filtern und blockieren.
- Load Balancing: Verteilen Sie Traffic auf mehrere Server, um Performance und Zuverlässigkeit zu verbessern.
- Hybride Umgebung und Konnektivität: Ermöglichen Sie eine nahtlose Kommunikation in der Cloud innerhalb und zwischen VCNs sowie zwischen On-Premise-Netzwerken und OCI-Ressourcen.
Wir lernen, wie Sie das private DNS von OCI nutzen können, um benutzerdefinierte Domains zu verwalten und Ressourcen über Netzwerke hinweg zu verbinden. Sie lernen, wie Sie private Zonen erstellen, Datensätze definieren und Resolver für die interne Verwendung konfigurieren, sodass Sie granulare Kontrolle über den Ressourcenzugriff in OCI erhalten.
Halbautomatisierter Ansatz in sieben Aufgaben
Das Tutorial führt Sie durch die Automatisierung einer skalierbaren und Multi-VCN-Umgebung in OCI mit privater DNS-Auflösung. Mit der OCI-Konsole, Terraform und Ansible erstellen Sie zwei VCNs, richten lokale Peering-Gateways (LPGs) zwischen ihnen ein, starten eine VM-Instanz, konfigurieren benutzerdefinierte private DNS-Zonen und testen die DNS-Auflösung gründlich vor und nach der Einrichtung des VCN-Resolvers. Am Ende verfügen Sie über eine voll funktionsfähige Multi-VCN-Umgebung mit privater DNS-Funktionalität in Ihren Netzwerken.
Ziele
Dies ist das zweite Tutorial der Serie mit folgendem Tutorial 1: Lab 1: Accelerate Oracle Cloud Infrastructure Architect Professional Certification with Terraform, um die Vorbereitung auf die OCI Architect Professional Certification (2024) zu beschleunigen. Wir nutzen die IaC-Prinzipien mit Terraform und Ansible und konzentrieren uns auf die für die Prüfung relevanten DNS-Kernkonzepte. Die praktischen Übungen zur Zertifizierung: Lab 2: Oracle Cloud Infrastructure Architect Professional (Oracle University Lab - 6h 14m) sind zwar umfangreich, die Übung 2 kann jedoch zeitaufwendig sein und dauert mehr als 30 Minuten, um sie manuell abzuschließen. Durch die Automatisierung von Routineaufgaben wie der Erstellung von VCNs, öffentlichen und privaten Subnetzen, LPGs und VMs wird die Abschlusszeit deutlich um über 80% reduziert, wie in Tutorial 1 gezeigt: Beschleunigen Sie die Oracle Cloud Infrastructure Architect Professional-Zertifizierung mit Terraform, sodass Sie sich auf das Mastering der wichtigsten OCI-DNS-Konzepte konzentrieren können.
Voraussetzungen
-
Vertrautheit mit den IaC-Prinzipien, Terraform, Ansible und der OCI-Befehlszeilenschnittstelle (OCI-CLI) von Oracle Cloud Infrastructure.
-
Verständnis der Verwendung von Terraform-Modulen zum Provisioning der OCI-Infrastruktur. Weitere Informationen finden Sie unter Konfiguration mit Modulen wiederverwenden.
-
Verwendung von OCI Cloud Shell, Oracle Resource Manager (ORM) oder IDE (Beispiel: Visual Studio).
-
Führen Sie die letzte Übung aus: OCI Architect Professional Certification, und erfahren Sie, wie Sie VCN-Terraform-Konfigurationen mit ORM erstellen.
Aufgabe 1: Zwei virtuelle Cloud-Netzwerke erstellen
Manuelle Option:
Sie können VCNs manuell mit der OCI-Konsole erstellen. Um diese manuelle Erstellung anzugeben, müssen die Flags is_vcn1_created
und is_vcn2_created
mit false
initialisiert werden.
Informationen zum Erstellen von Core-Netzwerkressourcen wie VCN, Internetgateway, Routentabelle, Sicherheitsliste, öffentlichen und privaten Subnetzen finden Sie unter Virtuelles Networking - Schnellstart.
Abbildung 2: Konsolenansichten zum Erfassen von OCIDs von VCN-01/VCN-02 und OCID des öffentlichen Subnetzes von VCN-01
Gehen Sie zur OCI-Konsole, navigieren Sie zu Networking, Virtuelle Cloud-Netzwerke, und zeigen Sie die Details von VCN-01 an. Notieren Sie sich die OCID und die OCID des zugehörigen öffentlichen Subnetzes. Gleiches gilt für VCN-02, notieren Sie sich die OCIDs, und fügen Sie die erfassten OCIDs der Terraform-Konfigurationsdatei hinzu (input.auto.tfvars
oder 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"
Automatisierte Option:
Außerdem bieten wir zwei Automatisierungsoptionen zum Erstellen des VCN (VCN-01
und VCN-02
): einen Ansatz für das Root-Modul und einen Ansatz für das untergeordnete Modul. Die erste ist einfacher und eignet sich für Entwicklung und Tests oder für das einmalige Deployment von VCNs. Die zweite Lösung bietet eine bessere Organisation und Skalierbarkeit für größere, komplexe Bereitstellungen, fördert die Wiederverwendbarkeit und Wartbarkeit von Code und ist somit ideal für Produktionsumgebungen.
Um Terraform anzuweisen, die VCNs zu erstellen, müssen Sie zunächst die Flags is_vcn1_created
und is_vcn2_created
in input.auto.tfvars
oder als Standardwerte in variables.tf
auf true
setzen. Geben Sie dann den VCN-CIDR-Block (vcn?_cidr_block
), den CIDR-Block des öffentlichen Subnetzes (public_subnet?_cidr_block
), den CIDR-Block des privaten Subnetzes (private_subnet?_cidr_block
) und das Hostnamenspräfix (host_name?_prefix
) an. Variablennamen werden durch die Verwendung eines Fragezeichens (?
) als Platzhalter abstrahiert. Wenn Sie ?
durch 1 oder 2 ersetzen, definieren Sie separate Konfigurationen für VCN-01 bzw. VCN-02.
Außerdem müssen Sie die Werte für bestimmte Variablen definieren: oci_regions
(Zuordnung von Regions-IDs zu Schlüsseln), network_deployment_option
(TF-ROOT-MODULE
oder TF-CHILD-MODULE
) und dipslay_name_prefix
(Beispiel: AP-Lab-02-1
). Der endgültige VCN-Anzeigename enthält den Wert network_deployment_option
, um umfassende Namen zu generieren (Beispiel: PHX-AP-LAB02-1-TF-ROOT-MODULE-VCN-01
).
-
Ansatz 1: Terraform-Root-Modul
Für diesen Ansatz haben wir die Terraform-Konfiguration vereinfacht. Die Datei
network.tf
aus Tutorial 1: Beschleunigen Sie die Oracle Cloud Infrastructure Architect Professional-Zertifizierung mit Terraform in ein Unterverzeichnis mit dem Namenlab02-demo-flat/
im Root-Modul. Dieses Verzeichnis verwendet zwei separate Dateien,network1.tf
undnetwork2.tf
, um die Erstellung von VCN-01 und VCN-02 zu automatisieren, um das Testen und Verständnis zu erleichtern.# 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
-
Ansatz 2: Untergeordnetes Terraform-Modul
Sie können auch ein vordefiniertes Terraform-Modul aus dem Verzeichnis
lab02-demo-module/
verwenden, das die Dateinetwork.tf
des Root-Moduls in ein untergeordnetes Modul konvertiert, das den Best Practices von IaC entspricht. Alternativ können Sie vordefinierte Terraform-Module aus öffentlichen Repositorys wie dem Oracle Cloud Infrastructure-Provider, OCI GitHub (terraform-provider-OCI) oder interne Oracle-Module wie die in OCI Live Labs verfügbaren verwenden.Legen Sie den Wert
network_deployment_option
fest, um die Verwendung des Ansatzes Untergeordnetes Modul widerzuspiegeln.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" }
Aufgabe 2: Zwei lokale Peering-Gateways erstellen
Manuelle Option:
Informationen zum manuellen Erstellen von LPGs in OCI finden Sie unter Lokales Peering-Gateway erstellen. Setzen Sie in diesem Fall die Flags is_lpg1_created
und is_lpg2_created
in der Konfigurationsdatei (input.auto.tfvars
oder variables.tf
) auf false
.
Automatisierte Option:
Um die Aufgabe mit Terraform zu automatisieren, setzen Sie diese Flags auf true
. Dadurch wird Terraform angewiesen, LPG-01 und LPG-02 zu erstellen.
# Create 2 Local Peering Gateways (LPG-01 and LPG-02) then peer them.
is_lpg1_created = true
is_lpg2_created = true
Das folgende Terraform-Code-Snippet erstellt sowohl LPG-01 als auch LPG-02 und stellt eine Peering-Beziehung zwischen diesen her, wodurch private Konnektivität zwischen Ihren VCNs ermöglicht wird.
# 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
}
Aufgabe 3: Virtual-Machine-Instanz starten
Manuelle Option:
Informationen zum manuellen Starten einer VM-Instanz über die OCI-Konsole finden Sie unter Instanzen erstellen.
Automatisierte Option:
Wir werden eine Automatisierung des VM-Provisionings mit einer vereinfachten Version des Terraform-Codes aus Tutorial 1: Beschleunigen Sie die Oracle Cloud Infrastructure Architect Professional-Zertifizierung mit Terraform bereitstellen. Um Terraform anzuweisen, eine virtuelle Maschine VM-01 zu erstellen, setzen Sie das Flag is_instance_created
auf true
. Der Anzeigename der VM enthält die Einstellung network_deployment_option
(z.B. PHX-AP-LAB02-1-TF-ROOT-MODULE-VM-01
oder PHX-AP-LAB02-1-TF-CHILD-MODULE-VM-01
), wenn das VCN mit Terraform erstellt wird.
# Task 3: Launch a VM(VM-01) in the Public Subnet of VCN-01.
is_instance_created = true
Der folgende Terraform-Code automatisiert die Erstellung einer VM-01-Instanz, wie in Abbildung 1 im öffentlichen Subnetz VCN-01 dargestellt.
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"
}
}
Aufgabe 4: Benutzerdefinierte private Zonen für VCN-01 und VCN-02 erstellen
In den privaten DNS-Zonen von OCI werden interne DNS-Datensätze gespeichert, auf die nur innerhalb eines VCN zugegriffen werden kann. Um die DNS-Konzepte zu verstehen, wird zunächst gezeigt, wie Sie zwei benutzerdefinierte private Zonen manuell erstellen. Abbildung 3 zeigt die Erstellung einer privaten DNS-Zone zone-a.local
in VCN-01 (PHX-AP-LAB02-1-VCN-01
) und das Hinzufügen einer record
.
Abbildung 3: Private DNS-Zone erstellen und mit VCN-01 verknüpfen und dann der Zone einen neuen Datensatz hinzufügen
Manuelle Option:
-
Erstellen und konfigurieren Sie eine private DNS-Zone für VCN-01 (
zone-a.local
).-
Gehen Sie zur OCI-Konsole, navigieren Sie zu Networking, DNS-Management, Zonen, und klicken Sie auf Private Zonen.
-
Klicken Sie auf Zone erstellen, geben Sie den Zonennamen ein (
zone-a.local
), wählen Sie Vorhandene private DNS-Ansicht auswählen,PHX-AP-LAB02-1-VCN-01
als zugehöriges VCN aus, und klicken Sie auf Erstellen. -
Nachdem die Zone erstellt wurde, zeigen Sie die automatisch generierten NS- und SOA-Datensätze an.
-
Klicken Sie auf Datensätze verwalten, und wählen Sie Datensatz hinzufügen aus.
-
Geben Sie die folgenden Informationen ein, und klicken Sie auf Datensatz hinzufügen.
- Name: Geben Sie
server01
ein. - Typ: Wählen Sie
A - IPv4 Address
aus. - TTL: Geben Sie
30 seconds
ein (entsperren Sie das Feld gegebenenfalls). - Adresse: Geben Sie
10.0.0.2
ein.
- Name: Geben Sie
-
Klicken Sie auf Änderungen veröffentlichen und Veröffentlichen von Änderungen bestätigen.
Hinweise: Warten Sie, bis der Vorgang erfolgreich abgeschlossen wurde (Status wurde von UPDATING in ACTIVE geändert).
-
-
Erstellen und konfigurieren Sie eine private DNS-Zone für VCN-02 (
zone-b.local
). Führen Sie dieselben Schritte wie in Abbildung 3 aus, um eine private Zone für VCN-02 (PHX-AP-LAB02-1-VCN-02
) zu erstellen.-
Navigieren Sie zu Zonen, Private Zonen, und klicken Sie auf Zone erstellen.
-
Geben Sie Name als
zone-b.local
ein, wählen Sie Vorhandene private DNS-Ansicht auswählen,PHX-AP-LAB02-1-VCN-02
als verknüpftes VCN aus, und klicken Sie auf Erstellen. -
Klicken Sie auf Datensätze verwalten, und wählen Sie Datensatz hinzufügen aus.
-
Geben Sie die folgenden Informationen ein, und klicken Sie auf Datensatz hinzufügen.
- Name: Geben Sie
server01
ein. - Typ: Wählen Sie
A - IPv4 Address
aus. - TTL: Geben Sie
60 seconds
ein (entsperren Sie das Feld gegebenenfalls). - Adresse: Geben Sie
172.16.0.123
ein.
- Name: Geben Sie
-
Klicken Sie auf Änderungen veröffentlichen und Veröffentlichen von Änderungen bestätigen.
Hinweise: Wenn Sie einen manuellen Erstellungsschritt überspringen, führt dies zu Fehlern wie:
zone not found: 3 (NXDOMAIN)
.
-
Automatisierte Option:
Dieses Tutorial bietet auch einen erweiterten automatisierten Ansatz mit Ansible. Ansible ist ein Open-Source-Automatisierungstool, das Konfigurationen für Ihre Infrastruktur verwaltet. In diesem Zusammenhang ist ein Ansible-Spielbuch eine Sammlung von Aufgaben, mit denen die Erstellung privater DNS-Zonen automatisiert wird. Weitere Informationen finden Sie unter Ansible-Playbook-Schlüsselwörter.
Setzen Sie is_task4_automated
in input.auto.tfvars
oder in variabes.tf
auf true
, um eine Ansible playbook
-Ausführung in playbooks.sh
auszulösen. Dabei werden sowohl die Erstellung privater DNS-Zonen als auch das Hinzufügen von Datensätzen in einer einzelnen Ausführung automatisiert.
# Task 4: Create and Configure two DNS zones (zone-a and zone-b).
is_task4_automated = true
Mit dem local-exec
-Provisioner von Terraform können Sie ein Ansible-Playbook ausführen, um zone-a.local
automatisch in den Zonen VCN-01 und zone-b.local
in VCN-02 mit dem entsprechenden records
zu erstellen. Weitere Informationen finden Sie unter Quellcode: 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"
}
}
Aufgabe 5: Instanz auf verknüpfte Zone A testen
Manuelle Option:
Stellen Sie manuell eine SSH-Verbindung zur VM-Instanz her, um zu prüfen, ob Ihre VM-Instanz mit zone-a.local
verknüpft ist.
-
Stellen Sie mit der öffentlichen IP-Adresse eine SSH-Verbindung zur Instanz her.
ssh -i <private_ssh_key> <public_ip_address>
-
Suchen Sie nach DNS-Datensätzen für
server01.zone-a.local
.host server01.zone-a.local
Erwartete Ausgabe:
server01.zone-a.local has address 10.0.0.2
-
Prüfen Sie den vom System generierten Zoneneintrag.
host -t NS zone-a.local
Erwartete Ausgabe:
zone-a.local has NS record vcn-dns.oraclevcn.com.
-
Prüfen Sie den Berechtigungsdatensatz für die Zone.
host -t SOA zone-a.local
Erwartete Ausgabe:
zone-a.local has SOA record ven-dns.oraclevcn.com. hostmaster.oracle.com. 2 3600 3600 3600 10
-
Beobachten Sie den Unterschied in der DNS-Auflösung basierend auf den verknüpften VCN-Views.
host server01.zone-b.local
Erwartete Ausgabe:
server01.zone-b.local not found: 3 (NXDOMAIN)
Die Ausgabe gibt an, dass
zone-b.local
mit keiner der VCN-Ansichten verknüpft ist.
Automatisierte Option:
Setzen Sie das Flag is_test_instance_associated_zone_a
auf true
, um Terraform anzuweisen, die VM-01
-Verknüpfung mit zone-a.local
zu testen.
# Test Instance for Associated Zone (zone-a.local)
is_test_instance_associated_zone_a = true
Der folgende Terraform-Code verwendet den remote-exec
-Provisioner, um das Testen der VM-01-Zonenverknüpfung zu automatisieren.
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\"", ]
}
}
Aufgabe 6: VCN-Resolver konfigurieren und andere private Ansicht hinzufügen
Manuelle Option:
Um den VCN-Resolver manuell zu konfigurieren, navigieren Sie zur Detailseite VCN-01 in der OCI-Konsole, und wählen Sie VCN-Resolver und Private Ansicht aus.
Wählen Sie im Dropdown-Menü die Option VCN-02, und klicken Sie auf Speichern, um die Änderungen zu speichern. Warten Sie, bis der Status der Detailseite des privaten Resolvers von AKTIV in AKTIV geändert wird.
Automatisierte Option:
Zur Automatisierung der VCN-Resolver-Konfiguration nutzen wir den local-exec
-Provisioner von Terraform, um OCI-CLI-, Ansible-Playbooks oder Terraform-Module auszuführen.
Setzen Sie das Flag is_task6_automated
auf true
, um Terraform anzuweisen.
is_task6_automated = true
Das angegebene bash-Skript update_resolver.sh
hebt die Schritte hervor, mit denen der private Resolver für VCN-01 aktualisiert und VCN-02 als private DNS-Ansicht verknüpft wird. Darüber hinaus ist hier ein hybrides Terraform-DNS-Konfigurationsbeispiel für OCI verfügbar: 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"
}
}
Aufgabe 7: Instanz auf verknüpfte Zone B testen
Manuelle Option:
Stellen Sie sicher, dass der Server nach der Konfiguration des VCN-Resolvers ordnungsgemäß aufgelöst wird.
-
Stellen Sie mit der öffentlichen IP-Adresse eine SSH-Verbindung zur Instanz her.
ssh -i <private_ssh_key> <public_ip_address>
-
Suchen Sie nach DNS-Datensätzen für
server01.zone-a.local
.host server01.zone-b.local
Erwartete Ausgabe:
server01.zone-b.local has address 172.16.0.123
Hinweis: Wenn die DNS-Auflösung nicht erfolgreich verläuft, warten Sie einige Minuten, bis die Änderungen wirksam werden. Starten Sie die Instanz bei Bedarf neu.
Automatisierte Option:
Setzen Sie das Flag is_test_instance_associated_zone_b
auf true
, um Terraform anzuweisen, die Verknüpfung von VM-01 mit der zweiten Zone (zone-b.local
) im zweiten VCN (VCN-02) zu testen.
# Test Instance for Assoicated Zone B
is_test_instance_associated_zone_b = true
Der folgende Code automatisiert den Test mit dem remote-exec
-Provisioner von Terraform und prüft die Verknüpfung der VM-Instanz mit 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\"" ]
}
}
Deployment-Optionen
Wir untersuchen zwei Bereitstellungsoptionen:
-
Der Oracle Resource Manager (ORM) bietet eine benutzerfreundliche Oberfläche mit geführten Workflows.
-
Die Terraform-CLI (Community Edition), die eine flexible und skalierbare Verwaltung von Lab 2-Ressourcen über deklarative Konfigurationsdateien bereitstellt.
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
).
Option 1: Oracle Resource Manager (ORM) verwenden
Abbildung 4 zeigt die ORM-Stackerstellung für die Erstellung von Ressourcen der Übung 2.
Abbildung 4: Oracle Resource Manager - Lab2-Stack erstellen (VCN-01, VCN-02, LPG-01 und LPG-02, VM-01)
Terraform automatisiert das Infrastruktur-Provisioning in sieben Schritten, wie in Abbildung 5 dargestellt: Quellkonfigurationen analysieren, das Terraform-Vorlagenpackage erstellen, Standardvariablenwerte bereitstellen, ORM-Stacks erstellen, Änderungen planen, diese Änderungen auf das Provisioning von Ressourcen in OCI anwenden und optional Ressourcen zerstören. Durch die Integration von DevOps CI/CD-Tools wie Jenkins oder OCI DevOps kann der gesamte Prozess automatisiert werden. So erhalten Sie eine bequeme Lösung mit nahezu einfachem Klick.
Abbildung 5: Oracle Resource Manager-Stackworkflow (Erstellen, Planen, Anwenden und Löschen)
Option 2: Terraform-Befehlszeilenschnittstelle (CLI) verwenden (Community Edition)
Die Terraform-CLI ist ein leistungsstarkes Infrastructure-as-Code-Tool, das eine flexible und skalierbare Verwaltung von Cloud-Ressourcen über deklarative Konfigurationsdateien ermöglicht. Laden Sie den Terraform-Code hier herunter: OCI-blog-fast-tracking-apcertif-part2.zip, passen Sie die Datei input.auto.tfvars
mit Ihren OCI-Details an (compartment_id
, image_ids
). Befolgen Sie die Anweisungen in README.md
, um die Umgebung einzurichten, führen Sie die Befehle terraform init
, terraform plan
und terraform apply
aus, um die Übung 2 abzuschließen.
Wir haben bash-Skripte für jede Aufgabe integriert, mit der die erforderlichen Terraform-Flags vordefiniert werden, wodurch Klicks und Abschlusszeiten reduziert werden. Diese Skripte bieten mehrere Flexibilitätsebenen:
-
Sequenzielle Ausführung: Beginnen Sie mit der Aufgabe 1 bis 3 (
run_task1-3.sh
undrun_task4.sh
), und fahren Sie dann mit der Aufgabe 7 (run_task6-7.sh
) fort. -
Benutzerdefinierte Reihenfolge: Sie können nach Aufgabe 1 bis 3 anhalten, Aufgabe 4 manuell abschließen, mit Aufgabe 5 mit Terraform fortfahren, Aufgabe 6 manuell ausführen und anschließend Aufgabe 7 mit einem nachfolgenden Skript abschließen.
-
Hybride Ausführung: Führen Sie die Aufgabe 1 bis 5 automatisch aus (
run_task1-3.sh
,run_task4.sh
,run_task5.sh
), und nutzen Sie die Interaktion inrun_taks6-7.sh
, um anzuhalten, bis Aufgabe 6 manuell in der OCI-Konsole abgeschlossen ist, bevor Sie das Skript für die automatische Fertigstellung von Aufgabe 7 fortsetzen. -
Vollständig automatisiert: Sie können diese Aufgaben in eine CI/CD-Pipeline integrieren, um sie mit einem Klick in einer DevOps-Produktionsumgebung auszuführen.
Im Wesentlichen enthält dieses Paket Leitfäden und Best Practices für die Konfiguration von privatem DNS, die Vereinfachung von Übung 2 und die Gewährleistung einer reibungslosen Lernerfahrung mit 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
Dieses Tutorial bietet einen umfassenden Ansatz für die Konfiguration privater DNS-Zonen, -Ansichten und -Resolver in Oracle Cloud Infrastructure (OCI). Es bot sowohl manuelle als auch automatisierte Methoden zum Erstellen, Konfigurieren und Testen dieser Komponenten. Dieser praktische, halbautomatisierte Ansatz gewährleistet ein solides Verständnis der DNS-Auflösung über verschiedene VCNs in OCI hinweg.
Mit sieben Aufgaben haben Sie zwei VCNs erstellt, LPGs eingerichtet, eine VM gestartet, zwei benutzerdefinierte DNS-Zonen konfiguriert und die verifizierte VM-DNS-Verknüpfung vor und nach dem Hinzufügen des zweiten VCN als verknüpfte private Ansicht zum DNS-Resolver des ersten VCN verifiziert.
Nächste Schritte
Durch die Automatisierung des OCI-Infrastruktur-Provisionings mit Infrastructure-as-Code-IaC-Tools wie Terraform, Ansible, Oracle Resource Manager ORM und OCI-CLI-bash-Shellskripting unterstützt dieses Tutorial OCI Architect Professional Certification-(2024-)Kandidaten dabei, komplexe Aufgaben wie die in Lab 2-DNS-Konfigurationen von 30 Minuten auf nur 5 Minuten zu beschleunigen. Diese Effizienzsteigerung reduziert menschliche Fehler, senkt die Kosten für das Ressourcenmanagement und erhöht die Erfolgsraten in großem Maßstab.
Lernen Sie Terraform und Ansible kennen, und nutzen Sie dann ORM, OCI-CLI und bash-Scripting, um die besten IaC-Praktiken für ein effektives OCI-Infrastrukturmanagement zu erkunden.
Verwandte Links
Danksagungen
- Autor - Mahamat H. Guiagoussou (Master Principal Cloud Architect)
Weitere Lernressourcen
Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie im Oracle Learning YouTube-Channel auf weitere kostenlose Lerninhalte zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Configure Private DNS Zones, Views, and Resolvers to Accelerate OCI Architect Professional Certification with Terraform
G19545-01
November 2024