Cursus
Infrastructure as Code (IaC) is een proces waarbij de inrichting en het beheer van infrastructuur via code worden geautomatiseerd. Hoewel fysieke hardwareconfiguratie en interactieve configuratietools kunnen worden gebruikt om infrastructuur te provisionen, biedt IaC verschillende voordelen zoals versiebeheer, herhaalbaarheid en schaalbaarheid. Een van de beste IaC-tools is Terraform, een oplossing ontwikkeld door HashiCorp in 2014 en gebruikt door meer dan 500.000 organisaties wereldwijd. Laten we bekijken hoe Terraform werkt en hoe je het inzet voor moderne IT-operaties.
Als we beginnen met Terraform is het goed om te weten dat bekendheid met ten minste één grote cloudprovider (AWS, Azure, Google Cloud, enz.) een vereiste is, omdat Terraform wordt gebruikt om cloudinfrastructuur te beheren. Onze cursus Understanding Cloud Computing biedt een solide basis als je nieuw bent met cloud computing.
Wat is Terraform?
Terraform is een open-sourcetool waarmee je infrastructuurcomponenten en hun onderlinge relaties kunt definiëren met behulp van een hoog-niveauconfiguratietaal.
In de voor mensen leesbare configuratiebestanden van Terraform kun je de gewenste staat van je infrastructuur specificeren en Terraform werkt vervolgens automatisch uit hoe die staat bereikt moet worden. Deze bestanden kunnen worden beheerd in versiebeheer, gedeeld en hergebruikt om een consistente manier te bieden om je infrastructuur te beheren, van compute- en opslagresources tot DNS en SaaS-functionaliteiten.
Terraform kan worden gebruikt met verschillende cloudproviders, in multicloud-infrastructuren en on-premises omgevingen.
Belangrijkste features van Terraform
Laten we de fundamentele aspecten bekijken die Terraform onderscheiden:
HashiCorp Configuration Language
Terraform gebruikt een hoog-niveau taal genaamd HashiCorp’s Configuration Language (HCL), speciaal ontworpen voor het definiëren van infrastructuur als code. Hoog-niveauconfiguratietalen hanteren een declaratieve syntaxis die abstracter en gebruiksvriendelijker is dan laag-niveau scripting en handmatige configuratie. Je bent misschien al eerder met hoog-niveautalen in aanraking gekomen, bijvoorbeeld in YAML- of JSON-bestanden.
HCL volgt een blokstructuur, waarbij elk genest blok resources en hun configuraties voorstelt. Resources worden expliciet gedefinieerd met namen en attributen.
resource "aws_instance" "example" {
ami = "ami-123456"
instance_type = "t2.micro"
}
Uitvoeringsplan
Nadat je de gewenste staat van je infrastructuur hebt gedefinieerd, genereert Terraform een uitvoeringsplan. Dit plan bevat de stappen die Terraform moet nemen om die staat te bereiken, zodat je de wijzigingen kunt beoordelen voordat ze worden toegepast. Het plan vooraf controleren voorkomt ongewenste aanpassingen, zoals het verwijderen van resources.
Statebeheer
Terraform onderhoudt een statebestand dat automatisch de huidige staat van je infrastructuur bijhoudt en als bron van waarheid dient om te bepalen welke wijzigingen nodig zijn. Standaard wordt het lokaal opgeslagen en heet het terraform.tfstate.
Providers
Providers zijn plug-ins die communiceren met API’s van cloudplatforms en andere diensten en waarmee Terraform een grote verscheidenheid aan resources kan beheren. Officiële providers worden ontwikkeld en onderhouden door HashiCorp en betrouwbare partners zoals AWS, Azure, Google Cloud, Github, Datadog, enz. Er zijn ook community-ontwikkelde plug-ins, te vinden op de Terraform Registry of op Github.
Resourcegrafiek
Terraform bouwt een resourcegrafiek die de resources van je infrastructuur en de relaties ertussen weergeeft. Dankzij deze grafiek kan Terraform effectieve plannen genereren, afhankelijkheden tussen resources afhandelen en ervoor zorgen dat resources in de juiste volgorde worden aangemaakt, bijgewerkt en verwijderd. De grafiek is ook een uitstekende manier om je infrastructuur te visualiseren en de impact van de beoogde wijzigingen te begrijpen.

Voorbeeld van een resourcegrafiek. Bron: HashiCorp-documentatie
Aan de slag met Terraform
Laten we onze eerste Terraform-workflow doorlopen. Als je nieuw bent in DevOps of cloud computing in het algemeen, raad ik aan om eerst onze cursussen Understanding Cloud Computing en Introduction to DevOps te volgen.
Installatie en setup
In deze Terraform-tutorial maken we resources aan op AWS. Als je wilt meedoen en nog geen account hebt, ga dan naar AWS en meld je aan.
- Download Terraform van de officiële website. Kies de juiste binary voor jouw besturingssysteem en volg de installatie-instructies.
- Open na de installatie een nieuw Terminal-venster en voer terraform -version uit om te controleren of de software correct is geïnstalleerd.
- Installeer de AWS CLI
- Configureer de AWS CLI door aws configure in je terminal uit te voeren. Je wordt gevraagd je Access Key ID, Secret Access Key, standaardregio en standaarduitvoerformaat in te voeren. Terraform zou hier automatisch toegang toe moeten hebben.
Eerste Terraform-configuratie
Maak een nieuwe map en je eerste configuratiebestand. Laten we het main.tf noemen en Terraform vertellen dat we een AWS EC2-instance willen maken. De code, geschreven in HCL, ziet er zo uit:
provider "aws" {
region = "us-west-2"
}
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
}
Het project initialiseren
Laten we nu ons Terraform-project initialiseren door het volgende commando uit te voeren:
$ terraform init
Dit is een eenmalig commando en zal de vereiste providerplug-ins downloaden. Je hoeft het bij latere wijzigingen niet opnieuw uit te voeren.
Plan
We willen nu ons uitvoeringsplan genereren. Onthoud: het plan laat de wijzigingen zien die Terraform moet doorvoeren om de gewenste staat te bereiken (in dit geval een draaiende EC2-instance). Voer uit:
$ terraform plan
Je zou iets als het volgende moeten zien:
Terraform will perform the following actions:
# aws_instance.example will be created
+ resource "aws_instance" "example" {
+ ami = "ami-0c55b159cbfafe1f0"
+ instance_type = "t2.micro"
...
}
Plan: 1 to add, 0 to change, 0 to destroy.
Apply
We hebben het plan beoordeeld en besluiten het nu uit te voeren en de resources te provisionen. Voer in je terminal het volgende uit:
$ terraform apply
Je wordt gevraagd om de actie te bevestigen. Typ “yes” om door te gaan.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
Je zou het volgende moeten zien:
aws_instance.example: Creating...
aws_instance.example: Still creating... [10s elapsed] aws_instance.example:
Creation complete after 15s [id=i-0abcdef1234567890]
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
Gefeliciteerd, je hebt je eerste EC2-instance op AWS geprovisioned met Terraform!
Voordelen van het gebruik van Terraform
We noemden al dat het gebruik van Terraform veel voordelen biedt, zoals consistentie en herhaalbaarheid, en minder menselijke fouten dankzij uitvoeringsplannen.
Andere voordelen zijn onder meer:
- Snelle provisioning: Terraform kan resources parallel aanmaken en bijwerken, wat vooral handig is om development-, test- en stagingomgevingen snel op te zetten.
- Meer samenwerking: In combinatie met een versiebeheersysteem zoals Git is Terraform een uitstekende manier om samenwerking en transparantie rond je infrastructuur te vergroten. Wijzigingen kunnen net als applicatiecode worden beoordeeld, goedgekeurd en gevolgd.
- Efficiënt herstel na calamiteiten: Als er iets misgaat, kan Terraform snel de volledige infrastructuur vanaf nul opnieuw opbouwen met dezelfde configuratiebestanden.
- Community-ondersteuning: Terraform stimuleert het gebruik van modules: herbruikbare configuraties die gedeeld kunnen worden en best practices bevorderen voor infrastructuurbeheer. Terraform heeft ook een actieve community en een uitgebreid ecosysteem van providers en modules, waardoor je waarschijnlijk iets vindt dat past bij je techstack, hoe niche die ook is.
Veelvoorkomende use-cases voor Terraform
Of je nu een Data Engineer bent die pipelines bouwt of een Data Scientist die je oplossingen naar productie wil brengen, Terraform is een geweldige tool om je infrastructuurbehoeften te beheren. Dit zijn enkele van de meest voorkomende use-cases:
Multicloud-beheer
Infrastructuur beheren die meerdere cloudproviders omvat is niet altijd eenvoudig. Met Terraform kan dat met één enkele tool. Bovendien kan Terraform on-premise resources beheren, waardoor het een ideale oplossing is voor organisaties die in een hybride omgeving opereren.
CI/CD-workflows
Terraform integreert goed met CI/CD-workflows, wat betekent dat je je infrastructuur kunt uitrollen als onderdeel van je softwareleveringsproces. Je kunt ook automatisch preview-, dev-, test- of stagingomgevingen aanmaken en verwijderen wanneer dat nodig is.
Kubernetes-clusters
Terraform kan Kubernetes-clusters beheren bij verschillende cloudproviders zoals AWS (EKS), Azure (AKS) of GCP (GKE). Dit omvat het inrichten van de benodigde infrastructuur, het beheren van Kubernetes-resources binnen het cluster en het schalen van clusters op basis van werkbelasting.
Terraform vs. andere IaC-tools
Andere populaire IaC-tools zijn onder meer Ansible, Chef, Puppet en AWS CloudFormation. Elke tool heeft zijn sterke en zwakke punten. Bekijk het overzicht:
| Feature | Terraform | Ansible | Chef | Puppet | CloudFormation |
|---|---|---|---|---|---|
| Open source | Ja | Ja | Ja | Ja | Nee |
| Declaratieve syntaxis | Ja | Nee | Nee | Ja | Ja |
| Multicloud-ondersteuning | Ja | Ja | Ja | Ja | Nee, alleen AWS |
| Statebeheer | Ja | Nee | Nee | Ja | Ja |
| Uitvoeringsplannen | Ja | Nee | Nee | Nee | Nee |
| Afhankelijkheidsbeheer | Ja | Beperkt | Beperkt | Ja | Ja |
Zoals we zien, zijn al deze tools op zichzelf krachtig, maar valt Terraform op door zijn uitgebreide featureset. Deze lijst is echter niet uitputtend en elke tool bedient net iets andere use-cases, afhankelijk van de vereisten. Zo is Ansible, met zijn procedurele karakter, zeer geschikt voor configuratiebeheer en ad-hoc taken.
Conclusie
In de afgelopen 10 jaar heeft Terraform duizenden organisaties geholpen bij het beheren van hun IT-infrastructuur. Met zijn declaratieve aanpak, automatiseringsmogelijkheden en ondersteuning voor multicloud-omgevingen is Terraform uitgegroeid tot een van de populairste IaC-tools en zal het ongetwijfeld een belangrijke speler blijven in infrastructuurbeheer naarmate cloudadoptie blijft groeien.
Nu je de basis van Terraform begrijpt, kun je je verdiepen in geavanceerdere configuraties en realistische scenario’s. Bekijk de HashiCorp Terraform-tutorials om te leren hoe je Terraform inzet voor veelvoorkomende taken en use-cases, of bekijk onze blogpost 14 Essential Data Engineering Tools to Use in 2024 om te begrijpen hoe Terraform past in de toolkit van een Data Engineer.

Ik ben een productgerichte tech lead die gespecialiseerd is in het laten groeien van startups in een vroeg stadium, van het eerste prototype tot product‑market fit en verder. Ik ben eindeloos nieuwsgierig naar hoe mensen technologie gebruiken, en ik werk graag nauw samen met oprichters en multidisciplinaire teams om gedurfde ideeën tot leven te brengen. Als ik geen producten bouw, zoek ik inspiratie in nieuwe uithoeken van de wereld of ontspan ik me in de yogastudio.
Veelgestelde vragen
Is Terraform geschikt voor kleinschalige projecten of is het vooral voor enterprise-gebruik?
Terraform is een handige tool, ongeacht de grootte van je project! Of je nu 5 resources moet beheren of 1000, je zult zeker de voordelen merken.
Wat kost Terraform?
Terraform is open-source en gratis te gebruiken, maar houd er rekening mee dat je cloudprovider(s) kosten in rekening brengen voor de resources die via Terraform worden geprovisioned en beheerd.
Kan Terraform databases en andere stateful services beheren?
Ja, Terraform kan databases en andere stateful services beheren. Je kunt instances, clusters en configuraties definiëren in je IaC-bestanden.
Hoe gaat Terraform om met secrets en gevoelige informatie in configuratiebestanden?
Terraform stimuleert best practices voor het omgaan met secrets door ondersteuning voor omgevingsvariabelen, versleutelde variabelen en integraties met secret management-diensten zoals HashiCorp Vault of AWS Secrets Manager.
