Hinweis:

Reservierte IP mit Terraform und cloud-init-Skript an eine Oracle Cloud Infrastructure Compute-Instanz anhängen

Einführung

In der Welt von Infrastructure-as-Code (IaC) ist die Automatisierung von Provisioning und Konfiguration von Compute-Instanzen für effiziente und skalierbare Cloud-Deployments unerlässlich. Beim Anhängen reservierter IP-Adressen an Oracle Cloud Infrastructure-(OCI-)Compute-Instanzen bieten Terraform und cloud-init eine leistungsstarke Kombination.

Im OCI Compute-Terraform-Modul können Sie beim Erstellen der Instanz keine reservierte IP an eine Compute-Instanz anhängen. Reservierte IP kann nur nach dem Erstellen der Instanz angehängt werden. In diesem Blogpost erfahren Sie, wie Sie mit Terraform- und cloud-init-Skript nahtlos eine reservierte IP an eine OCI Compute-Instanz anhängen.

Zielsetzung

Hängen Sie eine reservierte IP nahtlos mit Terraform und dem cloud-init-Skript an eine OCI Compute-Instanz an.

Was ist eine reservierte IP?

Eine reservierte IP-Adresse ist eine statische IP-Adresse, die einer Compute-Instanz in einem virtuellen Netzwerk zugewiesen wird. Sie stellt konsistente Konnektivität für Anwendungen sicher, die eine feste IP erfordern, und vereinfacht die Netzwerkadministration. Reservierte IPs werden häufig in Szenarios wie Load Balancing, Firewallregeln und sicherer Netzwerkkommunikation verwendet.

Voraussetzungen

Zunächst benötigen Sie Zugriff auf eine OCI-Umgebung. Wenn Sie noch keine Instanz haben, können Sie ganz einfach Ihre Instanz vom Typ "Immer kostenlos" erstellen. Die Instanz verfügt über zahlreiche freie Kapazitäten und einen Testguthaben von 300 US-Dollar.

Stellen Sie bei einer Umgebung sicher, dass der Benutzer einer Gruppe mit Berechtigungen zum Verwalten der Instanzfamilienressourcen und der Speicherfamilie zugewiesen wurde. In einer Best Practice zur Sicherheit können Sie einen Benutzer erstellen, anstatt einen Konsolenbenutzer zu verwenden, dem bereits Berechtigungen zugewiesen sind. Wenn Sie Hilfe benötigen, lesen Sie die Dokumente, um eine Gruppe zu erstellen und Benutzern die entsprechenden Berechtigungen zu erteilen.

  1. OCI-Account
  2. Terraform-Zugriff. Weitere Informationen erhalten Sie unter diesem Link.
  3. Öffentliches Subnetz, in dem die Instanz gestartet wird. Dies muss mit einem Internetgateway verknüpft werden.
  4. Privates Subnetz, in dem die sekundäre VNIC erstellt wird und die reservierte IP zuweist. Diese muss an ein Servicegateway angehängt werden.
  5. Dynamische Gruppe, bei der die Ressourcen in der Gruppe die Berechtigungen zur Verwaltung der Netzwerkfamilie benötigen.
  6. Policys müssen für die Authentifizierung des Instanz-Principals konfiguriert werden.

Aufgabe 1: Terraform-Skript einrichten

Hier wird ein cloud-init-Skript als Metadaten zu einem OCI Terraform-Modul "Compute-Instanz erstellen" hinzugefügt. Außerdem übergeben wir die OCID der reservierten IP- und des privaten Subnetzes als Freiformtags an die Compute-VM.

resource "oci_core_public_ip" "pubip" {
  # In case of Multiple Instances has to be created, Provide the count in the vars file.
  # This block creates a Reserved Public IP from Oracle IP Pool
  count = var.instance_count
  compartment_id = var.compartment_id
  display_name   = var.res_ip_display_name
  lifetime       = "RESERVED"
  private_ip_id  = ""
}

resource "oci_core_instance" "pubiptest" {
  count = var.instance_count
  compartment_id      = var.compartment_id
  availability_domain = data.oci_identity_availability_domains.ads.availability_domains[0].name
  display_name        = var.display_name
  shape               = var.shape

  # We will pass Reserved Public IP OCID and Private Subnet OCID as a freeform tags to the instance
  freeform_tags = {
    "publicIP" = resource.oci_core_public_ip.pubip[count.index].id
    "SubnetId" = var.private_subnet_id
    }

  create_vnic_details {
    display_name     = var.vnic_display_name
    assign_public_ip = true
    subnet_id        = var.public_subnet_id
  }

  source_details {
    source_type = var.source_type
    source_id   = var.source_id
  }

  metadata = {
    ssh_authorized_keys = var.pub_key
    user_data = "${base64encode(file("./cloud-init.sh"))}"
  }
}

Das obige Skript erstellt eine reservierte IP (über den Wert der Zählvariable) und startet eine Compute-Instanz mit ephemerer IP, die an die primäre VNIC angehängt wird.

In den Compute-Metadaten übergeben wir das cloud-init-Skript, mit dem die reservierte IP durch Ersetzen der vorhandenen ephemeren IP zugewiesen wird.

Aufgabe 2: cloud-init-Skript verstehen

Aufgabe 2.1: OCI CLI und andere erforderliche Tools installieren

Verwenden Sie den folgenden Befehl, um OCI CLI und jq zu installieren (JSON wird geparst).

`sudo yum install -y python36-oci-cli jq`

Aufgabe 2.2: Instanzmetadaten abrufen

Aufgabe 2.3: Sekundäre VNIC anhängen

Hängen Sie die sekundäre VNIC an die Compute-VM an, die das private Subnetz verwendet, indem Sie den folgenden Befehl ausführen.

oci compute instance attach-vnic --instance-id $instanceid --subnet-id $subnetid --auth instance_principal --wait

Aufgabe 2.4: Routen konfigurieren

Aufgabe 2.5: Sekundäre VNIC-Route als Standardroute festlegen

Aufgabe 2.6: Ephemere öffentliche IP löschen

Aufgabe 2.7: Reservierte IP anhängen

Die öffentliche IP-OCID stammt aus Freiformtags, und die ephermere IP wurde gelöscht. Daher können Sie die reservierte IP an die primäre VNIC anhängen. Der folgende Befehl hängt die reservierte IP an die primäre VNIC der Instanz an.

assign=$(oci network public-ip update --force --auth instance_principal --public-ip-id $publicIp --private-ip-id $privateIpId --wait-for-state ASSIGNED)

Aufgabe 2.8: Sekundäre VNIC trennen

Nächste Schritte

Hierbei handelt es sich um eine Beispielimplementierung, in der die entsprechenden Änderungen vorgenommen werden, bevor Sie diese als cloud-init-Skript verwenden. Dieser Test wurde mit Oracle Linux 8 durchgeführt.

Wenn Sie einen anderen Linux-Geschmack wählen, ändert sich die Installationsprozedur oci-cli. Weitere Details finden Sie unter CLI installieren.

Danksagungen

Autor - Rithesh Subramanian (OCI Cloud Architect)

Weitere Lernressourcen

Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube-Kanal zu. Besuchen Sie außerdem die Website education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.

Produktdokumentation finden Sie im Oracle Help Center.