Ressourcen durch Provisioning bereitstellen

Sie können die Ressourcen mit Terraform oder Terragrunt bereitstellen. Wenn Sie Terraform verwenden, müssen Sie die Konfigurationen in jedem Verzeichnis in einer vorgeschriebenen Folge anwenden. Mit Terragrunt können Sie alle Ressourcen mit einem einzigen Befehl bereitstellen.

Info zu Terraform-Statusdateien

Terraform speichert Statusinformationen, um die verwalteten Infrastrukturressourcen zu überwachen, die bereitgestellten Ressourcen Ihrer Konfiguration zuzuordnen, Metadaten zu überwachen und die Performance für große Infrastruktur-Deployments zu verbessern.

Standardmäßig wird die Datei terraform.tfstate auf dem lokalen Host gespeichert. Dieses Standardverhalten ist in IT-Umgebungen nicht optimal, in denen mehrere Benutzer die in einer bestimmten Konfiguration definierten Ressourcen erstellen und endgültig löschen müssen. Um das Deployment und die Verwaltung von Ressourcen in einer Mehrbenutzerumgebung zu steuern, speichern Sie die Terraform-Statusdateien in Oracle Cloud Infrastructure Object Storage und geben die Statusdateien und Sperrdateien für alle Benutzer frei. Siehe Objektspeicher für Terraform-Statusdateien verwenden.

Ressourcen mit Terragrunt bereitstellen

Mit Terragrunt können Sie alle Ressourcen in der Topologie mit einem einzigen Befehl bereitstellen. Intern ruft Terragrunt Terraform-Befehle auf und verarbeitet alle in der Konfiguration definierten inter-resource-Abhängigkeiten.

  1. Gehen Sie zum Verzeichnis examples/full-deployment.
  2. Initialisieren Sie die Terraform-Module, indem Sie den folgenden Befehl ausführen:
    make init
    Der Befehl initialisiert alle Terraform-Module in der Konfiguration, indem terraform init in jedem Verzeichnis ausgeführt wird.
  3. Stellen Sie die Ressourcen durch Ausführung des folgenden Befehls bereit:
    terragrunt apply-all
    Terragrunt ruft den Befehl terraform apply für alle Terraform-Module in der Konfiguration in einer definierten Sequenz auf. Alle Ressourcen werden bereitgestellt.

Ressourcen mit Terraform bereitstellen

Wenn Sie die Ressourcen mit Terraform durch Provisioning bereitstellen möchten, müssen Sie die Terraform-Konfiguration in jedem Verzeichnis einzeln in einer vorgeschriebenen Sequenz anwenden.

  1. Kopieren Sie examples/full-deployment/terraform.tfvars in jedes der folgenden Unterverzeichnisse unter examples/full-deployment:
    common/compartments
    common/configuration
    management/access
    management/network
    management/server_attachment
    management/servers
    peering/network
    peering/routing
    tenant/network
    tenant/servers

    Gehen Sie zum Verzeichnis examples/full-deployment, und geben Sie den folgenden Befehl ein, um terraform.tfvars in alle erforderlichen Unterverzeichnisse zu kopieren. Für die Lesbarkeit wird der Befehl in mehreren Zeilen mit einem umgekehrten Schrägstrich (\) am Ende jeder Zeile angezeigt. Kopieren Sie alle Zeilen, einschließlich des umgekehrten Schrägstrichs, und fügen Sie sie als Einzelbefehl ein.

    xargs -n 1 cp -v terraform.tfvars<<<"common/compartments/ \
    common/configuration/ management/access/ management/network/ \
    management/server_attachment/ management/servers/ peering/network/ \
    peering/routing/ tenant/network/ tenant/servers/"
  2. Gehen Sie zum Verzeichnis examples/full-deployment/common/configuration.
  3. Führen Sie die folgenden Befehle aus:
    1. Konfiguration initialisieren:
      terraform init
    2. Prüfen Sie die in der Konfiguration definierten Ressourcen:
      terraform plan
    3. Konfiguration anwenden:
      terraform apply
    Die Konfiguration im Verzeichnis common/configuration berechnet die Anzahl von erforderlichen Mandanten-LUNs und Peering-VCNs, die CIDR-Größe jeder VCN - und die Zuordnung zwischen den Mandanten-VNs und den Peering-VCNs. Wenn Sie diese Konfiguration anwenden, werden keine Ressourcen erstellt. Die Ergebnisse der Berechnung werden beim Erstellen der VCNs und anderer Netzwerkressourcen verwendet.
  4. Führen Sie die Befehle terraform init, terraform plan und terraform apply in den folgenden Verzeichnissen unter examples/full-deployment in der vorgeschriebenen Ausführungsreihenfolge aus:
    common/compartments
    peering/network
    management/network
    tenant/network
    management/access
    peering/routing
    management/servers
    management/server_attachment
    tenant/servers

    Nachdem Sie terraform apply in allen Konfigurationsverzeichnissen in der vorgeschriebenen Reihenfolge ausgeführt haben, wird die Topologie vollständig bereitgestellt.

Topologie ändern

Um die Topologie zu ändern, müssen Sie die Ressourcendefinitionen in den entsprechenden Terraform-Konfigurationen aktualisieren und die überarbeitete Konfiguration dann anwenden. Die Identifizierung der Ressourcendefinitionen, die geändert werden müssen, erfordert einen umfassenden Einblick in den Beispielcode, insbesondere die Terraform-Module, die in jedem Verzeichnis referenziert werden, und die Abhängigkeiten zwischen verschiedenen Regeln.

Die Anweisungen zur Änderung der Topologie liegen außerhalb des Bereichs dieser Lösung.

Alle Ressourcen entfernen

Sie können alle bereitgestellten Ressourcen einfach mit Terraform oder Terragrunt entfernen.

  1. Gehen Sie zum Verzeichnis examples/full-deployment.
  2. Führen Sie einen der folgenden Schritte aus:
    • Wenn Terragrunt installiert ist, führen Sie den folgenden Befehl aus:

      terragrunt destroy-all

      Terragrunt ruft den Befehl terraform destroy für Ressourcen in der Konfiguration in einer definierten Sequenz auf.

      Wenn Sie versuchen, terragrunt destroy-all zur Bereinigung eines nicht erfolgreichen oder teilweisen Deployments zu verwenden, kann folgender Fehler auftreten:

      Error: Unsupported attribute
        on management_rte_attachment.tf line 8, in module "management_rte_attachement":
         8:     data.terraform_remote_state.peering_servers.outputs.routing_instance_1_ip_id,
          |----------------
          | data.terraform_remote_state.peering_servers.outputs is object with 3 attributes
      This object does not have an attribute named "routing_instance_1_ip_id".

      Wenn dieser Fehler auftritt, entfernen Sie die Ressourcen, indem Sie terraform destroy in jedem Konfigurationsverzeichnis ausführen, wie nachfolgend beschrieben.

    • Um die Ressourcen mit der Terraform-CLI zu entfernen, führen Sie terraform destroy in jedem Konfigurationsverzeichnis unter examples/full-deployment in der folgenden Reihenfolge aus.

      Hinweis:

      Warten Sie, bis der Befehl in jedem Verzeichnis ausgeführt wird, bevor Sie mit dem nächsten Verzeichnis fortfahren.
      tenant/servers
      management/server_attachment
      management/servers
      peering/routing
      management/access
      tenant/network
      management/network
      peering/network
      common/compartments
      common/configuration