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.
Oracle Cloud Infrastructure Architect Professional-Zertifizierung mit Terraform 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. Dieses Tutorial beschleunigt Ihre Reise, indem Sie Infrastructure as Code (IaC) mit Terraform nutzen.
Abbildung 1 unten zeigt die bereitzustellende OCI-Zielarchitektur. Auf der rechten Seite wird ein strukturierter Ansatz für das OCI Architect Professional Certification-Labor (2024) beschrieben, das in sieben aufeinanderfolgende Schritte unterteilt ist. Durch die Nutzung vordefinierter Terraform-Code-Snippets, die auf die Zertifizierungsprüfungslabors zugeschnitten sind, werden sich wiederholende Aufgaben automatisiert, sodass sich wertvolle Zeit für das Meistern wesentlicher OCI-Konzepte lässt. Dieser Ansatz beschleunigt nicht nur den Abschluss von Labors, sondern fördert auch ein tieferes Verständnis der Plattform.
Abbildung 1: OCI Architecture Professional Certification Lab 1 – Architektur und manueller vs. automatisierter Prozess
Nachteil manueller Methoden
Manuelle Ansätze für die praktischen Übungen zur OCI-Zertifizierungsprüfung können eine erhebliche Hürde darstellen. Einige Nachteile sind:
- Fehleranfällig: Wiederkehrende manuelle Aufgaben erhöhen das Risiko menschlicher Fehler, was zu Tippfehlern, verpassten Schritten und Verzögerungen führt.
- Zeitaufwendig: Komplexe Workflows sind zeitaufwendig, was den Fortschritt behindert und die Praxis einschränkt.
- Nicht skalierbar: Sie müssen kopieren und einfügen, Fehler einleiten und Korrekturmaßnahmen multiplizieren.
- Testen von Engpässen: Die Bewertung manueller Aufgaben ist subjektiv und behindert die genaue Leistungsmessung und Bereitschaft.
- Dokumentationsdefizite: Abhängig von informellem menschlichem Input, inkonsistenten Praktiken und Herausforderungen bei der Aufrechterhaltung von Verfahren.
- Über den manuellen Schmerz hinaus:
- Herkömmliche Methoden erzeugen einen All-or-Nothing-Druck. Ein einzelner verpasster Schritt kann den Fortschritt entgleisen, indem er unnötigen Stress hinzufügt und das wahre Verständnis verdeckt.
- Diese Methoden verwischen die Grenze zwischen wesentlichen Fähigkeiten und obligatorischen Aufgaben. Wertvolle Übungszeit geht bei mühsamer Einrichtung verloren, was das Lernen und die Beherrschung der OCI-Kenntnisse behindert.
Schnellere Bewältigung von OCI-Kompetenzen: Die Kraft der Automatisierung
Dieses Tutorial zeigt, wie Sie die OCI-Zertifizierung beschleunigen können, indem Sie Aufgaben automatisieren, sich auf Kernkompetenzen konzentrieren und die Praxiszeit verkürzen.
Wichtige Vorteile:
- Fokussiertes Lernen: Automatisieren Sie sich wiederholende Aufgaben, sodass Sie Zeit haben, Kernkonzepte zu beherrschen und das Verständnis und die Wissensbindung zu vertiefen.
- On-Demand-Übung: Gewinnen Sie Flexibilität, indem Sie auswählen, welcher Teil der Übungen automatisiert werden soll, das Lerntempo personalisieren und die Bereitschaft beschleunigen.
- Effizienz steigern: Reduzieren Sie die Vorbereitungszeit durch Automatisierung um bis zu 80%.
Weitere Vorteile:
- Skalierbarkeit und Kosteneffektivität: Skalieren Sie die Infrastruktur je nach Bedarf ganz einfach nach oben oder unten, was zu Kosteneinsparungen führt.
- Geringere Fehler: Beseitigen Sie menschliche Fehler, und stellen Sie sicher, dass die Infrastruktur immer sicher und korrekt bereitgestellt wird.
Um Ihren Weg zur OCI Architect Professional Certification (2024) zu beschleunigen, automatisieren wir Lab 1: Oracle Cloud Infrastructure Architect Professional, das in Abbildung 1 mit Terraform dargestellt ist. Dieser automatisierte Ansatz kann auf andere Zertifizierungslabors und Cloud-Bereitstellungen in der realen Welt ausgeweitet werden.
Netzwerksicherheitsgruppe (NSG) als Ingress-Quelle zu einer anderen NSG anstelle von CIDR-Block
In diesem Tutorial werden Netzwerksicherheitsgruppen in OCI untersucht und erläutert, wie sie den Netzwerktraffic in einem virtuellen Cloud-Netzwerk (VCN) granular kontrollieren. Netzwerksicherheitsgruppen fungieren als virtuelle Firewalls und kontrollieren den Netzwerkzugriff auf Ressourcen in einem VCN. Dazu gehören beispielsweise OCI Compute-Instanzen, Kubernetes-Cluster oder Datenbanken. Netzwerksicherheitsgruppen bieten mehr Flexibilität als Sicherheitslisten, da sie die Kontrolle zwischen Ressourcen und nicht nur zwischen Subnetzen ermöglichen.
Halbautomatisierter Hybridansatz in 7 Schritten
Die praktischen Übungen zur OCI Architect Professional-Zertifizierung sind zwar umfassend, können aber zeitaufwendig sein. Ziehen Sie Lab 1: Oracle Cloud Infrastructure Architect Professional in Betracht, das mindestens 25 Minuten dauert. Durch die Automatisierung sich wiederholender Aufgaben wie VCN-, NSG- und Virtual-Machine-(VM-)Erstellung mit Terraform können Sie dieses Mal um bis zu 80% reduzieren und sich auf Kernsicherheitskonzepte anstatt auf mühsame manuelle Schritte konzentrieren. Der vorgeschlagene halbautomatische Ansatz bietet Flexibilität, sodass Sie wählen können, welche Aufgaben automatisiert werden sollen.
Ziele
- Beschleunigen Sie die Vorbereitung der Oracle Cloud Infrastructure Architect Professional-Zertifizierung mit Terraform.
Voraussetzungen
-
Vertrautheit mit den Prinzipien von Infrastructure as Code (IaC) und den wichtigsten Terraform-Features.
-
Grundlegende Terraform-Kenntnisse. Anfänger müssen das Oracle Cloud Infrastructure Architect Professional oder ein beliebiges Anfängerhandbuch wie Terraform for_each: Ein einfaches Tutorial mit Beispielen ausfüllen.
-
Verwendung von OCI Cloud Shell, Oracle Resource Manager (ORM) oder IDE (z.B. Visual Studio) mit Terraform-Plug-in.
Aufgabe 1: Virtual Cloud Network (VCN) erstellen
Manuelle Option:
Mit dem OCI-VCN-Assistenten können Sie Core-Netzwerkressourcen erstellen: VCN, Internetgateway, Routentabelle, Sicherheitsliste, öffentliche und private Subnetze. Weitere Informationen finden Sie unter Virtuelle Netzwerke - Schnellstart.
-
Gehen Sie zur OCI-Konsole, navigieren Sie zu Networking, Virtuelle Cloud-Netzwerke, und erstellen Sie ein neues VCN.
-
Klicken Sie auf VCN-Informationen, und notieren Sie sich die OCIDs für das VCN, das private Subnetz und das öffentliche Subnetz (Abbildung 2).
-
Fügen Sie die OCIDs der Datei
input.auto.tfvars
(oderterraform.tfvars
) hinzu, wie im Abschnitt "Deployment-Optionen" dargestellt.
Standardmäßig ist das Flag create_vcn
deaktiviert (erstellen Sie das VCN manuell über die OCI-Konsole). Erfassen Sie die VCN-OCID und die Subnetz-OCIDs, und fügen Sie sie der Datei input.auto.tfvars
hinzu.
# Step 1a - Create VCN using VCN Wizard (create_vcn flag off)
create_vcn = false
# Copy from the console the VCN OCIDs and subnets (public, Private) OCIDs.
vcn_id = "REPLACE_CREATED_VCN_OCID_HERE"
private_subnet_id = "REPLACE_CREATED_PRIVATE_SUBNET_OCID_HERE"
public_subnet_id = "REPLACE_CREATED_PUBLIC_SUBNET_OCID_HERE"
Abbildung 2: Konsolen-VCN-Ansicht zum Erfassen der VCN-OCID, der OCID des öffentlichen Subnetzes und der OCID des privaten Subnetzes
Automatisierte Option:
Erstellen Sie das VCN mit den folgenden Schritten.
-
Um das VCN und alle Netzwerkressourcen automatisch zu erstellen, setzen Sie das Flag
create_vcn
in der Dateiinput.auto.tfvars
auftrue
. -
Geben Sie VCN, öffentliches Subnetz, CIDR-Blöcke privater Subnetze und Hostnamenspräfix an.
# Step 1b - Create VCN using Terraform. Provided the CIDR Blocks for the # VCN, Subnets and all other required input (host_name_prefix). create_vcn = true # Provide the VCN & Subnet CIDR Blocks as well as host name prefix vcn_cidr_block = "10.0.0.0/16" public_subnet_cidr_block = "10.0.0.0/24" private_subnet_cidr_block = "10.0.1.0/24" host_name_prefix = "phxapl4"
Aufgabe 2: Zwei NSGs erstellen (NSG-01 und NSG-02)
Manuelle Option:
Erstellen Sie zwei NSGs (NSG-01 und NSG-02) mit den folgenden Schritten:
-
Wählen Sie das in Aufgabe 1 erstellte VCN aus.
-
Klicken Sie unter Ressourcen auf Network Security Groups.
-
Klicken Sie auf Netzwerksicherheitsgruppe erstellen, und geben Sie die folgenden Informationen ein.
- Name: Geben Sie einen Namen ein. Beispiel:
<REGION-KEY>-AP-LAB01-NSG-01
. - Create-In-Compartment: Geben Sie das Arbeits-Compartment ein.
- Klicken Sie auf Erstellen.
- Name: Geben Sie einen Namen ein. Beispiel:
-
Wiederholen Sie die Schritte 1 bis 3 für die zweite NSG namens
<REGION-KEY>-AP-LAB01-NSG-02
.
Automatisierte Option:
Der folgende Terraform-Code erstellt zwei NSGs (NSG-01 und NSG-02).
resource "oci_core_network_security_group" "nsg-01" {
count = (var.create_vcn && var.create_nsg_1) ? 1 : 0
#Required
compartment_id = var.compartment_id
vcn_id = var.create_vcn ? oci_core_vcn.this.*.id[0] : var.vcn_id
display_name = "${var.display_name_prefix}-TF-NSG-01"
}
resource "oci_core_network_security_group" "nsg-02" {
count = (var.create_vcn && var.create_nsg_2) ? 1 : 0
#Required
compartment_id = var.compartment_id
vcn_id = var.create_vcn ? oci_core_vcn.this.*.id[0] : var.vcn_id
display_name = "${var.display_name_prefix}-TF-1-NSG-02"
}
Um die beiden NSGs zu erstellen, setzen Sie die Flags create_nsg_1
und create_nsg_2
auf true
.
# Step 2: Create two(2) empty Network Security Groups (NSG-01 & NSG-02).
create_nsg_1 = true
create_nsg_2 = true
Aufgabe 3: Vier VMs mit Terraform starten und Ping-Test für Internet Control Message Protocol (ICMP) ausführen
Es wird davon ausgegangen, dass Sie mit dem manuellen Starten von VMs über die OCI-Konsole vertraut sind. Weitere Informationen finden Sie unter Instanzen erstellen.
Hinweis: Wir behandeln nur die Terraform-Automatisierungsoption zum Erstellen von 4 VMs (3 VMs im öffentlichen Subnetz und 1 VM im privaten Subnetz).
Aktivieren Sie das Flag create_vm_1_3
, um Terraform anzuweisen, drei VMs (VM-01, VM-02 und VM-03) zu erstellen.
# Step 3a: Launch three(3) VMs(VM-01, VM-02, VM-03) in the public subnet.
create_vm_1_3 = true
Um drei Compute-Instanzen innerhalb des öffentlichen Subnetzes zu erstellen, haben wir das Metaargument count
im folgenden Terraform-Code verwendet. Dieser prägnante Ansatz vereinfacht den Erstellungsprozess im Vergleich zum komplexeren for_each
-Metaargument. Wenn Sie count
auf 3 setzen, werden automatisch Instanzen mit den Indizes 0, 1 und 2 generiert, was die Lesbarkeit und Effizienz von Code verbessert.
resource "oci_core_instance" "VM1-3" {
count = (var.create_vm_1_3) ? 3 : 0
availability_domain = "GqIF:PHX-AD-1"
compartment_id = var.compartment_id
create_vnic_details {
assign_ipv6ip = "false"
assign_private_dns_record = "true"
assign_public_ip = "true"
subnet_id = var.create_vcn ? oci_core_subnet.My-Public-Subnet.*.id[0] : var.public_subnet_id
#nsg_ids = (var.create_vcn && var.create_nsg_1) && (count.index == 2) ? [oci_core_network_security_group.nsg-1.*.id[0]] : []
nsg_ids = (var.automate_step_4 && var.create_nsg_1) ? (var.create_vcn ? [oci_core_network_security_group.nsg-1.*.id[0]] : [oci_core_network_security_group.nsg-01.*.id[0]]) : []
}
display_name = "${var.display_name_prefix}-VM-0${count.index + 1}"
metadata = {
"ssh_authorized_keys" = "${file(var.ssh_public_key)}"
}
shape = "VM.Standard.A1.Flex"
shape_config {
memory_in_gbs = "6"
ocpus = "1"
}
source_details {
source_id = var.amper_image_id
source_type = "image"
}
}
Hinweis: Um über SSH auf die öffentlichen VMs zuzugreifen, generieren Sie Ihr eigenes SSH-Schlüsselpaar. Weitere Informationen finden Sie unter SSH-Schlüssel generieren.
Aktivieren Sie als Nächstes das Flag create_vm_4
, um Terraform anzuweisen, VM-04 im privaten Netzwerk zu erstellen.
# Step 3b: Launch the fourth VM (VM-04) in the private subnet.
create_vm_4 = true
Dies ist der Teil des Terraform-Codes, der die vierte Instanz (VM-04) im privaten Subnetz erstellt.
resource "oci_core_instance" "vm-4" {
count = (var.create_vm_4) ? 1 : 0
availability_domain = "GqIF:PHX-AD-1"
compartment_id = var.compartment_id
create_vnic_details {
#assign_ipv6ip = "false"
assign_private_dns_record = "true"
assign_public_ip = "false"
subnet_id = var.create_vcn ? oci_core_subnet.My-Private-Subnet.*.id[0] : var.private_subnet_id
#nsg_ids = (var.create_vcn && var.create_nsg_1) ? [oci_core_network_security_group.nsg-2.*.id[0]] : []
nsg_ids = (var.automate_step_6 && var.create_nsg_2) ? (var.create_vcn ? [oci_core_network_security_group.nsg-2.*.id[0]] : [oci_core_network_security_group.nsg-02.*.id[0]]) : []
}
display_name = "${var.display_name_prefix}-VM-04"
shape = "VM.Standard.A1.Flex"
shape_config {
memory_in_gbs = "6"
ocpus = "1"
}
source_details {
source_id = var.amper_image_id
source_type = "image"
}
}
Manuelles ICMP-Echo-Testing: Beobachtung der Auswirkungen von NSGs auf den Traffic.
-
Gehen Sie zur OCI-Konsole, und navigieren Sie zu Compute und Instanzen. Alle vier Instanzen werden aufgelistet.
-
Notieren Sie sich die öffentlichen IP-Adressen der drei Instanzen (VM-01, VM-02, VM-03).
-
Pingen Sie von Ihrem Computer aus die öffentliche IP-Adresse jeder VM-Instanz.
Erwartete Ergebnisse:
-
Alle Instanzen sind nicht erfolgreich, weil die Sicherheitsliste keine ICMP-Echoregel enthält.
-
Standardsicherheitsregeln erlaubten SSH-Zugriff (Port 22) auf alle öffentlichen VMs.
Automatisiertes ICMP-Echo-Testen: Dieser Test wird mit dem Terraform-local-exec
-Provisioner automatisiert.
-
Wir haben ein Array definiert,
VM1_3
, das drei Elemente enthält, um die drei öffentlichen VMs darzustellen, und eine Variable,icmp_ping_count
, um die Anzahl der Pings anzugeben. -
Der folgende Terraform-Code automatisiert ICMP-Echo-Tests von Ihrem lokalen Rechner nach
VM-02
.resource "null_resource" "icmp_ping_VM2_fromlocal" { depends_on = [oci_core_instance.VM1-3[1]] count = (var.icmp_pingvm2_fromlocal) ? 1 : 0 # Ping VM-02 from local Computer provisioner "local-exec" { command = "ping -c ${var.icmp_ping_count} ${oci_core_instance.VM1-3[1].public_ip}" } }
Bearbeiten Sie die Datei input.auto.tfvars
, um den Wert der Variablen icmp_ping_count
festzulegen. Um das Pingen jeder der drei öffentlichen VMs von Ihrem lokalen Computer zu aktivieren, setzen Sie die icmp_pingvm?_fromlocal
-Flags auf true
(wobei 1, 2 oder 3 für die spezifische VM steht).
# ICMP ping from Local Computer (First Attempt)
icmp_pingvm1_fromlocal = true
icmp_pingvm2_fromlocal = true
icmp_pingvm3_fromlocal = true
Aufgabe 4: ICMP-Ingress-Traffic konfigurieren und vNICs an NSG-01 anhängen
Manuelle Option:
Die folgenden Unteraufgaben, die zur Konfiguration des Traffics zwischen VM-03 und NSG-01 erforderlich sind.
Aufgabe 4.1: Neue Ingress-Regel in Networking hinzufügen
Um die erste NSG (NSG-01) zu aktualisieren, führen Sie die in Abbildung 3 beschriebenen Schritte aus.
-
Wählen Sie Ihr VCN aus.
-
Wählen Sie unter Netzwerksicherheitsgruppen die Option NSG-01 aus, und klicken Sie auf Regeln hinzufügen.
-
Geben Sie die folgenden Informationen ein, und klicken Sie auf Hinzufügen.
- Quelltyp: Geben Sie CIDR ein.
- Quell-CIDR: Geben Sie "
0.0.0.0/0
" ein. - IP-Protokoll: Wählen Sie ICMP.
- Typ: Geben Sie 8 ein.
- Code: Wählen Sie Alle aus.
Abbildung 3: Ingress-Regel zu NSG-01 hinzufügen, um ICMP-Ping aus dem Internet zu ermöglichen
Aufgabe 4.2: Dritte VM (VM-03) so konfigurieren, dass sie auf NSG-01 verweist
Um NSG-01 an die virtuelle Netzwerkschnittstelle VM-03 (VNIC) anzuhängen, führen Sie die in Abbildung 4 beschriebenen Schritte aus.
-
Klicken Sie unter Compute auf Instanzen, VM-03 und Details anzeigen.
-
Wählen Sie die angehängte vNICs aus, und klicken Sie auf Primäre vNIC.
-
Klicken Sie unter vNIC-Informationen neben Netzwerksicherheitsgruppe auf den Link Bearbeiten, und wählen Sie NSG-01 aus.
-
Klicken Sie auf Änderungen speichern.
Abbildung 4: NSG-01 an VM-03 vNIC anhängen
Automatisierte Option:
Gehen Sie zur Datei input.auto.tfvars
, und aktivieren Sie das Flag automate_step_4
.
# Step 4: Add CIDR ingress rule in Network, attach VM-03 vNIC with NSG-01.
automate_step_4 = true
Hinweise:
- Es wird dringend empfohlen, Konfigurationsaufgaben manuell auszuführen, während Sie Terraform für das automatisierte Ressourcen-Provisioning nutzen.
- Wenn Sie sich für die Terraform-Automatisierung entscheiden, denken Sie daran, VMs neu zu erstellen (zerstören und neu erstellen), um NSG-01 erfolgreich an die VM-03 vNIC anzuhängen.
- Unabhängig von der gewählten Option erfordert das Labor ICMP-Ping-Tests.
Manuelle Prüfung: Führen Sie einen zweiten ICMP-Echo-Test (ping) zu den öffentlichen IP-Adressen der VMs VM-01, VM-02 und VM-03 von Ihrem lokalen Computer aus durch.
Ergebnisse:
- Jeder Ping wird scheitern. Nur die dritte Instanz (VM-03) wird erfolgreich antworten.
- VM-03 reagiert auf den Ping, da seine vNIC an NSG-01 angeschlossen ist (Abbildung 4), was eingehenden ICMP-Traffic ermöglicht (Abbildung 3).
Automatisierte Prüfung: Navigieren Sie zur Datei input.auto.tfvars
, und setzen Sie alle icmp_pingvm?_fromlocal
-Flags auf "true" (wobei 1, 2 oder 3 die spezifische VM darstellt).
# ICMP ping from Local Computer (Second Attempt)
icmp_pingvm1_fromlocal = true
icmp_pingvm2_fromlocal = true
icmp_pingvm3_fromlocal = true
Aufgabe 5: ICMP-Ping ausführen, bevor die beiden NSGs verschachtelt werden
Manuelle Option:
Versuchen Sie zunächst, die private IP-Adresse von VM-04 von den drei öffentlichen VMs zu pingen.
- Stellen Sie eine SSH-Verbindung zu allen Compute-Instanzen im öffentlichen Subnetz her (VM-01, VM-02, VM-03).
- Von jedem Server pingen Sie die private IP-Adresse von VM-04.
Erwartete Ergebnisse: Alle Ping-Versuche verlaufen nicht erfolgreich. Um die Konnektivität zu ermöglichen, ist eine verschachtelte NSG-Architektur erforderlich.
Automatisierte Option:
Setzen Sie das Flag icmp_test_from_vm?
für jede öffentliche VM (VM-01, VM-02 und VM-03) auf "true". Ersetzen Sie sie durch die spezifische VM-Nummer (1, 2 oder 3) in jedem Flag-Namen.
# Step 5: SSH to VM-01, VM-02, VM-03 and ping VM-04 (First Attempt).
icmp_test_from_vm1 = true
icmp_test_from_vm2 = true
icmp_test_from_vm3 = true
Bei dieser Option wird der Terraform-Provisioner remote-exec
verwendet, um die ICMP-Tests zu automatisieren. Sie müssen den SSH-Private Key angeben, der dem Public Key entspricht, der beim Erstellen von VMs verwendet wird. Das Shellskript ping_script.sh
iteriert durch die Anzahl der von icmp_ping_count
definierten Ping-Versuche.
resource "null_resource" "icmp_ping_vm4_from_vm1" {
depends_on = [oci_core_instance.VM1-3[0]]
count = (var.icmp_test_from_vm1) ? 1 : 0
connection {
agent = false
host = oci_core_instance.VM1-3[0].public_ip
user = "opc"
private_key = file(var.ssh_private_key)
}
# At this stage we assume that the ping_script.sh is copied under /home/opc
provisioner "remote-exec" {
inline = [
"echo \" PING PRIVATE IP ${oci_core_instance.vm-4[0].private_ip}\"",
"chmod +x ping_script.sh",
"export TARGET_IP=${oci_core_instance.vm-4[0].private_ip}",
"export PING_COUNT=${var.icmp_ping_count}",
"sh ping_script.sh",
]
}
}
Aufgabe 6: Verschachtelte NSGs konfigurieren (NSG-01 und NSG-02)
Manuelle Option:
Konfigurieren Sie die zweite NSG (NSG-02) mit einer Ingress-Regel, die NSG-01 als Quelle angibt, und aktivieren Sie den ICMP-Trafficfluss zwischen den beiden NSGs.
Aufgabe 6.1: Ingress-Regel in Networking hinzufügen (virtuelles Cloud-Netzwerk)
-
Klicken Sie unter Ihrem VCN (VCN-01) auf Sicherheitsregeln.
-
Wählen Sie NSG-02 aus, und klicken Sie auf Regeln hinzufügen.
-
Geben Sie die folgenden Informationen ein, und klicken Sie auf Hinzufügen.
- Quelltyp: Wählen Sie Netzwerksicherheitsgruppe aus.
- Quelle: Geben Sie NSG-01 ein.
- IP-Protokoll: Wählen Sie ICMP.
- Typ: Geben Sie 8 ein.
- Code: Wählen Sie Alle aus.
Abbildung 5: NSG-01 als Quelle zur NSG-02-Ingress-Regel hinzufügen
Aufgabe 6.2: Vierte VM (VM-04) so konfigurieren, dass sie auf NSG-02 verweist
-
Klicken Sie unter vNIC-Informationen der VM-04 (Abbildung 6) neben der NSG auf den Link Bearbeiten, und wählen Sie NSG-02 aus.
-
Klicken Sie auf Änderung speichern.
Abbildung 6: NSG-02 an VM-04 vNIC anhängen
Automatisierte Option:
Um diese Aufgabe zu automatisieren, setzen Sie automate_step_6
in der Datei input.auto.tfvars
auf "true".
# Step 6: Add NSG-01 as ingress rule source, attach NSG-02 to VM04 vNIC.
automate_step_6 = true
Aufgabe 7: Letzte ICMP-Echo-Tests für verschachtelte NSGs ausführen
Manueller End-to-End-Test:
Versuchen Sie erneut, die private IP-Adresse von VM-04 von den öffentlichen VMs zu pingen.
-
Stellen Sie eine SSH-Verbindung zu den drei Instanzen im öffentlichen Subnetz her (VM-01, VM-02, VM-03).
-
Pingen Sie jeweils die private IP von VM-04. Nur VM-03 ist erfolgreich, wie in Abbildung 1 dargestellt.
Erläuterung: Die vNIC von VM-04 unterliegt jetzt den Regeln in NSG-02 und den Regeln der Standardsicherheitsliste. NSG-01 ist als Ingress-Regelquelle für NSG-02 konfiguriert, die Traffic aus dem Internet zulässt.
Automatisierte End-to-End-Tests:
Aktivieren Sie Terraform, um ICMP-Echo-Ping-Tests automatisch auszuführen.
-
Setzen Sie das Flag
icmp_test_from_vm?
für jede der 3 VMs (VM-01, VM-02 und VM-03) auftrue
. -
Wie im linken Teil von Abbildung 1 dargestellt, pingt nur VM-03 VM-04 erfolgreich.
# Step 7: SSH to VM-01, VM-02, VM-03 and ping VM-04 (Second Attempt).
icmp_test_from_vm1 = true
icmp_test_from_vm2 = true
icmp_test_from_vm3 = true
Abbildung 7 zeigt die Ergebnisse mehrerer ICMP-Pingversuche nach dem Herstellen einer SSH-Verbindung zu VM-03. Die Abbildung vergleicht das Ping-Ergebnis vor und nach der Implementierung verschachtelter NSGs.
Abbildung 7: Ping-Ergebnisse vor und nach dem Verschachteln von NSG-02 in NSG-01 und Anhängen von vNICs an VMs
Hinweis: Wenn Sie Terraform verwenden, erstellen Sie VMs nach dem Wechsel von der manuellen Konfiguration neu, um eine ordnungsgemäße Verknüpfung von NSG-02 mit der VM-04 vNIC sicherzustellen.
Deployment-Optionen
Option 1: Terraform-Befehlszeilenschnittstelle (CLI) verwenden (Community Edition)
Bevor Sie die Terrafrom-Befehle ausführen, um Ihre Infrastruktur mit der Terraform-CLI zu planen und bereitzustellen, müssen Sie die bereitgestellte Terraform-Konfiguration mit Ihren spezifischen Umgebungsdetails von Ihrem lokalen Rechner oder remote auf der OCI Cloud Shell aktualisieren. Laden Sie den vollständigen Terraform-Quellcode hier herunter: oci-blog-fast-tracking-apcertif-main.zip. Die einzige Datei, die Sie für Ihre Umgebung anpassen müssen, ist die Datei input.auto.tfvars
(ähnlich benannte Datei ist terraform.tfvars
). Sie können beispielsweise die OCIDs des verwendeten Computerimages (amper_image_id
) und des Compartments (compartment_id
) angeben, in dem die Übungsressourcen erstellt werden (ändern Sie die Standardwerte nur bei Bedarf). Das Package enthält umfassende Anweisungen zum Einrichten Ihrer Umgebung, zum Ausführen von Übungen sowie zum Verständnis von Netzwerk- und Sicherheitskonzepten. Es enthält detaillierte Anleitungen, Tipps und Best Practices, um Ihre OCI Advanced Learning-Erfahrung zu verbessern.
##########################################################################
# Terraform module: Nested NSGs - NSG-01 as Ingress source to NSG-02. #
# #
# Copyright (c) 2024 Oracle Author: Mahamat Hissein Guiagoussou #
##########################################################################
# Working Compartment
compartment_id = "REPLACE_WORKING_COMPARTMENT_OCID_HERE"
# Image OCID - https://docs.oracle.com/en-us/iaas/images/
amper_image_id = "REPLACE_INSTANCE_REGIONAL_IMAGE_OCID_HERE"
# Region based display name prefix
display_name_prefix = "AP-LAB01-1" # Replace with your own prefix
##########################################################################
# Step 1a - Create VCN using VCN Wizard (turn off the create_vcn flag), #
##########################################################################
create_vcn = false
vcn_id = "REPLACE_VCN_OCID_HERE"
private_subnet_id = "REPLACE_PRIVATE_SUBNET_OCID_HERE"
public_subnet_id = "REPLACE_PUBLIC_SUBNET_OCID_HERE"
##########################################################################
# Step 1b - Create VCN using Terraform. Provide the CIDR Blocks for the #
# VCN, Subnets and other required input (host_name_prefix). #
##########################################################################
cvcn_cidr_block = "10.0.0.0/16"
public_subnet_cidr_block = "10.0.0.0/24"
private_subnet_cidr_block = "10.0.1.0/24"
host_name_prefix = "phxapl4"
##########################################################################
# Step 2: Create two(2) empty Network Security Groups: NSG-01 & NSG-02. #
##########################################################################
create_nsg_1 = false
create_nsg_2 = false
##########################################################################
# Step 3a: Launch three VMs(VM-01, VM-02, VM-03) in the public subnet. #
##########################################################################
create_vm_1_3 = false
##########################################################################
# Step 3b: Launch the fouth VM (VM-04) in the private subnet. #
##########################################################################
create_vm_4 = false
# Shape Definition
shape_name = "VM.Standard.A1.Flex"
shape_memory_in_gbs = "6"
shape_numberof_ocpus = "1"
# Ping all public VM from Local Computer
icmp_pingvm1_fromlocal = false
icmp_pingvm2_fromlocal = false
icmp_pingvm3_fromlocal = false
# Compute Instance SSH keys
ssh_public_key = "~/cloudshellkey.pub"
ssh_private_key = "~/cloudshellkey"
# Ping VM-04 from Public VMs (VM-02, VM-02, and VM-03) via SSH
icmp_test_from_vm1 = false
icmp_test_from_vm2 = false
icmp_test_from_vm3 = false
##########################################################################
# Step 4: Add CIDR ingress rule in Network & Attach VM3 vNIC with NSG-01 #
##########################################################################
automate_step_4 = false
##########################################################################
# Step 5: SSH to VM-01, VM-02, VM-03 and ping VM-04 (First Attempt). #
##########################################################################
##########################################################################
# Step 6: Add NSG-01 as ingress rule source, Attach VM4 vNIC with NSG-02 #
##########################################################################
automate_step_6 = false
##########################################################################
# Step 7: SSH to VM-01, VM-02, VM-03 and ping VM-04 (Second Attempt). #
##########################################################################
# Number of time ping is executed
icmp_ping_count = "REPLACE_NUMBER_OF_PING_ATTEMPTS_HERE"
Option 2: Oracle Resource Manager (Variablen-Eingabebeispiele)
Erstellen Sie einen Oracle Resource Manager-Stack, indem Sie Variablen definieren (z.B. amper_image_id
, compartment_id
), Netzwerkressourcen bereitstellen (create_vcn
, create_msg_1/2
), VMs erstellen (create_vm_1_3
, create_vm_4
, shape_name
), ICMP-Pings (icmp_pingvm1_fromlocal
, icmp_test_from_vm1
) und den Plan zum Deployment der Infrastruktur ausführen.
Nächste Schritte
Infrastructure-as-Code-Prinzipien (IaC) unter Verwendung von Terraform verbessern das Infrastrukturmanagement durch beschleunigtes Deployment und verbesserte Sicherheit erheblich. Beispiel: Die manuelle Konfiguration verschachtelter NSGs in der OCI Architect Professional Certification (2024) Lab 1: Become an OCI Architect Professional (2024) dauert in der Regel etwa 25 Minuten.
Durch die Nutzung von Terraform konnten wir den Zeitaufwand für das Provisioning und die Konfiguration komplexer OCI-Ressourcen erheblich reduzieren und einen erheblichen Effizienzgewinn demonstrieren. Dies führt zu messbaren Zeit- und Kosteneinsparungen für OCI-Benutzer, die komplexe Netzwerksicherheitskonfigurationen verwalten. Darüber hinaus fördert IaC die Konsistenz und reduziert das Risiko menschlicher Fehler, was es zu einem wertvollen Modell sowohl für das Lernen als auch für die Implementierungen realer Kunden macht. Um mehr über die Anwendung von IaC mit Terraform oder anderen ähnlichen Tools für Ihre OCI-Automatisierungsanforderungen zu erfahren, sollten Sie die erlernten Prinzipien in den verbleibenden OCI Architect Professional Certification Labs anwenden, während Sie die OCI Reference Architecture und Best Practices untersuchen.
Danksagungen
- Autor - Mahamat Hissein 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.
Accelerate Oracle Cloud Infrastructure Architect Professional Certification with Terraform
G13851-01
August 2024