Inleiding tot Terraform-modules
Krijg inzicht in de voordelen van modules voor het inkapselen en hergebruiken van veelvoorkomende infrastructuurpatronen, zodat code overzichtelijker en beter onderhoudbaar wordt.
Inleiding tot Terraform-modules is een gratis Terraform als Infrastructure as Code-les op CoddyKit. Dit is les 1 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.
Wat zijn Terraform-modules?
Een Terraform-module is een zelfstandig pakket met Terraform-configuraties. Zie het als een functie of klasse in programmeertalen. Hiermee kun je gerelateerde resources groeperen en als één geheel beheren.
Modules helpen je infrastructuurcode te organiseren en beter beheersbaar te maken, vooral bij grotere projecten.
Waarom Terraform-modules gebruiken?
Modules bieden verschillende belangrijke voordelen voor infrastructuur als code:
- Herbruikbaarheid: Definieer een deel van je infrastructuur één keer en gebruik het meerdere keren in verschillende projecten of omgevingen.
- Organisatie: Deel complexe configuraties op in kleinere, beheersbare en logische onderdelen.
- Consistentie: Zorg ervoor dat resources steeds op een gestandaardiseerde manier worden ingericht, zodat configuratieverschillen en fouten afnemen.
- Samenwerking: Teams kunnen modules ontwikkelen en delen, waardoor de ontwikkeling sneller verloopt en standaarden behouden blijven.
De structuur van een module uitgelegd
Een Terraform-module is in wezen een map met een of meer .tf-bestanden. Hoewel de structuur flexibel is, bevat een veelgebruikte structuur het volgende:
main.tf: Definieert de belangrijkste resources die de module maakt.variables.tf: Declareert invoervariabelen waarmee je het gedrag van de module aanpast.outputs.tf: Definieert uitvoerwaarden die de module beschikbaar maakt voor de aanroepende configuratie.versions.tf: Specificeert de versiebeperkingen voor Terraform en providers van de module.
Deze overzichtelijke structuur helpt je code netjes en begrijpelijk te houden.
Je eerste modulecode
We definiëren een zeer eenvoudige module die een AWS S3-bucket maakt. Deze code staat doorgaans in een eigen map, bijvoorbeeld modules/my_s3_bucket/main.tf.
Dit volledige bestand kan als rootmodule worden uitgevoerd om het in actie te zien, maar het belangrijkste doel hier is de interne structuur van een module te laten zien.
provider "aws" {
region = "us-east-1" # Example region
}
variable "bucket_name" {
description = "Name for the S3 bucket."
type = string
}
variable "acl_setting" {
description = "ACL for the S3 bucket."
type = string
default = "private"
}
resource "aws_s3_bucket" "example_bucket" {
bucket = var.bucket_name
acl = var.acl_setting
tags = {
Environment = "Dev" # Example tag
}
}
output "bucket_id" {
description = "The ID of the S3 bucket."
value = aws_s3_bucket.example_bucket.id
}
output "bucket_arn" {
description = "The ARN of the S3 bucket."
value = aws_s3_bucket.example_bucket.arn
}Module-invoer: variabelen
Met invoervariabelen kun je het gedrag van je module aanpassen zonder de kerncode te wijzigen. Je definieert ze in een variables.tf-bestand in de modulemap.
Wanneer je een module aanroept, geef je waarden door aan deze variabelen. Daardoor kun je de module gemakkelijk hergebruiken voor verschillende scenario's en omgevingen. Zie ze als argumenten van een functie.
variable "bucket_name" {
description = "Name for the S3 bucket."
type = string
}
variable "acl_setting" {
description = "ACL for the S3 bucket."
type = string
default = "private"
}Module-uitvoer: gegevens beschikbaar maken
Uitvoerwaarden worden gebruikt om gegevens vanuit een module beschikbaar te maken voor de configuratie die de module aanroept. Zo krijg je toegang tot belangrijke informatie over de resources die de module heeft gemaakt.
Je definieert uitvoerwaarden in een outputs.tf-bestand in de modulemap. Andere delen van je Terraform-configuratie en zelfs andere modules kunnen hiernaar verwijzen.
output "bucket_id" {
description = "The ID of the S3 bucket."
value = aws_s3_bucket.example_bucket.id
}
output "bucket_arn" {
description = "The ARN of the S3 bucket."
value = aws_s3_bucket.example_bucket.arn
}Je aangepaste module aanroepen
Nu we onze module my_s3_bucket hebben gedefinieerd, roepen we deze aan vanuit een rootconfiguratie. Het attribuut source geeft aan waar Terraform de module kan vinden.
Voor lokale modules is dit een relatief pad naar de modulemap. We geven waarden door aan de invoervariabelen van de module en kunnen de beschikbare uitvoerwaarden gebruiken.
provider "aws" {
region = "us-east-1"
}
module "my_website_bucket" {
source = "./modules/my_s3_bucket" # Path to your local module
bucket_name = "my-unique-website-bucket-12345"
acl_setting = "public-read"
}
output "website_bucket_arn" {
description = "ARN of the website S3 bucket."
value = module.my_website_bucket.bucket_arn
}
output "website_bucket_id" {
description = "ID of the website S3 bucket."
value = module.my_website_bucket.bucket_id
}Verschillende modulebronnen
Modules zijn niet alleen lokaal! Terraform kan modules uit verschillende bronnen ophalen, waardoor je flexibel kunt werken:
- Lokale paden:
./modules/my_module(zoals in ons voorbeeld) - Terraform Registry:
hashicorp/vpc/aws(publiek beschikbare modules) - Git-opslagplaatsen:
git::https://example.com/repo.git - S3-buckets:
s3::https://s3-us-west-2.amazonaws.com/example-bucket/module.zip
De Terraform Registry is een uitstekende plek om vooraf gebouwde, door de community gecontroleerde modules voor veelgebruikte infrastructuurpatronen te vinden.
De praktische impact van modules
Stel je voor dat je honderden resources in meerdere omgevingen beheert (ontwikkeling, acceptatie, productie). Zonder modules zou je enorme, herhalende configuratiebestanden hebben.
Met modules kun je een patroon voor een "webserver" of "database" één keer definiëren. Vervolgens roep je die module aan voor elke instantie en geef je verschillende variabelen door voor omgevingsspecifieke instellingen. Dit vermindert fouten aanzienlijk, vereenvoudigt updates en maakt je infrastructuur echt schaalbaar.
Korte controle
Je hebt geleerd over de structuur en voordelen van Terraform-modules. Laten we kijken of je een belangrijk voordeel kunt herkennen.
Samenvatting en volgende stappen
In deze les hebben we Terraform-modules geïntroduceerd als krachtige hulpmiddelen om je infrastructuurcode te organiseren en te hergebruiken. Je hebt geleerd:
- Modules kapselen resources in herbruikbare eenheden.
- Ze verbeteren de organisatie, consistentie en herbruikbaarheid van code.
- Modules gebruiken
variables.tfvoor invoer enoutputs.tfvoor beschikbare gegevens. - Je kunt modules aanroepen vanuit lokale paden, registers of Git-opslagplaatsen.
Hierna gaan we dieper in op het maken van je eigen herbruikbare modules en verkennen we geavanceerdere patronen en best practices.
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 “Inleiding tot Terraform-modules” gratis?
Ja — de volledige tekst van “Inleiding tot Terraform-modules” 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 “Inleiding tot Terraform-modules”?
Krijg inzicht in de voordelen van modules voor het inkapselen en hergebruiken van veelvoorkomende infrastructuurpatronen, zodat code overzichtelijker en beter onderhoudbaar wordt. 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 1 van 4.
Hoe lang duurt de les “Inleiding tot Terraform-modules”?
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
- Inleiding tot Terraform-modules
- Herbruikbare modules maken
- Werkruimten voor omgevingen gebruiken
- Modules publiceren naar een registry