Einführung
In Terraform dienen Ausgabewerte (Outputs) dazu, nach der Bereitstellung Ihrer Ressourcen nützliche Informationen offenzulegen. Sie funktionieren ähnlich wie Rückgabewerte in einer Funktion und ermöglichen es, Daten wie die IP-Adresse eines Servers, eine Datenbank-Verbindungszeichenfolge oder einen Dateipfad einfach abzufragen. Dies macht die Informationen über die Befehlszeile leicht zugänglich und erlaubt es anderen Terraform-Konfigurationen, diese Werte weiterzuverwenden.
In diesem Lab lernen Sie, wie Sie Ausgabewerte definieren, anwenden und anzeigen. Wir beginnen mit einer grundlegenden Terraform-Konfiguration, die eine lokale Datei erstellt, und fügen anschließend einen Output-Block hinzu, um den Pfad dieser Datei auszugeben.
Datei outputs.tf für Output-Definitionen erstellen
In diesem Schritt erstellen wir eine dedizierte Datei für unsere Output-Definitionen. Obwohl Sie Output-Blöcke in jeder beliebigen .tf-Datei platzieren können, ist es eine bewährte Methode (Best Practice), diese in einer separaten Datei namens outputs.tf zu speichern. Dies hält Ihre Konfiguration übersichtlich und erleichtert das Auffinden aller Ausgabewerte für Ihr Projekt.
Sie arbeiten im Verzeichnis ~/project, dem Standardverzeichnis in Ihrem Terminal.
Überprüfen wir zunächst die bereits für Sie erstellte Datei main.tf.
ls -l
Sie sollten die Datei main.tf sowie ein Verzeichnis .terraform sehen.
total 4
-rw-rw-r-- 1 labex labex 279 Oct 15 12:39 main.tf
Erstellen Sie nun die Datei outputs.tf mit dem Befehl touch.
touch outputs.tf
Dieser Befehl erstellt eine leere Datei namens outputs.tf im aktuellen Verzeichnis. Sie können die Erstellung durch erneutes Auflisten der Dateien überprüfen.
ls -l
Sie sehen nun outputs.tf in der Dateiliste.
total 4
-rw-rw-r-- 1 labex labex 279 Oct 15 12:39 main.tf
-rw-rw-r-- 1 labex labex 0 Oct 15 12:39 outputs.tf
Output für den Dateinamen von local_file definieren
In diesem Schritt definieren Sie einen Output-Block in der Datei outputs.tf. Ein Output-Block deklariert einen einzelnen Ausgabewert für Ihre Terraform-Konfiguration.
Die grundlegende Syntax für einen Output-Block lautet:
output "NAME" {
## Argumente kommen hierhin
}
Hierbei ist NAME eine Zeichenfolge, die den Output benennt, über den Sie später den Wert abfragen können.
Öffnen wir die Datei outputs.tf mit dem Editor nano und fügen unseren ersten Output-Block hinzu.
nano outputs.tf
Fügen Sie nun den folgenden Code in die Datei ein. Wir nennen unseren Output file_path.
output "file_path" {
}
Nachdem Sie den Code hinzugefügt haben, speichern Sie die Datei und beenden nano mit Ctrl+X, dann Y und schließlich Enter.
Dieser Block bewirkt noch nichts, da das Argument value fehlt. Dies werden wir im nächsten Schritt ergänzen.
Ressourcenattribut im Output-Block referenzieren
In diesem Schritt machen wir unseren Output nützlich, indem wir festlegen, welcher Wert angezeigt werden soll. Dies geschieht über das Argument value innerhalb des Output-Blocks. Der Wert ist typischerweise eine Referenz auf ein Attribut einer in Ihrer Konfiguration definierten Ressource.
Die Syntax für die Referenzierung eines Ressourcenattributs lautet <RESOURCE_TYPE>.<RESOURCE_NAME>.<ATTRIBUTE>.
In unserer Datei main.tf haben wir eine Ressource wie folgt definiert:
resource "local_file" "example" {
## ...
}
Die Ressource local_file besitzt ein Attribut namens filename, das den Pfad zu der von ihr verwalteten Datei enthält. Um dieses Attribut zu referenzieren, verwenden wir local_file.example.filename.
Fügen wir diese Referenz unserem Output-Block hinzu. Öffnen Sie outputs.tf erneut mit nano.
nano outputs.tf
Ändern Sie die Datei so, dass sie das Argument value wie unten gezeigt enthält:
output "file_path" {
value = local_file.example.filename
}
Dies teilt Terraform mit, dass der Output file_path den Wert des Attributs filename der Ressource local_file mit dem Namen example annehmen soll.
Speichern Sie die Datei und beenden Sie nano mit Ctrl+X, Y und Enter.
terraform apply ausführen, um die Konfiguration zu aktualisieren
In diesem Schritt wenden Sie die Konfigurationsänderungen an. Wann immer Sie Outputs hinzufügen, entfernen oder ändern, müssen Sie terraform apply ausführen, damit Terraform die Änderungen erkennt und die State-Datei aktualisiert. In der State-Datei speichert Terraform die Werte Ihrer Outputs.
Führen Sie den Befehl terraform apply in Ihrem Terminal aus.
terraform apply
Terraform zeigt Ihnen zunächst einen Ausführungsplan. Es erkennt, dass Sie einen Output hinzugefügt haben, und plant dessen Erstellung. Da die Ressource local_file noch nicht existiert, plant Terraform auch deren Erstellung.
Sie werden aufgefordert, die Aktion zu bestätigen. Geben Sie yes ein und drücken Sie Enter.
Terraform used the selected providers to generate the following execution plan.
Resource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
## local_file.example will be created
+ resource "local_file" "example" {
+ content = "This is an example file managed by Terraform."
+ content_base64sha256 = (known after apply)
+ content_base64sha512 = (known after apply)
+ content_md5 = (known after apply)
+ content_sha1 = (known after apply)
+ content_sha256 = (known after apply)
+ content_sha512 = (known after apply)
+ directory_permission = "0777"
+ file_permission = "0777"
+ filename = "./example.txt"
+ id = (known after apply)
}
Plan: 1 to add, 0 to change, 0 to destroy.
Changes to Outputs:
+ file_path = "./example.txt"
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
local_file.example: Creating...
local_file.example: Creation complete after 0s [id=ec3adcab998872def2df6200fb03992ac6f237a4]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
Outputs:
file_path = "./example.txt"
Wie Sie in der Ausgabe sehen können, war der Vorgang erfolgreich, und Terraform zeigt nun den Output file_path mit seinem Wert an.
terraform output ausführen, um den Dateinamen anzuzeigen
In diesem Schritt verwenden Sie den Befehl terraform output, um die Ausgabewerte aus Ihrer State-Datei anzuzeigen. Dies ist nützlich, um Informationen über Ihre Infrastruktur abzurufen, ohne die State-Datei manuell parsen oder terraform apply erneut ausführen zu müssen.
Um alle in Ihrer Konfiguration definierten Outputs zu sehen, führen Sie den Befehl einfach ohne Argumente aus.
terraform output
Dies zeigt alle Outputs in einem menschenlesbaren Format an.
file_path = "./example.txt"
Sie können auch einen spezifischen Ausgabewert abfragen, indem Sie dessen Namen als Argument angeben. Dies ist hilfreich in Skripten oder wenn Sie nur eine einzelne Information benötigen.
terraform output file_path
Dieser Befehl gibt nur den Rohwert des angegebenen Outputs aus.
"./example.txt"
Dies erleichtert die Verwendung des Outputs in Shell-Skripten, zum Beispiel durch Zuweisung an eine Variable: FILE=$(terraform output -raw file_path). Das Flag -raw entfernt dabei die Anführungszeichen.
Zusammenfassung
Herzlichen Glückwunsch zum Abschluss dieses Labs!
In diesem Lab haben Sie die Grundlagen der Verwaltung von Outputs in Terraform kennengelernt. Sie haben erfolgreich:
- Ihre Konfiguration durch Erstellen einer dedizierten
outputs.tf-Datei organisiert. - Einen
output-Block definiert, um einen Ausgabewert zu deklarieren. - Ein Ressourcenattribut innerhalb eines Output-Blocks referenziert, um dessen Wert offenzulegen.
- Die Konfiguration mit
terraform applyangewendet, um den Output verfügbar zu machen. - Den Ausgabewert über die Befehlszeile mit
terraform outputabgefragt.
Terraform-Outputs sind eine leistungsstarke Funktion, um wichtige Informationen aus Ihrer Infrastruktur zu extrahieren und Ihre Terraform-Workflows mit anderen Tools und Skripten zu integrieren.



