0Pricing
Terraform Infrastructure as Code · Lektion

Externe Daten und Templates verwenden

Übernehmen Sie dynamische Werte mit der externen Datenquelle in Terraform und erzeugen Sie Konfigurationsdateien mit der Funktion templatefile.

Externe Daten und Templates verwenden ist eine kostenlose Terraform Infrastructure as Code-Lektion auf CoddyKit. Dies ist Lektion 4 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 Terraform Infrastructure as Code-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Terraform Infrastructure as Code-Kurs umfasst insgesamt 4 Lektionen.

Über integrierte Data Sources hinaus

Sie fragen AWS bereits mit Data Sources ab. Manchmal liegen die benötigten Daten außerhalb jedes Providers, etwa als Ausgabe eines Shell-Skripts oder einer internen API. Die external-Data-Source und template-Funktionen schließen diese Lücke.

Die external-Data-Source

Die external-Data-Source führt ein Programm aus und liest JSON von dessen stdout. Sie ist ein Ausweg für Logik, die Terraform nicht nativ ausdrücken kann.

data "external" "git_sha" {
  program = ["bash", "./scripts/git_sha.sh"]
}

Der Programmvertrag

Das externe Programm empfängt ein JSON-Objekt über stdin und muss ein flaches JSON-Objekt mit String-Werten auf stdout ausgeben. Alles andere ist ein Fehler.

#!/bin/bash
echo '{"sha": "abc123"}'

Externe Ergebnisse auslesen

Greifen Sie über die result-Map auf zurückgegebene Werte zu. Jeder Wert ist ein String. Konvertieren Sie ihn daher, wenn Sie einen anderen Typ benötigen.

resource "aws_instance" "app" {
  ami           = "ami-0abcd1234"
  instance_type = "t3.micro"

  tags = {
    GitSha = data.external.git_sha.result.sha
  }
}

Wann external vermieden werden sollte

Die externe Quelle wird bei jedem Plan ausgeführt und beeinträchtigt die Reproduzierbarkeit, wenn das Skript nichtdeterministisch ist. Bevorzugen Sie eine echte Data-Source des Providers, sofern eine vorhanden ist, und verwenden Sie external nur für tatsächliche Lücken.

Dateien mit templatefile rendern

Die Funktion templatefile liest eine Vorlage ein, ersetzt Variablen und gibt einen String zurück. Sie eignet sich ideal für Cloud-init-User-Daten und Konfigurationsdateien.

resource "aws_instance" "web" {
  ami           = "ami-0abcd1234"
  instance_type = "t3.micro"
  user_data = templatefile("init.tftpl", {
    hostname = "web-01"
  })
}

Vorlagensyntax

Interpolieren Sie innerhalb einer .tftpl-Datei Werte mit der Dollar-Klammer-Syntax. Terraform ersetzt die übergebenen Variablen.

#!/bin/bash
hostnamectl set-hostname ${hostname}
echo 'Provisioned by Terraform'

Schleifen in Vorlagen

Vorlagen unterstützen Direktiven zur Iteration. Eine for-Direktive erzeugt wiederholte Zeilen und eignet sich gut zum Generieren von Host-Listen.

%{ for ip in ips ~}
server ${ip}:8080
%{ endfor ~}

Inline-Vorlagen mit templatestring

Für kurze Ausschnitte können Sie eine Datei überspringen und templatestring (oder das ältere format) verwenden, um dynamische Strings direkt in der Konfiguration zu erstellen.

locals {
  greeting = templatestring("Hello, $${name}!", { name = "Ops" })
}

Beides kombinieren

Ein gängiges Muster: Eine external-Quelle ruft einen dynamischen Wert ab, anschließend fügt templatefile ihn in eine Konfiguration ein, die als User-Daten gerendert wird.

user_data = templatefile("app.tftpl", {
  version = data.external.git_sha.result.sha
})

Idempotente Renderings beibehalten

Da Änderungen an user_data das Ersetzen einer Instanz erzwingen, sollten Sie die Eingaben der Vorlage stabil halten. Ein sich ständig ändernder Wert wie ein Zeitstempel führt bei jedem Anwenden zur Neuerstellung der Instanzen.

Kurzer Check

Testen Sie Ihr Verständnis der externen Data-Source.

Zusammenfassung: Dynamische Inputs und Vorlagen

Sie haben die Datenfunktionen von Terraform erweitert:

  • Die external-Quelle führt Skripte aus, die JSON zurückgeben.
  • templatefile rendert Konfigurations- und User-Data-Dateien.
  • Vorlagendirektiven unterstützen Schleifen und Interpolation.
  • Halten Sie Eingaben stabil, um unerwünschtes Ersetzen zu vermeiden.

Häufig gestellte Fragen

Ist die Lektion „Externe Daten und Templates verwenden“ kostenlos?

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

Was lerne ich in „Externe Daten und Templates verwenden“?

Übernehmen Sie dynamische Werte mit der externen Datenquelle in Terraform und erzeugen Sie Konfigurationsdateien mit der Funktion templatefile. Du übst Terraform Infrastructure as Code 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 Terraform Infrastructure as Code zu starten?

Keine Vorkenntnisse erforderlich. Terraform Infrastructure as Code 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 4 von 4.

Wie lange dauert die Lektion „Externe Daten und Templates verwenden“?

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 Terraform Infrastructure as Code-Lektion Code schreiben und ausführen?

Ja. Jede Terraform Infrastructure as Code-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 Terraform Infrastructure as Code