Dynamische Blöcke für verschachtelte Konfiguration
Erzeugen Sie wiederholte verschachtelte Konfigurationsblöcke programmgesteuert mit dynamischen Blöcken und vermeiden Sie Copy-and-paste etwa bei Security-Group-Regeln.
Dynamische Blöcke für verschachtelte Konfiguration 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.
Das Problem der Wiederholung
Einige Ressourcen enthalten wiederholte verschachtelte Blöcke, beispielsweise mehrere ingress-Regeln in einer Security Group. Jede Regel von Hand zu schreiben ist umfangreich und erschwert die Einhaltung des DRY-Prinzips. Dynamic Blocks erzeugen diese aus einer Collection.
Zuerst statische Blöcke
Hier ist die manuelle Variante: drei nahezu identische ingress-Blöcke. Stellen Sie sich vor, ein Dutzend davon zu pflegen.
resource "aws_security_group" "web" {
ingress {
from_port = 80
to_port = 80
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
ingress {
from_port = 443
to_port = 443
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
}Aufbau eines Dynamic Blocks
Ein dynamic-Block hat ein Label, das dem Namen des verschachtelten Blocks entspricht, eine for_each-Collection und einen content-Block, der jede erzeugte Instanz beschreibt.
dynamic "ingress" {
for_each = var.rules
content {
from_port = ingress.value.port
to_port = ingress.value.port
protocol = "tcp"
cidr_blocks = ingress.value.cidrs
}
}Das Iteratorobjekt
Verweisen Sie innerhalb von content über ein nach dem Block-Label benanntes Objekt auf das aktuelle Element. Es stellt .value (das Element) und .key (den Map-Schlüssel oder Listenindex) bereit.
Die Input-Variable definieren
Steuern Sie den Dynamic Block mit einer typisierten Variable. Eine Liste von Objekten sorgt dafür, dass jede Regel selbstdokumentierend ist.
variable "rules" {
type = list(object({
port = number
cidrs = list(string)
}))
}Alles zusammenführen
Nun bleibt die Ressource unabhängig von der Anzahl der übergebenen Regeln kompakt.
resource "aws_security_group" "web" {
name = "web-sg"
dynamic "ingress" {
for_each = var.rules
content {
from_port = ingress.value.port
to_port = ingress.value.port
protocol = "tcp"
cidr_blocks = ingress.value.cidrs
}
}
}Den Iterator umbenennen
Mit dem Argument iterator können Sie die Iterationsvariable umbenennen. Das ist beim Verschachteln von Dynamic Blocks nützlich, um Verwechslungen zu vermeiden.
dynamic "ingress" {
for_each = var.rules
iterator = rule
content {
from_port = rule.value.port
to_port = rule.value.port
}
}Blöcke bedingt überspringen
Übergeben Sie eine leere Collection, um null Blöcke zu erzeugen. Mit einem Ternär-Ausdruck für for_each lässt sich ein Block optional machen.
dynamic "logging" {
for_each = var.enable_logging ? [1] : []
content {
target_bucket = var.log_bucket
}
}Verschachtelte Dynamic Blocks
Dynamic Blocks können verschachtelt werden. Verwenden Sie unterschiedliche Iteratoren, damit der innere Block ohne Mehrdeutigkeit auf beide Ebenen zugreifen kann.
dynamic "setting" {
for_each = var.settings
iterator = s
content {
namespace = s.value.namespace
name = s.value.name
value = s.value.value
}
}Wann Dynamic Blocks nicht verwendet werden sollten
Dynamic Blocks führen eine zusätzliche Abstraktionsebene ein und können die Lesbarkeit beeinträchtigen. Wenn Sie nur einen oder zwei statische Blöcke haben, lassen Sie sie explizit stehen. Verwenden Sie Dynamic Blocks, wenn die Anzahl datenabhängig ist.
Das Ergebnis untersuchen
Führen Sie einen Plan aus, um zu bestätigen, dass die erzeugten Blöcke Ihren Erwartungen entsprechen. Terraform erweitert jedes Element der Collection zu einem konkreten verschachtelten Block.
terraform planKurzer Check
Testen Sie Ihr Wissen zu Dynamic Blocks.
Zusammenfassung: DRY-Konfiguration mit verschachtelten Blöcken
Mit Dynamic Blocks können Sie verschachtelte Konfiguration aus Daten erzeugen:
for_eachsteuert die Iteration;contentdefiniert jeden Block.- Der Iterator stellt
.valueund.keybereit. - Leere Collections machen Blöcke optional.
- Verwenden Sie sie sparsam, damit Konfigurationen lesbar bleiben.
Häufig gestellte Fragen
Ist die Lektion „Dynamische Blöcke für verschachtelte Konfiguration“ kostenlos?
Ja — der vollständige Text von „Dynamische Blöcke für verschachtelte Konfiguration“ 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 „Dynamische Blöcke für verschachtelte Konfiguration“?
Erzeugen Sie wiederholte verschachtelte Konfigurationsblöcke programmgesteuert mit dynamischen Blöcken und vermeiden Sie Copy-and-paste etwa bei Security-Group-Regeln. 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 „Dynamische Blöcke für verschachtelte Konfiguration“?
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
- Schleifen mit `for_each` und `count` verwenden
- Integrierte Terraform-Funktionen
- Bedingte Ausdrücke und Splat-Ausdrücke
- Dynamische Blöcke für verschachtelte Konfiguration