Terraform als Infrastructure as Code · Les

Externe data en templates gebruiken

Haal dynamische waarden Terraform binnen met de external data source en genereer configuratiebestanden met de functie templatefile.

Les 4 van 413 stappen

Externe data en templates gebruiken is een gratis Terraform als Infrastructure as Code-les op CoddyKit. Dit is les 4 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Terraform als Infrastructure as Code. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Terraform als Infrastructure as Code 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 external voert scripts uit die JSON retourneren.
  • templatefile rendert configuratie- en userdata-bestanden.
  • Sjabloonrichtlijnen ondersteunen lussen en interpolatie.
  • Houd invoer stabiel om ongewenste vervangingen te voorkomen.
Gratis beginnen

Leer Terraform als Infrastructure as Code 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
12
Lessen
48

Veelgestelde vragen

Is de les “Externe data en templates gebruiken” gratis?

Ja — de volledige tekst van “Externe data en templates gebruiken” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Terraform als Infrastructure as Code wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Terraform als Infrastructure as Code 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 Terraform als Infrastructure as Code 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 Terraform als Infrastructure as Code te beginnen?

Ervaring vooraf is niet nodig. Terraform als Infrastructure as Code 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 Terraform als Infrastructure as Code?

Ja. Elke les over Terraform als Infrastructure as Code 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

  1. Gegevens opvragen met data sources
  2. Local- en remote-exec-provisioners
  3. Null-resources en triggers
  4. Externe data en templates gebruiken
← Terug naar Terraform als Infrastructure as Code