Externe data en templates gebruiken
Haal dynamische waarden Terraform binnen met de external data source en genereer configuratiebestanden met de functie templatefile.
Externe data en templates gebruiken is een gratis DevOps-bootcamp-les op CoddyKit. Dit is les 4 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject DevOps-bootcamp. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus DevOps-bootcamp bevat in totaal 4 lessen.
Verder dan ingebouwde gegevensbronnen
Je bevraagt AWS al met gegevensbronnen. Soms staan de gegevens die je nodig hebt buiten elke provider, bijvoorbeeld in de uitvoer van een shellscript of een interne API. De gegevensbron external en de functies voor template vullen deze leemte.
De external-gegevensbron
De gegevensbron external voert een programma uit en leest JSON uit de standaarduitvoer. Dit is een uitweg voor logica die Terraform niet van nature kan uitdrukken.
data "external" "git_sha" {
program = ["bash", "./scripts/git_sha.sh"]
}Het programmacontract
Het externe programma ontvangt een JSON-object op de standaardinvoer en moet een vlak JSON-object met tekenreekswaarden naar de standaarduitvoer schrijven. Al het andere is een fout.
#!/bin/bash
echo '{"sha": "abc123"}'Externe resultaten lezen
Benader geretourneerde waarden via de result-map. Elke waarde is een tekenreeks, dus zet deze om als je een ander type nodig hebt.
resource "aws_instance" "app" {
ami = "ami-0abcd1234"
instance_type = "t3.micro"
tags = {
GitSha = data.external.git_sha.result.sha
}
}Wanneer je external beter vermijdt
De externe bron wordt bij elk plan uitgevoerd en maakt reproduceren moeilijk als het script niet-deterministisch is. Geef de voorkeur aan een echte gegevensbron van een provider als die bestaat; gebruik external alleen voor echte ontbrekende mogelijkheden.
Bestanden renderen met templatefile
De functie templatefile leest een sjabloon, vervangt variabelen en retourneert een tekenreeks. Dit is ideaal voor cloud-init-userdata en configuratiebestanden.
resource "aws_instance" "web" {
ami = "ami-0abcd1234"
instance_type = "t3.micro"
user_data = templatefile("init.tftpl", {
hostname = "web-01"
})
}Syntaxis van sjablonen
Interpoler in een .tftpl-bestand waarden met de dollar-accolade-syntaxis. Terraform vervangt de doorgegeven variabelen.
#!/bin/bash
hostnamectl set-hostname ${hostname}
echo 'Provisioned by Terraform'Lussen in sjablonen
Sjablonen ondersteunen richtlijnen voor iteratie. Een for-richtlijn rendert herhaalde regels, wat handig is voor het genereren van lijsten met hosts.
%{ for ip in ips ~}
server ${ip}:8080
%{ endfor ~}Inline-sjablonen met templatestring
Voor korte fragmenten kun je een bestand overslaan en templatestring (of het oudere format) gebruiken om rechtstreeks in de configuratie dynamische tekenreeksen te bouwen.
locals {
greeting = templatestring("Hello, $${name}!", { name = "Ops" })
}De twee combineren
Een veelgebruikt patroon: een external-bron haalt een dynamische waarde op, waarna templatefile deze invoegt in een configuratie die als userdata wordt gerenderd.
user_data = templatefile("app.tftpl", {
version = data.external.git_sha.result.sha
})Renders idempotent houden
Omdat wijzigingen in user_data een vervanging van de instantie afdwingen, houd je de invoer voor sjablonen stabiel. Als je een voortdurend veranderende waarde, zoals een tijdstempel, invoert, worden instanties bij elke apply opnieuw gemaakt.
Korte controle
Toets je kennis van de externe gegevensbron.
Samenvatting: dynamische invoer en sjablonen
Je hebt de mogelijkheden van Terraform voor gegevens uitgebreid:
- De bron
externalvoert scripts uit die JSON retourneren. templatefilerendert configuratie- en userdata-bestanden.- Sjabloonrichtlijnen ondersteunen lussen en interpolatie.
- Houd invoer stabiel om ongewenste vervangingen te voorkomen.
Leer DevOps-bootcamp met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 142
- Lessen
- 568
Veelgestelde vragen
Is de les “Externe data en templates gebruiken” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad DevOps-bootcamp, waaronder “Externe data en templates gebruiken”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus DevOps-bootcamp bevat in totaal 4 lessen.
Wat leer ik in “Externe data en templates gebruiken”?
Haal dynamische waarden Terraform binnen met de external data source en genereer configuratiebestanden met de functie templatefile. Je oefent met DevOps-bootcamp door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met DevOps-bootcamp te beginnen?
Ervaring vooraf is niet nodig. DevOps-bootcamp op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.
Hoe lang duurt de les “Externe data en templates gebruiken”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over DevOps-bootcamp?
Ja. Elke les over DevOps-bootcamp bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Gegevens opvragen met data sources
- Local- en remote-exec-provisioners
- Null-resources en triggers
- Externe data en templates gebruiken