Skip to Content

Was ist Terraform Output?

Abbildung mehrerer abstrakter Server-Stacks in einer digitalen Umgebung auf blauem Hintergrund.

Terraform ist ein weithin anerkanntes Tool zum Definieren und Bereitstellen von Infrastrukturen als Code . Eine der wichtigsten Funktionen dieses Tools ist die Terraform-Ausgabe, mit der Benutzer nützliche Informationen aus Terraform-Konfigurationen extrahieren und anzeigen können.

Dieser Artikel befasst sich mit der Bedeutung der Terraform-Ausgabe, seiner Syntax und Nutzung sowie mit Best Practices zur Verbesserung Ihrer Infrastructure-as-Code-Projekte.

Terraform-Output verstehen

Angenommen, Sie verwalten eine komplexe Infrastruktur und müssen kritische Daten zwischen verschiedenen Ressourcen oder externen Systemen austauschen. Terraform-Ausgabe ist eine Funktion, mit der Sie genau das tun können. Diese Funktion extrahiert und zeigt mühelos wertvolle Informationen aus Ihren Terraform-Konfigurationen an und ermöglicht es Ihnen, sie zwischen verschiedenen Modulen, Arbeitsbereichen und externen Systemen zu teilen.

Terraform-Ausgaben enthalten wertvolle Informationen über die von Terraform verwalteten Ressourcen. Mit dem Befehlszeilentool für Terraform-Ausgaben können Sie dann diese Ausgabewerte abrufen und anzeigen, die andere Komponenten Ihrer Infrastruktur oder externer Systeme dann nutzen können.

Die Funktion der Terraform-Ausgabe bietet mehrere Vorteile, in erster Linie:

  • Datenaustausch: Terraform-Ausgaben zeichnen sich durch die gemeinsame Nutzung von Attributen dynamisch generierter Ressourcen zwischen Terraform-Konfigurationen und anderen Systemen aus. Angenommen, Sie erstellen mit Terraform eine EC2-Instanz. Der Ausgabeblock kann die öffentliche IP-Adresse erfassen, die dann von einer anderen Terraform-Konfiguration verwendet werden kann, um eine Sicherheitsgruppenregel einzurichten oder an ein externes Konfigurationsmanagement-Tool weiterzuleiten.
  • Automatisierung: Die Ausgänge ermöglichen ein automatisiertes Konfigurationsmanagement, indem sie dynamische Werte für abhängige Ressourcen bereitstellen. Wenn Sie beispielsweise einen Datenbankserver mit Terraform bereitstellen und der Datenbankport dynamisch zugewiesen wird, kann der Ausgabeblock diesen Port erfassen. Dieser erfasste Port kann dann in einer anderen Konfiguration verwendet werden, um eine Verbindung zur Datenbank von einer Webanwendung herzustellen.
  • Debugging und Verifizierung: Outputs gehen über die bloße Überprüfung des Ressourcenstatus hinaus. Während der Fehlerbehebung können Sie die Ausgabewerte überprüfen, um Inkonsistenzen oder unerwartete Ressourcenkonfigurationen zu lokalisieren, die möglicherweise Probleme mit abhängigen Prozessen verursachen.
  • Konsistenz: Outputs fördern die Konsistenz in allen Umgebungen. Durch den Verweis auf Ausgaben anstelle von festkodierten Werten können Sie eine identische Konfigurationslogik in Entwicklungs-, Test- und Produktionsumgebungen beibehalten.
  • Dokumentation: Outputs können als eine Form der Dokumentation dienen und klare und präzise Informationen über die von Terraform bereitgestellte Infrastruktur liefern. Dies kann besonders wertvoll für andere Ingenieure oder Teams sein, die das System verstehen müssen.

Syntax und Nutzung von Terraform-Outputs

Terraform-Ausgänge werden in Konfigurationsdateien mithilfe des Ausgabeblocks definiert. Hier die Syntaxaufschlüsselung:

output "<name>" {
  value = <expression>
}
  • <name>: Dies ist ein benutzerdefinierter Name für die Ausgabevariable. Wählen Sie einen beschreibenden Namen, der die darin gespeicherten Daten wiedergibt.
  • <expression>: Dies ist ein Terraform-Ausdruck, der den Wert bewertet, den Sie aufdecken möchten. Sie kann auf Attribute von Ressourcen verweisen, Funktionen nutzen oder Berechnungen durchführen.

Beispiele für Ausgaben

Die folgenden AWSAWSInstanzbeispiele zeigen, wie Sie Terraform-Ausgänge als unterschiedliche Datentypen anzeigen können:

  • Zeichenfolge-Ausgabe:

output "instance_id" {
  value = aws_instance.example.id
}
  • Zahlenausgabe:

output "instance_count" {
  value = length(aws_instance.example)
}
  • Ausgabe auflisten:

output "instance_ips" {
  value = aws_instance.example[*].public_ip
}
  • Kartenausgabe:

output "instance_tags" {
  value = {
    for instance in aws_instance.example :
    instance.id => instance.tags
  }
}

Auf Ergebnisse in Ihrem Code verweisen

Nach der Definition können Sie die Ausgaben innerhalb Ihres Terraform-Codes mit ihren Namen referenzieren. Hier ein Beispiel:

module "example_module" {
  source  = "./modules/example"
  # Reference the output from another module
  instance_id = var.other_module_name.instance_id
}

In diesem Beispiel verweist das example_module auf den instance_id-Ausgang eines anderen Moduls namens other_module_name. Dies zeigt, wie Outputs die Kommunikation und den Datenaustausch zwischen Modulen erleichtern.

Ausgabevariablen vs. Datenquellen

Terraform-Ausgaben und Datenquellen mögen auf den ersten Blick ähnlich erscheinen, aber sie dienen in Ihren IaC-Workflows (Infrastructure-as-Code). Hier ist eine Aufschlüsselung, um die Unterschiede zu klären:

Terraform-Ausgangsvariablen

Terraform-Ausgaben enthalten Informationen über Ressourcen, die von Terraform verwaltet werden. Die Ausgabewerte werden aus Attributen bestehender Ressourcen innerhalb Ihrer Terraform-Konfiguration abgeleitet. Outputs werden in der Regel in folgenden Fällen verwendet:

  • Datenaustausch zwischen Terraform-Modulen oder -Konfigurationen
  • Weitergabe von Informationen an externe Systeme zum Konfigurationsmanagement oder zur Überwachung
  • Vereinfachung der Konfigurationslogik durch Referenzierung dynamischer Werte anstelle von festcodierten Daten

Ein Beispiel für ein solches Szenario ist das Extrahieren der öffentlichen IP-Adresse einer EC2-Instanz und die Verwendung dieser, um eine Sicherheitsgruppenregel in einem anderen Terraform-Modul zu konfigurieren.

Datenquellen für Terraform

Datenquellen beziehen Daten aus externen Quellen. Es interagiert mit APIs oder Plug-ins, um Informationen von Cloud-Anbietern, Konfigurationsmanagementtools oder anderen externen Systemen abzurufen. Datenquellen werden in folgenden Fällen verwendet:

  • Zugriff auf Informationen über vorhandene Ressourcen, die nicht von Terraform selbst verwaltet werden
  • Verwendung externer Daten zur dynamischen Konfiguration von Terraform-Ressourcen
  • Integration Ihres IaC mit anderen Tools und Plattformen

Ein Beispiel ist die Verwendung einer Datenquelle, um eine Liste der verfügbaren Regionen in einem Cloud-Anbieter abzurufen, bevor Ressourcen in diesen Regionen erstellt werden.

Einfach ausgedrückt hängt die Wahl zwischen einer Ausgabevariablen oder einer Datenquelle vom Ursprung der benötigten Daten ab:

  • Wenn die Daten von Ressourcen stammen, die in Ihrer Terraform-Konfiguration verwaltet werden, verwenden Sie eine Ausgabevariable.
  • Wenn sich die Daten in einem externen System befinden oder dynamisch abgerufen werden müssen, verwenden Sie eine Datenquelle.

Best Practices für die Nutzung von Terraform-Outputs

Bei der Verwendung von Terraform-Ausgaben sollten Sie die folgenden Best Practices berücksichtigen:

  • Verwenden Sie beschreibende Namen: Wählen Sie klare und prägnante Namen aus, die die Daten widerspiegeln, die durch die Ausgabevariable offengelegt werden. Vermeiden Sie allgemeine Namen wie „output1“ oder „data“. Verwenden Sie stattdessen Namen wie „rds_instance_public_ip“ oder „webserver_security_group_id“. Dies verbessert die Lesbarkeit und Wartung Ihrer Konfigurationen.
  • Verwenden Sie eine konsistente Namenskonvention: Behalten Sie in Ihrer gesamten Terraform-Codebasis eine konsistente Namenskonvention bei. Dies kann die Verwendung von Unterstrichen oder Bindestrichen zur Trennung und die Ausrichtung des Benennungsschemas über alle Module und Konfigurationen hinweg umfassen.
  • Gruppenbezogene Ausgaben: Gruppieren Sie die zugehörigen Ergebnisse logisch. Wenn Sie beispielsweise mehrere Ausgaben in Bezug auf eine Datenbankinstanz (IP-Adresse, Port, Benutzername) haben, gruppieren Sie sie in Ihrer Konfigurationsdatei unter einer einzigen Überschrift. Dies verbessert die Organisation und erleichtert das Auffinden bestimmter Informationen.
  • Verwenden Sie Kommentare: Fügen Sie klare Kommentare hinzu, um den Zweck und die Verwendung jeder Ausgabevariable zu erläutern. Dies ist besonders hilfreich für Ergebnisse, die nicht sofort selbsterklärend sind oder von anderen Modulen oder Teams verwendet werden.
  • Vermeiden Sie unnötige Ausgaben: Vermeiden Sie es, Ergebnisse für Daten zu definieren, die nicht wirklich erforderlich sind. Übermäßige Ausgänge können den Ausgang überlasten und die Identifizierung der relevantesten Informationen erschweren. Bewerten Sie, ob die Daten direkt in Ihrer Terraform-Konfiguration verwendet werden können oder ob ein alternativer Ansatz effizienter sein könnte.
  • Vermeiden Sie Ergebnisse für Geheimnisse: Vermeiden Sie es, wenn möglich, sensible Daten vollständig in Terraform-Konfigurationen zu speichern. Entdecken Sie alternative Methoden zum Verwalten von Geheimnissen, z. B. die Nutzung von HashiCorp Vault oder Umgebungsvariablen.
  • Verwenden Sie das sensible Terraform-Attribut: Wenn die Verwendung von Ausgängen für Geheimnisse unvermeidlich ist, markieren Sie sie mit dem sensiblen Attribut im Ausgabeblock als sensibel. Dies weist den Terraform-Ausgabebefehl an, den Wert bei der Anzeige der Ausgabe zu unterdrücken.

Hier ist ein Beispiel mit dem hinzugefügten sensiblen Attribut:

output "db_password" {
  value     = aws_db_instance.example.password
  sensitive = true
}

Fazit

Mit Terraform Output können Sie die Lücke zwischen statischen Konfigurationen und dynamischer Infrastruktur schließen. Durch die Nutzung von Outputs können Sie den Datenaustausch optimieren, Aufgaben automatisieren und die Verifizierung vereinfachen.

Um das volle Potenzial Ihrer Infrastruktur auszuschöpfen, sollten Sie die Verwendung von Pure Storage-Lösungen wie Portworx® in Betracht ziehen, um persistenten Storage für Ihre Terraform Kubernetes-Implementierungen zu ermöglichen, sowie Pure Cloud Block Store™, um die ideale Storage-Lösung für Ihre Cloud-basierten Anwendungen bereitzustellen.

10/2025
Virtual Machine Provisioning at Enterprise Scale
Sizing and scaling Red Hat OpenShift Virtualization with Portworx.
White Paper
22 pages

Wichtige Ressourcen und Veranstaltungen durchsuchen

VIDEO
Sehen Sie selbst: Der Wert einer Enterprise Data Cloud

Charlie Giancarlo erklärt, warum die Zukunft in der Verwaltung von Daten und nicht in der Verwaltung von Storage liegt. Erfahren Sie, wie ein einheitlicher Ansatz IT-Abläufe in Unternehmen transformiert.

Jetzt ansehen
RESSOURCE
Herkömmlicher Storage kann die Zukunft nicht beflügeln.

Moderne Workloads erfordern KI-fähige Geschwindigkeit, Sicherheit und Skalierbarkeit. Ist Ihr Stack darauf vorbereitet?

Bewertung durchführen
PURE360-DEMOS
Pure Storage erkunden, kennenlernen und erleben.

Überzeugen Sie sich mit On-Demand-Videos und -Demos von den Möglichkeiten von Pure Storage.

Demos ansehen
THOUGHT LEADERSHIP
Der Innovationswettlauf

Branchenführer, die an vorderster Front der Storage-Innovationen stehen, geben Einblicke und Ausblicke.

Mehr erfahren
Ihr Browser wird nicht mehr unterstützt!

Ältere Browser stellen häufig ein Sicherheitsrisiko dar. Um die bestmögliche Erfahrung bei der Nutzung unserer Website zu ermöglichen, führen Sie bitte ein Update auf einen dieser aktuellen Browser durch.