Gegevens opvragen met data sources
Gebruik data sources om informatie over bestaande infrastructuur of externe services op te halen, zodat u dynamischere en beter aanpasbare configuraties kunt maken.
Gegevens opvragen met data sources is een gratis DevOps-bootcamp-les op CoddyKit. Dit is les 1 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.
Wat zijn gegevensbronnen?
In Terraform moeten we vaak verwijzen naar bestaande infrastructuur of externe gegevens die niet door onze huidige configuratie worden beheerd.
Daar komen gegevensbronnen van pas! Hiermee kan je Terraform-configuratie informatie ophalen over resources die al zijn ingericht of over externe services.
Gegevensbronnen versus resources
Het is belangrijk om gegevensbronnen van resources te onderscheiden.
- Resources definiëren infrastructuur die Terraform aanmaakt, bijwerkt of verwijdert.
- Gegevensbronnen halen alleen informatie op over bestaande infrastructuur of gegevens. Ze maken niets aan en wijzigen niets.
Beschouw ze als alleen-lezenquery's voor je infrastructuur.
Praktische gebruikssituaties
Gegevensbronnen zijn bijzonder nuttig voor:
- De ID van een bestaande Virtual Private Cloud (VPC) vinden.
- De nieuwste Amazon Machine Image (AMI) voor een EC2-instantie ophalen.
- Geheimen uit een dienst voor geheimenbeheer ophalen.
- DNS-records of netwerkconfiguraties opzoeken.
Ze maken je configuraties dynamischer en verminderen het aantal hardgecodeerde waarden.
Een gegevensbron definiëren
Een blok voor een gegevensbron lijkt op een resourceblok. Het begint met het sleutelwoord data, gevolgd door de provider en het type, en daarna een lokale naam.
data "aws_vpc" "selected" {
filter {
name = "tag:Name"
values = ["my-existing-vpc"]
}
}Opgehaalde gegevens gebruiken
Zodra een gegevensbron informatie heeft opgehaald, zijn de kenmerken ervan beschikbaar voor andere delen van je configuratie. Je kunt ernaar verwijzen met de syntaxis: data.<TYPE>.<NAME>.<ATTRIBUTE>.
Om bijvoorbeeld de ID van de geselecteerde VPC op te halen:
output "vpc_id" {
value = data.aws_vpc.selected.id
}De nieuwste AMI ophalen
Een veelvoorkomende taak is het vinden van de nieuwste Amazon Machine Image (AMI) voor een EC2-instantie. Zo voorkom je dat AMI-ID's hardgecodeerd worden en maak je je configuratie robuuster.
Zo haal je de nieuwste Amazon Linux 2 AMI op:
provider "aws" {
region = "us-east-1"
}
data "aws_ami" "amazon_linux_2" {
most_recent = true
owners = ["amazon"]
filter {
name = "name"
values = ["amzn2-ami-hvm-*-x86_64-gp2"]
}
filter {
name = "virtualization-type"
values = ["hvm"]
}
}
output "latest_ami_id" {
value = data.aws_ami.amazon_linux_2.id
}Dynamisch S3-beleidsdocument
Gegevensbronnen zijn niet alleen bedoeld voor cloudresources. De gegevensbron aws_iam_policy_document helpt om complexe IAM-beleidsregels op een gestructureerde manier samen te stellen.
Deze maakt geen beleidsregel aan, maar genereert het JSON-document dat je vervolgens kunt toepassen op een resource zoals een S3-bucket.
provider "aws" {
region = "us-east-1"
}
data "aws_iam_policy_document" "s3_read_only_policy" {
statement {
principals {
type = "AWS"
identifiers = ["arn:aws:iam::123456789012:user/example-user"]
}
actions = [
"s3:GetObject",
"s3:ListBucket"
]
resources = [
"arn:aws:s3:::my-example-bucket",
"arn:aws:s3:::my-example-bucket/*"
]
}
}
output "policy_json" {
value = data.aws_iam_policy_document.s3_read_only_policy.json
}Je zoekopdracht verfijnen
Veel gegevensbronnen ondersteunen filter-blokken. Hiermee kun je criteria opgeven om de resultaten te beperken en ervoor te zorgen dat je de juiste resource of gegevens ophaalt.
Filters accepteren meestal een name (het kenmerk waarop wordt gefilterd) en values (een lijst met toegestane waarden voor dat kenmerk).
data "aws_instance" "web" {
instance_state_names = ["running"]
filter {
name = "tag:Environment"
values = ["production"]
}
filter {
name = "instance-type"
values = ["t2.micro", "t3.micro"]
}
}Beste werkwijzen voor gegevensbronnen
Om je configuraties overzichtelijk en efficiënt te houden:
- Wees specifiek: gebruik filters om precies de benodigde gegevens op te halen en onduidelijkheid te voorkomen.
- Idempotentie: gegevensbronnen zijn van nature idempotent; meerdere uitvoeringen leveren hetzelfde resultaat op.
- Beperk aanroepen: haal alleen gegevens op wanneer dat nodig is, zodat bewerkingen van
terraform plansneller verlopen. - Combineer met uitvoerwaarden: gebruik uitvoerwaarden om opgehaalde gegevens beschikbaar te maken voor andere configuraties of gebruikers.
Kennistoets over gegevensbronnen
Welke van de volgende uitspraken over Terraform-gegevensbronnen zijn WAAR?
Samenvatting: gegevens opvragen
Je hebt geleerd hoe gegevensbronnen in Terraform je configuraties in staat stellen informatie over bestaande infrastructuur of externe services op te vragen en op te halen.
Deze krachtige functie maakt dynamische, flexibele en robuuste configuraties mogelijk doordat hardgecodeerde waarden worden vermeden en de configuratie zich aanpast aan de huidige status van je omgeving. Onthoud: gegevensbronnen lezen alleen; ze maken nooit iets aan en wijzigen nooit iets!
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 “Gegevens opvragen met data sources” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad DevOps-bootcamp, waaronder “Gegevens opvragen met data sources”, 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 “Gegevens opvragen met data sources”?
Gebruik data sources om informatie over bestaande infrastructuur of externe services op te halen, zodat u dynamischere en beter aanpasbare configuraties kunt maken. 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 1 van 4.
Hoe lang duurt de les “Gegevens opvragen met data sources”?
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