Einfache Infrastruktur mit OCI Terraform einrichten

Mit Terraform können Sie eine einfache Infrastruktur in Ihrem Oracle Cloud Infrastructure-Account einrichten.

Zu den wichtigsten Aufgaben gehören:

  • Kopieren Sie vorhandene Skripte aus anderen Terraform-Tutorials.
  • Bearbeiten Sie die Skripte, um alle Ressourcen in einem Verzeichnis zu kombinieren.
  • Führen Sie einen apply-Befehl aus, um die folgenden Ressourcen zu erstellen:
    • ein Compartment
    • ein virtuelles Cloud-Netzwerk
    • eine Compute-Instanz
Ein Diagramm der Komponenten, die zum Erstellen einer einfachen Infrastruktur mit Terraform erforderlich sind. In einer lokalen Linux-Umgebung erstellt der Benutzer ein virtuelles Cloud-Netzwerk mit Terraform. Dieses Netzwerk verfügt über ein öffentliches Subnetz und eine Compute-Instanz, auf die über das Internet zugegriffen werden kann. Das Netzwerk verfügt außerdem über ein privates Subnetz, das über ein NAT-Gateway eine Verbindung zum Internet und eine private Verbindung zum Oracle Services Network herstellt. Der CIDR-Block für das virtuelle Cloud-Netzwerk ist 10.0.0.0/16, für das öffentliche Subnetz 10.0.0.0/24 und für das private Subnetz 10.0.1.0/24. Ein Diagramm eines Benutzers, der von einem lokalen Rechner mit einem Oracle Cloud Infrastructure-Mandanten verbunden ist.

Weitere Informationen finden Sie unter:

Bevor Sie beginnen

Für eine erfolgreiche Ausführung des Tutorials benötigen Sie Folgendes:

Anforderungen

1. Vorbereiten

Kopieren Sie die Skripte, die Sie in vorherigen Terraform-Tutorials erstellt haben, in ein neues Verzeichnis.

Deklarierte Ressourcen kopieren
  1. Erstellen Sie im Verzeichnis $HOME ein Verzeichnis mit dem Namen tf-simple-infrastructure, und wechseln Sie zu diesem Verzeichnis.
    mkdir tf-simple-infrastructure
    cd tf-simple-infrastructure
  2. Kopieren Sie die Terraform-Skripte aus dem Verzeichnis tf-provider.
    cp ../tf-provider/*.tf .
    Hinweis

    Kopieren Sie nicht die Statusdateien (terraform.tfstate oder terraform.tfstate.backup). Diese Dateien enthalten den Ressourcenstatus ihres aktuellen Verzeichnisses. Nachdem Sie die Skripte in diesem neuen Verzeichnis ausgeführt haben, erhalten Sie eine neue Statusdatei.
  3. Benennen Sie die Datei outputs.tf in outputs1.tf um.
    mv outputs.tf outputs1.tf
  4. Kopieren Sie die Terraform-Skripte aus dem Verzeichnis tf-compartment.
    cp ../tf-compartment/*.tf .
    Hinweis

    Da Sie nur eine Providerdatei pro Verzeichnis benötigen, geschieht nichts, wenn der "copy"-Befehl eine provider.tf-Datei durch eine andere ersetzt.
  5. Benennen Sie die Datei outputs.tf in outputs2.tf um.
    mv outputs.tf outputs2.tf
  6. Kopieren Sie die Terraform-Skripte aus dem Verzeichnis tf-compute.
    cp ../tf-compute/*.tf .
  7. Benennen Sie die Datei outputs.tf in outputs3.tf um.
    mv outputs.tf outputs3.tf
  8. Kopieren Sie die Terraform-Skripte aus dem Verzeichnis tf-vcn.
    cp ../tf-vcn/*.tf .
  9. Benennen Sie die Datei outputs.tf in outputs4.tf um.
    mv outputs.tf outputs4.tf
  10. Verketten Sie die vier Ausgabedateien.
    cat outputs1.tf outputs2.tf outputs3.tf outputs4.tf > outputs.tf
  11. Entfernen Sie die Dateien outputs1.tf, outputs2.tf, outputs3.tf und outputs4.tf aus dem Verzeichnis tf-simple-infrastructure.
    rm outputs1.tf outputs2.tf outputs3.tf outputs4.tf
  12. Stellen Sie sicher, dass sich die folgenden Dateien in Ihrem Verzeichnis befinden.
    ls
    availability-domains.tf
    compartment.tf
    compute.tf
    outputs.tf
    private-security-list.tf
    private-subnet.tf
    provider.tf
    public-security-list.tf
    public-subnet.tf
    vcn-module.tf
    versions.tf

2. Skripte bearbeiten

Bearbeiten Sie die Skripte, um einen neuen Namen für das Compartment zuzuweisen und alle hartcodierten OCIDs durch Referenzen zu ersetzen.

Compartment-Namen aktualisieren
  1. Öffnen Sie die Datei compartment.tf.
  2. Ändern Sie <your-compartment-name> in <your-new-compartment-name>, wenn Sie <your-compartment-name> bereits in den vorherigen Tutorials erstellt haben.
    # Source from https://registry.terraform.io/providers/oracle/oci/latest/docs/resources/identity_compartment
    
    resource "oci_identity_compartment" "tf-compartment" {
        # Required
        compartment_id = "<tenancy-ocid>"
        description = "Compartment for Terraform resources."
        name = "<your-new-compartment-name>"
    }
Compartment-Referenzen aktualisieren
Nach Referenz auf Compartment-OCID suchen

In den vorherigen Tutorials haben Sie die Compartment-OCID hartcodiert. Aktualisieren Sie jetzt <compartment-ocid>, um das Compartment aus compartment.tf zu referenzieren.

  1. Suchen Sie, wie die Compartment-OCID in der Datei outputs.tf referenziert wird.
    grep -R compartment outputs.tf

    Beispielausgabe:

    # Outputs for compartment
    output "compartment-name" {
      value = oci_identity_compartment.tf-compartment.name
    output "compartment-OCID" {
      value = oci_identity_compartment.tf-compartment.id
  2. Kopieren Sie den Wert für die Compartment-OCID in Notepad:
    oci_identity_compartment.tf-compartment.id
    
Hartcodierte Compartment-OCIDs aktualisieren
  1. Ermitteln Sie, welche Dateien auf compartment_id verweisen.
    grep -Rn compartment_id

    Beispielausgabe:

    availability-domains.tf:7:  compartment_id = "<tenancy-ocid>"
    compartment.tf:3:   compartment_id = "<tenancy-ocid>"
    compute.tf:4:  compartment_id = "<compartment-ocid>"
    private-security-list.tf:6:  compartment_id = "<compartment-ocid>"
    private-subnet.tf:6:  compartment_id = "<compartment-ocid>"
    public-security-list.tf:6:  compartment_id = "<compartment-ocid>"
    public-subnet.tf:6:  compartment_id = "<compartment-ocid>"
    vcn-module.tf:9:  compartment_id = "<compartment-ocid>"
    Hinweis

    Die Dateien availability-domains.tf und compartment.tf verweisen beide auf <tenancy-ocid>. Beispiel: Die Datei compartment.tf verweist auf den Mandanten als übergeordnetes Compartment und erstellt dann ein Compartment darunter. Bearbeiten Sie compartment_id in diesen beiden Dateien nicht.
  2. Except for availability-domains.tf and compartment.tf files, in the remaining files that result from your grep command, replace compartment_id = "<compartment-ocid>" with:
    compartment_id = oci_identity_compartment.tf-compartment.id
Subnetzreferenzen aktualisieren
Nach Referenz auf Subnetz-OCID suchen

Im Tutorial Compute-Instanz erstellen haben Sie das öffentliche Subnetz hartcodiert, das die Compute-Instanz hostet. Aktualisieren Sie jetzt die Datei compute.tf, um die Datei public-subnet-OCID aus der Datei public-subnet.tf zu referenzieren.

  1. Ermitteln Sie, wie subnet OCID in der Datei outputs.tf referenziert wird.
    grep -R subnet outputs.tf

    Beispielausgabe:

    ...
    # Outputs for private subnet
    output "private-subnet-name" {
      value = oci_core_subnet.vcn-private-subnet.display_name
    output "private-subnet-OCID" {
      value = oci_core_subnet.vcn-private-subnet.id
    # Outputs for public subnet
    output "public-subnet-name" {
      value = oci_core_subnet.vcn-public-subnet.display_name
    output "public-subnet-OCID" {
      value = oci_core_subnet.vcn-public-subnet.id
  2. Kopieren Sie den Wert für die öffentliche Subnetz-OCID in Notepad:
    oci_core_subnet.vcn-public-subnet.id
    
Hartcodierte Subnetz-OCIDs aktualisieren
  1. Ermitteln Sie, welche Dateien auf subnet_id verweisen.
    grep -Rn subnet_id

    Beispielausgabe:

    compute.tf:19:        subnet_id = "<your-public-subnet-ocid>"
  2. Ersetzen Sie in der Datei compute.tf, die aus dem grep-Befehl resultiert, compartment_id = "<your-public-subnet-ocid>" durch:
    subnet_id = oci_core_subnet.vcn-public-subnet.id
    

Herzlichen Glückwunsch. Alle Skripte sind jetzt zur Ausführung bereit.

3. Einfache Infrastruktur erstellen

Führen Sie die Terraform-Skripte aus, um ein Compartment, ein virtuelles Cloud-Netzwerk und eine Compute-Instanz im öffentlichen Subnetz zu erstellen.

Skripte ausführen
  1. Initialisieren Sie ein Arbeitsverzeichnis im Verzeichnis tf-simple-infrastructure.
    terraform init
  2. Erstellen Sie einen Ausführungsplan, und prüfen Sie die Änderungen, die Terraform an Ihrem Account vornehmen möchte:
    terraform plan

    Beispielausgabe:

    ....
    Terraform will perform the following actions:
    
      # oci_core_instance.ubuntu_instance will be created
    ....
    Plan: 14 to add, 0 to change, 0 to destroy.
    
    Changes to Outputs:
      + all-availability-domains-in-your-tenancy              = [
    ....
  3. Erstellen Sie Ihre einfache Infrastruktur mit Terraform:
    terraform apply

    Wenn Sie zur Bestätigung aufgefordert werden, geben Sie yes ein, damit Ihre Ressourcen erstellt werden können.

Erstellung in der Konsole ansehen (optional)
  1. Öffnen Sie das Navigationsmenü , und wählen Sie Identität und Sicherheit aus. Wählen Sie unter Identität die Option Compartments aus.
  2. Aktualisieren Sie die Seite, bis der Compartment-Name angezeigt wird.
  3. Öffnen Sie das Navigationsmenü , und wählen Sie Networking aus. Wählen Sie dann Virtuelle Cloud-Netzwerke aus.
  4. Wählen Sie Ihr Compartment aus.

    Wenn Sie das Compartment nicht finden können, aktualisieren Sie die Seite.

  5. Wählen Sie Ihr VCN aus, und prüfen Sie die erstellten Ressourcen.
  6. Öffnen Sie das Navigationsmenü , und wählen Sie Compute aus. Wählen Sie unter Compute die Option Instanzen aus.
  7. Sehen Sie, wie die Instanz in der Liste der Instanzen angezeigt wird.
Ergebnisse prüfen

Prüfen Sie die Ausgaben im Ausgabeterminal.

Beispiel für die im Terminal angezeigte Ausgabe:
oci_identity_compartment.tf-compartment: Creating...
oci_identity_compartment.tf-compartment: Creation complete after 7s [id=xxx]
module.vcn.oci_core_vcn.vcn: Creating...
module.vcn.oci_core_vcn.vcn: Creation complete after 2s [id=xxx]
module.vcn.oci_core_internet_gateway.ig[0]: Creating...
module.vcn.oci_core_nat_gateway.nat_gateway[0]: Creating...
module.vcn.oci_core_default_security_list.lockdown[0]: Creating...
module.vcn.oci_core_service_gateway.service_gateway[0]: Creating...
oci_core_security_list.private-security-list: Creating...
oci_core_security_list.public-security-list: Creating...
module.vcn.oci_core_internet_gateway.ig[0]: Creation complete after 1s [id=xxx]
module.vcn.oci_core_route_table.ig[0]: Creating...
oci_core_security_list.public-security-list: Creation complete after 1s [id=xxx]
module.vcn.oci_core_default_security_list.lockdown[0]: Creation complete after 1s [id=xxx]
oci_core_security_list.private-security-list: Creation complete after 1s [id=xxx]
module.vcn.oci_core_route_table.ig[0]: Creation complete after 1s [id=xxx]
oci_core_subnet.vcn-public-subnet: Creating...
module.vcn.oci_core_nat_gateway.nat_gateway[0]: Creation complete after 2s [id=xxx]
module.vcn.oci_core_service_gateway.service_gateway[0]: Creation complete after 3s [id=xxx]
module.vcn.oci_core_route_table.service_gw[0]: Creating...
module.vcn.oci_core_route_table.nat[0]: Creating...
module.vcn.oci_core_route_table.service_gw[0]: Creation complete after 0s [id=xxx]
module.vcn.oci_core_route_table.nat[0]: Creation complete after 1s [id=xxx]
oci_core_subnet.vcn-private-subnet: Creating...
oci_core_subnet.vcn-public-subnet: Creation complete after 2s [id=xxx]
oci_core_instance.ubuntu_instance: Creating...
oci_core_subnet.vcn-private-subnet: Creation complete after 2s [id=xxx]
oci_core_instance.ubuntu_instance: Still creating... [10s elapsed]
oci_core_instance.ubuntu_instance: Still creating... [20s elapsed]
oci_core_instance.ubuntu_instance: Still creating... [30s elapsed]
oci_core_instance.ubuntu_instance: Creation complete after 38s [id=xxx]

Apply complete! Resources: 14 added, 0 changed, 0 destroyed.

Referenzen:

Weitere Schritte

Herzlichen Glückwunsch. Sie haben erfolgreich eine einfache Infrastruktur mit Terraform in Ihrem Oracle Cloud Infrastructure-Account erstellt.

Jetzt wissen Sie, wie Sie Datenquellen, Ressourcen und Module verwenden. Fügen Sie Ihrer einfachen Infrastruktur neue Objekte aus Oracle Cloud Infrastructure Provider hinzu.

Weitere Informationen zur Entwicklung mit Oracle-Produkten finden Sie auf folgenden Websites: