Dynamiske blokke til indlejret konfiguration
Generér gentagne indlejrede konfigurationsblokke programmatisk med dynamiske blokke, så copy-paste for eksempelvis sikkerhedsgrupperegler undgås.
Dynamiske blokke til indlejret konfiguration er en gratis Terraform som infrastruktur som kode-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Terraform som infrastruktur som kode, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Terraform som infrastruktur som kode-kurset indeholder 4 lektioner i alt.
Problemet med gentagelser
Nogle ressourcer indeholder gentagne indlejrede blokke, for eksempel flere ingress-regler i en security group. Det er omstændeligt at skrive hver enkelt manuelt, og det er svært at holde koden DRY. Dynamiske blokke genererer dem ud fra en samling.
Start med statiske blokke
Her er den manuelle version: tre næsten identiske ingress-blokke. Forestil dig at vedligeholde et dusin af dem.
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"]
}
}En dynamisk blokkes opbygning
En dynamic-blok har en etiket, der matcher navnet på den indlejrede blok, en samling i for_each og en content-blok, der beskriver hver genereret instans.
dynamic "ingress" {
for_each = var.rules
content {
from_port = ingress.value.port
to_port = ingress.value.port
protocol = "tcp"
cidr_blocks = ingress.value.cidrs
}
}Iteratorobjektet
Inde i content refererer du til det aktuelle element via et objekt, der er opkaldt efter blokkens etiket. Det eksponerer .value (elementet) og .key (kortnøglen eller listeindekset).
Definition af inputvariablen
Styr den dynamiske blok med en variabel med angivet type. En liste med objekter gør hver regel selvbeskrivende.
variable "rules" {
type = list(object({
port = number
cidrs = list(string)
}))
}Samling af det hele
Nu forbliver ressourcen kompakt, uanset hvor mange regler du sender ind.
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
}
}
}Omdøbning af iteratoren
Argumentet iterator lader dig omdøbe iterationsvariablen. Det er nyttigt ved indlejring af dynamiske blokke, så du undgår forvirring.
dynamic "ingress" {
for_each = var.rules
iterator = rule
content {
from_port = rule.value.port
to_port = rule.value.port
}
}Betinget udeladelse af blokke
Angiv en tom samling for at producere nul blokke. En ternær operator på for_each gør en blok valgfri.
dynamic "logging" {
for_each = var.enable_logging ? [1] : []
content {
target_bucket = var.log_bucket
}
}Indlejrede dynamiske blokke
Dynamiske blokke kan indlejres. Brug forskellige iteratorer, så den indre blok entydigt kan referere til begge niveauer.
dynamic "setting" {
for_each = var.settings
iterator = s
content {
namespace = s.value.namespace
name = s.value.name
value = s.value.value
}
}Hvornår dynamiske blokke ikke bør bruges
Dynamiske blokke tilføjer indirektion og kan gøre koden mindre læsbar. Hvis du kun har én eller to statiske blokke, skal du beholde dem som de er. Brug dynamiske blokke, når antallet styres af data.
Inspektion af resultatet
Kør en plan for at bekræfte, at de genererede blokke svarer til forventningerne. Terraform udvider hvert element i samlingen til en konkret indlejret blok.
terraform planHurtigt tjek
Test din viden om dynamiske blokke.
Opsummering: DRY-indlejret konfiguration
Dynamiske blokke lader dig generere indlejret konfiguration ud fra data:
for_eachstyrer gentagelsen;contentdefinerer hver blok.- Iteratoren eksponerer
.valueog.key. - Tomme samlinger gør blokke valgfri.
- Brug dem med måde for at holde konfigurationer læsbare.
Lær Terraform som infrastruktur som kode med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 12
- Lektioner
- 48
Ofte stillede spørgsmål
Er lektionen “Dynamiske blokke til indlejret konfiguration” gratis?
Ja — hele teksten til “Dynamiske blokke til indlejret konfiguration” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Terraform som infrastruktur som kode-kurset, skal du opgradere til CoddyKit PRO. Terraform som infrastruktur som kode-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Dynamiske blokke til indlejret konfiguration”?
Generér gentagne indlejrede konfigurationsblokke programmatisk med dynamiske blokke, så copy-paste for eksempelvis sikkerhedsgrupperegler undgås. Du øver dig i Terraform som infrastruktur som kode med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Terraform som infrastruktur som kode?
Der kræves ingen tidligere erfaring. Terraform som infrastruktur som kode på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.
Hvor lang tid tager lektionen “Dynamiske blokke til indlejret konfiguration”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Terraform som infrastruktur som kode-lektion?
Ja. Alle Terraform som infrastruktur som kode-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Brug af løkker med `for_each` og `count`
- Indbyggede Terraform-funktioner
- Betingede udtryk og splat-udtryk
- Dynamiske blokke til indlejret konfiguration