Ressourcen bereitstellen, konfigurieren und entfernen

Mit Terraform können Sie Ihre Ressourcen in der Cloud effizient bereitstellen, ändern und entfernen.

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 erstellen

Nachdem Sie die Variablen in der Datei terraform.tfvars festgelegt haben, verwenden Sie die Terraform-CLI, um die in der Terraform-Konfiguration definierten Ressourcen bereitzustellen.

Stellen Sie zunächst sicher, dass Ihr lokaler Rechner über Internetzugriff verfügt. Wenn Ihr lokaler Rechner hinter einer Firewall liegt, verwenden Sie einen entsprechenden Proxy, damit Terraform das Internet erreichen kann.
  1. Navigieren Sie auf dem Computer, auf dem Sie Terraform installiert haben, zu dem Verzeichnis, in dem sich die Datei terraform.tfvars befindet.
  2. Initialisieren Sie Terraform, indem Sie den folgenden Befehl ausführen:
    terraform init
    Der Befehl lädt das Provider Plug-in oci herunter und richtet das Verzeichnis zur Verwendung durch Terraform ein.
  3. Prüfen Sie, ob die Syntax der Konfiguration keine Fehler enthält:
    terraform validate
  4. Wenn ein Syntaxfehler vorhanden ist, beheben Sie den Fehler, und wiederholen Sie den vorherigen Schritt.
    Um Probleme zu debuggen, können Sie das Logging konfigurieren:
    • Legen Sie die Logebene mit der Umgebungsvariablen TF_LOG fest. Die unterstützten Logebenen sind TRACE, DEBUG, INFO, WARN oder ERROR. Die TRACE-Ebene ist der ausführlichste Knoten.
    • Legen Sie den Pfad der Logdatei mit der Umgebungsvariablen TF_LOG_PATH fest.
  5. Prüfen Sie die in der Konfiguration definierten Ressourcen.
    terraform plan
    Die Ausgabe zeigt die Details aller Aktionen, die ausgeführt werden, wenn Sie diese Konfiguration anwenden, sowie eine Zusammenfassung, wie im folgenden Beispiel dargestellt.
    Plan: 8 to add, 0 to change, 0 to destroy.

    Hinweis:

    Die Zahl 8 in der Nachricht ist ein Beispiel. Die tatsächliche Anzahl hängt von den Einstellungen ab, die Sie in der Terraform-Konfiguration definiert haben.
  6. Wenn Sie Änderungen vornehmen möchten, bearbeiten Sie die Konfiguration, validieren Sie sie, und prüfen Sie den geänderten Plan.
  7. Erstellen Sie die Ressourcen:
    terraform apply
  8. Geben Sie am Prompt Do you want to perform these actions? Ja ein.
    Während Terraform jede Ressource erstellt, wird der Status des Vorgangs angezeigt.

    Wenn alle Ressourcen erstellt wurden, wird die Meldung Apply complete zusammen mit der Anzahl der hinzugefügten, geänderten und endgültig gelöschten Ressourcen angezeigt, wie im folgenden Beispiel dargestellt.

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

Outputs:

admin_private_ip = 10.0.1.10
bastion_public_ip = 203.0.113.101
kubeconfig = export KUBECONFIG=generated/kubeconfig
ocirtoken = <sensitive>
ssh_to_admin = ssh -i /home/joe/.ssh/id_rsa -J opc@203.0.113.101 opc@10.0.1.10
ssh_to_bastion = ssh -i /home/joe/.ssh/id_rsa opc@203.0.113.101
  • Die Ausgabe kubeconfig zeigt den Befehl an, mit dem Sie die Umgebungsvariable KUBECONFIG auf Ihrem lokalen Host festlegen können. Führen Sie diesen Befehl aus, wenn Sie die CLI kubectl vom lokalen Host zum Verwalten des Kubernetes-Clusters verwenden möchten. Der Befehl legt KUBECONFIG auf die Datei generated/kubeconfig fest, die Terraform beim Anwenden der Konfiguration erstellt.
  • Die Ausgabe ssh_to_admin zeigt den Befehl ssh an, mit dem Sie eine Verbindung zum Admin-Host herstellen können.
  • Die Ausgabe ssh_to_bastion zeigt den Befehl ssh an, mit dem Sie eine Verbindung zum Bastion-Host herstellen können.

Hinweis:

Sie können diese Terraform-Ausgabe jederzeit anzeigen, indem Sie den Befehl terraform output ausführen.
Ihre Kubernetes-Topologie in Oracle Cloud ist bereit. Sie können jetzt containerisierte Anwendungen bereitstellen.

Admin-Host die Ressourcenverwaltung zulassen

Damit der Admin-Host Ressourcen im Compartment verwalten kann, können Sie ihn als Instanz-Principal angeben. Verwenden Sie dieses Feature, wenn Sie CLI-Befehle ausführen oder API-Aufrufe vom Admin-Host vornehmen möchten, um Ressourcen in der Topologie zu verwalten.

Eine Compute-Instanz, die als Instanz-Principal angegeben ist, erhält ihre eigene eindeutige Identität. Er kann mithilfe von Zertifikaten authentifiziert werden, die automatisch erstellt und der Instanz zugewiesen werden. Die Zertifikate werden regelmäßig rotiert. Sie müssen Zugangsdaten nicht an den Admin-Host verteilen oder rotieren.

Hinweis:

Jeder Benutzer, der sich mit SSH bei einer Compute-Instanz anmelden kann, übernimmt die Berechtigungen des Instanz-Principals, die der Instanz zugewiesen sind. Berücksichtigen Sie dies, wenn Sie entscheiden, ob der Admin-Host als Instanz-Principal angegeben werden soll. Sie können dieses Feature jederzeit deaktivieren oder aktivieren, ohne dass dies Auswirkungen auf den Admin-Host hat.
  • Um den Admin-Host als Instanz-Principal anzugeben, legen Sie Folgendes in terraform.tfvars fest, und führen Sie terraform apply aus.

    admin_instance_principal = true

    Der Admin-Host wird zu einem Mitglied einer dynamischen Gruppe, und eine Policy-Anweisung wird erstellt, damit die dynamische Gruppe alle Ressourcen im Compartment verwalten kann.

  • Um die Instanz-Principal-Berechtigungen vom Admin-Host abzuziehen, legen Sie Folgendes in terraform.tfvars fest, und führen Sie terraform apply aus.

    admin_instance_principal = false

Benachrichtigungen für den Bastion-Host aktivieren oder deaktivieren

Mit dem Oracle Cloud Infrastructure-Benachrichtigungsservice können Sie Statusmeldungen vom Bastion-Host erhalten, wenn Updates eingespielt werden, oder wenn Oracle Ksplice einen bekannten Explokationsversuch erkennt.

Hinweis:

Der Terraform-Code in dieser Lösung konfiguriert nur Benachrichtigungen, wenn Sie das Oracle Autonomous Linux-Standardbild verwenden.
  • Um die Benachrichtigungen für den Bastion-Host zu aktivieren, legen Sie die folgenden Variablen in terraform.tfvars fest:

    bastion_notification_enabled = true
    bastion_notification_endpoint = "email_address"
    bastion_notification_protocol = "EMAIL"
    bastion_notification_topic = "topic_name"

    Im Folgenden finden Sie ein Beispiel für terraform.tfvars mit den definierten informativen Variablen.

    bastion_notification_enabled = true
    bastion_notification_endpoint = "joe@example.com"
    bastion_notification_protocol = "EMAIL"
    bastion_notification_topic = "bastion"
  • Wenn der Basishost bereits erstellt wurde und Sie jetzt Benachrichtigungen aktivieren möchten, legen Sie diese Variablen fest, und führen Sie terraform apply erneut aus.
    • Die erforderlichen Policys werden definiert, damit der Basishost Benachrichtigungen veröffentlichen kann.
    • Ein Benachrichtigungsthema wird erstellt, und die von Ihnen angegebene E-Mail-Adresse ist für das Thema abonniert.
    • Der Bastion-Host ist so konfiguriert, dass Benachrichtigungen gesendet werden.

    Nachdem die Ressourcen erstellt wurden, erhalten Sie eine E-Mail, in der Sie aufgefordert werden, das Abonnement zu bestätigen.

  • Um Benachrichtigungen zu deaktivieren, legen Sie Folgendes in terraform.tfvars fest, und führen Sie terraform apply aus.

    bastion_notification_enabled = false
    admin_notification_enabled = false

Alle Ressourcen entfernen

  1. Navigieren Sie auf dem Computer, auf dem Sie Terraform installiert haben, zu dem Verzeichnis, in dem sich die Datei terraform.tfvars befindet.
  2. Geben Sie folgenden Befehl ein:
    terraform destroy
    Terraform zeigt die Details der Ressourcen an, die zerstört werden, wie in diesem Beispiel gezeigt:
    Plan: 0 to add, 0 to change, 12 to destroy.
  3. Geben Sie am Prompt Do you really want to destroy all resources? Ja ein.
    Wenn Terraform jede Ressource entfernt, wird der Status des Vorgangs angezeigt.
    Nachdem alle Ressourcen entfernt wurden, wird die Meldung Destroy complete zusammen mit der Anzahl der zerstörten Ressourcen angezeigt, wie im folgenden Beispiel dargestellt:
    Destroy complete! Resources: 12 destroyed.