Sobes.tech
Junior

Wat is Terraform?

sobes.tech AI

Antwoord van AI

Terraform is een open-source tool ontwikkeld door HashiCorp voor het beheren van infrastructuur als code (IaC). Het stelt je in staat om infrastructuur te beschrijven met behulp van de declaratieve taal HCL (HashiCorp Configuration Language) of JSON, en deze vervolgens automatisch uit te rollen, te wijzigen en te verwijderen.

Belangrijkste kenmerken van Terraform:

  • Declaratief: Je beschrijft de gewenste staat van de infrastructuur, en Terraform bepaalt de acties die nodig zijn om deze te bereiken.
  • Onveranderlijk: Terraform geeft de voorkeur aan het creëren van nieuwe resources in plaats van het wijzigen van bestaande bij grote configuratiewijzigingen, wat de betrouwbaarheid en voorspelbaarheid verhoogt.
  • Providers: Ondersteunt een groot aantal cloud service providers (AWS, Azure, GCP), evenals andere services (Kubernetes, Docker, databases) via een providersysteem.
  • Status: Terraform houdt de status van de uitgerolde infrastructuur bij in een statusbestand, waardoor het de huidige toestand kan begrijpen en de benodigde wijzigingen kan berekenen.
  • Modules: Mogelijkheid om herbruikbare configuratieblokken te maken voor het organiseren van code en het vereenvoudigen van het beheer van complexe infrastructuren.
  • Planning: Voordat wijzigingen worden toegepast, toont Terraform een plan van acties dat wordt uitgevoerd, om onverwachte gevolgen te voorkomen.

De levenscyclus van werken met Terraform omvat meestal de volgende fasen:

  1. Initialisatie (terraform init): Laadt de benodigde providers en modules.
    terraform init
    // Initialiseer de werkdirectory
    
  2. Planning (terraform plan): Genereert een uitvoeringsplan dat laat zien welke resources worden gemaakt, gewijzigd of verwijderd.
    terraform plan
    // Maak en toon het uitvoeringsplan
    
  3. Toepassing (terraform apply): Voert het plan uit om de infrastructuur te maken of te wijzigen.
    terraform apply
    // Pas het plan toe op de doelinfrastructuur
    
  4. Verwijdering (terraform destroy): Verwijdert alle resources die worden beheerd door de huidige Terraform-configuratie.
    terraform destroy
    // Verwijder alle resources die worden beheerd door de huidige staat
    

Voorbeeld van een eenvoudige resourcebeschrijving in HCL:

resource "aws_instance" "example" {
  # Resource type (AWS instance) en naam in de configuratie
  ami           = "ami-0abcdef1234567890" # ID van de AMI-afbeelding
  instance_type = "t2.micro"            # Type van de instantie
  tags = {
    # Labels voor de resource
    Name = "example-instance"
  }
}

Terraform vereenvoudigt en automatiseert het beheer van infrastructuur aanzienlijk, waardoor het voorspelbaarder, schaalbaarder en versieerbaar wordt.