DevOps Bootcamp · Lektion

Null-Ressourcen und Trigger

Entdecken Sie `null_resource`, um beliebige Befehle auszuführen, die keiner echten Cloud-Ressource entsprechen, und verwenden Sie Trigger, um zu steuern, wann Provisioner ausgeführt werden.

Lektion 3 von 411 Schritte

Null-Ressourcen und Trigger ist eine kostenlose DevOps Bootcamp-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des DevOps Bootcamp-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der DevOps Bootcamp-Kurs umfasst insgesamt 4 Lektionen.

Was ist null_resource?

Terraform's null_resource ist ein spezieller Ressourcentyp, der kein Infrastruktur-Objekt bei Ihrem Cloud-Anbieter direkt erstellt oder verwaltet.

Stattdessen dient er als Platzhalter zum Ausführen beliebiger Befehle oder Skripte, häufig für Aufgaben außerhalb des üblichen Bereitstellungsumfangs von Ressourcen.

Warum null_resource verwenden?

Vielleicht fragen Sie sich, warum Sie eine „null“-Ressource benötigen. Sie ist äußerst nützlich für:

  • Lokale Skripte ausführen: Befehle auf dem Rechner ausführen, auf dem Terraform ausgeführt wird (z. B. zum Vorbereiten von Konfigurationsdateien).
  • Aktionen nach der Bereitstellung: Einrichtungs- oder Bereinigungsaufgaben durchführen, nachdem die eigentlichen Ressourcen bereitgestellt wurden.
  • Mit externen APIs interagieren: Wenn für einen bestimmten Dienst kein dedizierter Terraform-Provider vorhanden ist.
  • Benutzerdefinierte Logik: Benutzerdefinierte Schritte koordinieren, die nicht an eine bestimmte Cloud-Ressource gebunden sind.

Grundlegende Struktur von null_resource

Ein null_resource-Block sieht wie jede andere Terraform-Ressource aus. Ohne Provisioner oder Trigger erstellt er lediglich ein „null“-Objekt im Terraform-Zustand und tut sonst nichts.

Er wird typischerweise mit Provisionern kombiniert, um Befehle auszuführen, und mit Triggern, um zu steuern, wann diese Befehle ausgeführt werden.

Einfaches null_resource-Beispiel

Hier sehen Sie eine minimale null_resource. Wenn Sie terraform apply dafür ausführen, wird sie im Zustand angelegt, aber es findet keine externe Aktion statt.

Sie ist lediglich ein Platzhalter, der für die Erweiterung um Aktionen bereitsteht.

resource "null_resource" "my_placeholder" {
  # This resource exists in state but performs no action.
  # It's ready to attach provisioners or triggers.
}

Provisioner mit null_resource

Die eigentliche Stärke von null_resource zeigt sich in Kombination mit Provisionern.

Mit Provisionern können Sie Skripte oder Befehle auf dem Rechner ausführen, auf dem Terraform läuft (local-exec), oder direkt auf der entfernten Ressource (remote-exec, bei null_resource jedoch seltener).

Dadurch wird null_resource zu einem Ausführer von Aktionen.

Trigger kennenlernen

triggers ist eine Zuordnung beliebiger Schlüssel-Wert-Paare, die innerhalb eines null_resource-Blocks definiert wird.

Damit teilen Sie Terraform mit: „Wenn sich ein Wert in dieser Zuordnung ändert, muss diese null_resource (und ihre Provisioner) erneut ausgeführt werden.“

Das ist entscheidend dafür, dass null_resource auf Änderungen in Ihrer Infrastruktur reagieren kann.

Funktionsweise von Triggern

Wenn sich ein Wert in der triggers-Zuordnung ändert, erkennt Terraform eine Änderung an der null_resource.

Während eines terraform apply führt Terraform anschließend Folgendes aus:

  • Die vorhandene null_resource wird zerstört (falls sie vorhanden ist).
  • Die null_resource wird neu erstellt.
  • Zugehörige Provisioner werden erneut ausgeführt.

Dieser Mechanismus stellt sicher, dass Ihre benutzerdefinierten Aktionen nur ausgeführt werden, wenn sich relevante Abhängigkeiten ändern.

Beispiel: Trigger und local-exec

Hier verwenden wir eine null_resource, um die Aktualisierung einer Konfigurationsdatei anhand einer einfachen Variable zu simulieren. Der local-exec-Provisioner führt einen Befehl aus, und die triggers stellen sicher, dass er bei einer Änderung von var.app_version erneut ausgeführt wird.

variable "app_version" {
  description = "The version of the application."
  type        = string
  default     = "1.0.0"
}

resource "null_resource" "update_config_file" {
  triggers = {
    version_change = var.app_version
  }

  provisioner "local-exec" {
    command = "echo 'Config updated for version: ${self.triggers.version_change}' > app_config.txt"
  }
}

Bewährte Vorgehensweisen und Alternativen

Obwohl null_resource leistungsfähig ist, sollten Sie sie mit Bedacht einsetzen:

  • Provider bevorzugen: Wenn für eine Aufgabe ein dedizierter Terraform-Provider oder eine Ressource vorhanden ist, verwenden Sie stattdessen diese.
  • Idempotenz sicherstellen: Stellen Sie sicher, dass die von Provisionern ausgeführten Skripte ohne Nebenwirkungen mehrfach ausgeführt werden können.
  • Zustandsverwaltung vermeiden: Versuchen Sie nicht, externen Zustand mit null_resource zu verwalten. Dafür sind Backends für den Remote-Zustand vorgesehen.
  • external-Datenquelle in Betracht ziehen: Für komplexe externe Logik, die strukturierte Daten zurückgibt, kann die external-Datenquelle eine übersichtlichere Alternative sein.

Schnelltest: Null-Ressourcen

Sie haben null_resource und triggers kennengelernt. Testen wir nun Ihr Verständnis.

Rückblick: Null-Ressourcen und Trigger

In dieser Lektion haben Sie die vielseitigen Einsatzmöglichkeiten von Terraform's null_resource kennengelernt – einem leistungsstarken Werkzeug zum Ausführen benutzerdefinierter Befehle und Skripte, die keinen konkreten Cloud-Ressourcen entsprechen.

Außerdem haben Sie triggers kennengelernt, einen Mechanismus innerhalb von null_resource, mit dem Sie Abhängigkeiten definieren und sicherstellen können, dass Provisioner erneut ausgeführt werden, sobald sich diese Abhängigkeiten ändern. Dadurch wird eine dynamische und reaktive benutzerdefinierte Automatisierung im Rahmen Ihrer IaC möglich.

Kostenlos starten

Lerne DevOps Bootcamp mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
142
Lektionen
568

Häufig gestellte Fragen

Ist die Lektion „Null-Ressourcen und Trigger“ kostenlos?

Ja — der vollständige Text von „Null-Ressourcen und Trigger“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des DevOps Bootcamp-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der DevOps Bootcamp-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Null-Ressourcen und Trigger“?

Entdecken Sie `null_resource`, um beliebige Befehle auszuführen, die keiner echten Cloud-Ressource entsprechen, und verwenden Sie Trigger, um zu steuern, wann Provisioner ausgeführt werden. Du übst DevOps Bootcamp mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um DevOps Bootcamp zu starten?

Keine Vorkenntnisse erforderlich. DevOps Bootcamp auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Null-Ressourcen und Trigger“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser DevOps Bootcamp-Lektion Code schreiben und ausführen?

Ja. Jede DevOps Bootcamp-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Daten mit Data Sources abfragen
  2. Lokale und Remote-Exec-Provisioner
  3. Null-Ressourcen und Trigger
  4. Externe Daten und Templates verwenden
← Zurück zu DevOps Bootcamp