Brug af eksterne data og templates
Hent dynamiske værdier ind i Terraform med den eksterne datakilde, og gengiv konfigurationsfiler ved hjælp af templatefile-funktionen.
Brug af eksterne data og templates 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.
Ud over indbyggede datakilder
Du henter allerede data fra AWS med datakilder. Nogle gange ligger de nødvendige data uden for en provider, for eksempel som output fra et shell-script eller et internt API. Datakilden external og funktionerne template udfylder dette hul.
Datakilden external
Datakilden external kører et program og læser JSON fra dets stdout. Den er en nødløsning til logik, som Terraform ikke kan udtrykke indbygget.
data "external" "git_sha" {
program = ["bash", "./scripts/git_sha.sh"]
}Programkontrakten
Det eksterne program modtager et JSON-objekt på stdin og skal udskrive et fladt JSON-objekt med strengværdier på stdout. Alt andet er en fejl.
#!/bin/bash
echo '{"sha": "abc123"}'Læsning af eksterne resultater
Tilgå returnerede værdier via kortet result. Alle værdier er strenge, så konvertér dem, hvis du har brug for en anden type.
resource "aws_instance" "app" {
ami = "ami-0abcd1234"
instance_type = "t3.micro"
tags = {
GitSha = data.external.git_sha.result.sha
}
}Hvornår external bør undgås
Den eksterne kilde kører ved hver plan og ødelægger reproducerbarheden, hvis scriptet ikke er deterministisk. Foretræk en rigtig provider-datakilde, når der findes en; brug kun external, når der reelt mangler en anden mulighed.
Gengivelse af filer med templatefile
Funktionen templatefile læser en skabelon, erstatter variabler og returnerer en streng. Den er ideel til cloud-init-brugerdata og konfigurationsfiler.
resource "aws_instance" "web" {
ami = "ami-0abcd1234"
instance_type = "t3.micro"
user_data = templatefile("init.tftpl", {
hostname = "web-01"
})
}Skabelonsyntaks
Inde i en .tftpl-fil interpolerer du værdier med dollar-krølleparentes-syntaksen. Terraform erstatter de angivne variabler.
#!/bin/bash
hostnamectl set-hostname ${hostname}
echo 'Provisioned by Terraform'Løkker i skabeloner
Skabeloner understøtter direktiver til gentagelse. Et for-direktiv gengiver gentagne linjer, hvilket er praktisk til generering af lister over værter.
%{ for ip in ips ~}
server ${ip}:8080
%{ endfor ~}Inline-skabeloner med templatestring
Til korte uddrag kan du springe en fil over og bruge templatestring (eller det ældre format) til at opbygge dynamiske strenge direkte i konfigurationen.
locals {
greeting = templatestring("Hello, $${name}!", { name = "Ops" })
}Kombination af de to
Et almindeligt mønster er, at en external-kilde henter en dynamisk værdi, hvorefter templatefile indsætter den i en konfiguration, der gengives som brugerdata.
user_data = templatefile("app.tftpl", {
version = data.external.git_sha.result.sha
})Idempotente gengivelser
Da ændringer i user_data tvinger en instansudskiftning, skal du holde skabelonens input stabilt. Hvis du tilføjer en værdi, der ændrer sig konstant, for eksempel et tidsstempel, bliver instanser oprettet igen ved hvert apply.
Hurtigt tjek
Test din forståelse af den eksterne datakilde.
Opsummering: Dynamiske input og skabeloner
Du har udvidet Terrформs datafunktioner:
- Kilden
externalkører scripts, der returnerer JSON. templatefilegengiver konfigurations- og brugerdatafiler.- Skabelondirektiver understøtter løkker og interpolation.
- Hold input stabilt for at undgå uønskede udskiftninger.
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 “Brug af eksterne data og templates” gratis?
Ja — hele teksten til “Brug af eksterne data og templates” 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 “Brug af eksterne data og templates”?
Hent dynamiske værdier ind i Terraform med den eksterne datakilde, og gengiv konfigurationsfiler ved hjælp af templatefile-funktionen. 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 “Brug af eksterne data og templates”?
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
- Forespørgsler med datakilder
- Lokale og fjernbaserede exec-provisionere
- Null-ressourcer og triggere
- Brug af eksterne data og templates