Terraform-cheatblad: nuttige commando's en voorbeelden

De lijst met alle Terraform-commando's

Inhoud

Hier is een uitgebreide Terraform-cheat sheet met essentiële opdrachten, configuratie-elementen, bronbeheer, modules, variabelen, state-beheer en beste praktijken.

Terraform is een open-source infrastructure-as-code (IaC)-tool ontwikkeld door HashiCorp, die gebruikers in staat stelt infrastructuur over meerdere cloudbedrijven (bijv. AWS, Azure, GCP) te definiëren en in te stellen met behulp van declaratieve configuratiebestanden. Het primaire doel is het automatiseren van infrastructuurprovisioning, het waarborgen van consistentie en het verminderen van handmatige fouten. Terraform ondersteunt multi-cloud, modulair en state-gedreven workflows, waardoor het een hoeksteen is van moderne DevOps-praktijken.

Voor meer ontwikkelaarsgereedschappen en workflows, bekijk Ontwikkelaarsgereedschappen: De complete gids voor moderne ontwikkelingsworkflows.

student die terraform gebruikt

Belangrijke Terraform-voordelen:

  • Declaratieve syntaxis: Definieer de gewenste infrastructuurtoestanden in code.
  • Provider-onafhankelijk: Werkt met AWS, Azure, GCP, Kubernetes en meer.
  • State-beheer: Houdt infrastructuurwijzigingen bij om conflicten te voorkomen.

Installatie en configuratiegids

https://developer.hashicorp.com/terraform/tutorials#get-started

Het Terraform-installatieproces is vrij eenvoudig.

  • Linux (Ubuntu/Debian):

    wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
    sudo apt update && sudo apt install terraform
    
  • Windows (WSL):

    wget -O terraform.zip https://releases.hashicorp.com/terraform/1.5.5/terraform_1.5.5_windows_amd64.zip
    unzip terraform.zip
    
  • macOS (Homebrew):

    brew install terraform
    

Voor terminalproductiviteit tijdens het werken met Terraform, zie Ubuntu-toetsenbordafkortingen: Complete cheat sheet.

Verificatie

terraform --version

Terraform CLI-opdrachten

Hieronder volgt de lijst met alle Terraform-opdrachten:

Opdracht Beschrijving
terraform init Initialiseer een nieuwe of bestaande Terraform-configuratiedirectory
terraform validate Controleer of de configuratie geldig is
terraform plan Toon uitvoeringsplan zonder wijzigingen aan te brengen
terraform apply Pas de wijzigingen toe die nodig zijn om de gewenste staat te bereiken
terraform destroy Vernietig door Terraform beheerde infrastructuur
terraform fmt Herformateer configuratiebestanden in de standaardstijl
terraform show Toon de huidige staat of plan
terraform refresh Werk de staat bij met de werkelijke infrastructuur
terraform providers Toon providers die in de configuratie worden gebruikt
terraform graph Visualiseer bronafhankelijkheden als een grafiek
terraform workspace list Lijst met alle beschikbare werkruimtes
terraform workspace new Maak een nieuwe werkruimte
terraform workspace select Schakel over naar een opgegeven werkruimte
terraform workspace show Toon de naam van de huidige werkruimte
terraform workspace delete Verwijder een opgegeven werkruimte
terraform output Toon uitvoerwaarden uit het state-bestand
terraform import Importeer een bestaande bron in Terraform
terraform taint Markeer een bron voor herbewerking bij de volgende apply
terraform untaint Markeer een bron niet meer als besmett
terraform state list Lijst met bronnen in het state-bestand
terraform state show Toon attributen van een enkele bron in de staat

Configuraties essenties

Bestandsextensies

  • .tf: Hoofdconfiguratiebestanden (HCL-syntaxis)
  • .tfvars: Variabelewaarden

Terraform-bloktypen

  • Provider-voorbeeld
    provider "aws" {
      region = "us-east-1"
    }
    
  • Bron-voorbeeld
    resource "aws_instance" "web" {
      ami           = "ami-0abcdef"
      instance_type = "t2.micro"
    }
    
  • Variabele-voorbeeld
    variable "instance_count" {
      type    = number
      default = 2
    }
    
  • Output-voorbeeld
    output "instance_ip" {
      value = aws_instance.web.public_ip
    }
    
  • Module-voorbeeld
    module "vpc" {
      source = "./modules/vpc"
      cidr_block = var.vpc_cidr
    }
    

Werken met variabelen

  • Variabelen declareren
    variable "region" {
      description = "AWS regio"
      default     = "us-east-1"
    }
    
  • Waarden toewijzen
    • CLI: terraform apply -var="region=us-west-2"
    • tfvars-bestand: terraform apply -var-file="prod.tfvars"
  • Types: string, number, bool, list, map, object

State-beheer

  • State-bestand: terraform.tfstate
  • Remote state (S3-voorbeeld)
    backend "s3" {
      bucket = "my-tf-state"
      key    = "state.tfstate"
      region = "us-east-1"
    }
    
  • State bekijken:
    terraform show
    terraform state list

Lussen en voorwaarden

  • Count
    resource "aws_instance" "web" {
      count = 3
      ...
    }
    
  • For_each
    resource "aws_s3_bucket" "b" {
      for_each = var.bucket_names
      bucket   = each.value
    }
    
  • Voorwaarden
    instance_type = var.env == "prod" ? "t2.large" : "t2.micro"
    

Functies

  • String-interpolatie:
    resource "aws_s3_bucket" "example" { bucket = "my-bucket-${var.env}" }
  • Lijst- en map-voorbeelden:
    locals {
      my_map = { a = 1, b = 2 }
    }
    

Provisioners

Gebruikt voor het opstarten van bronnen. Voorbeeld:

resource "aws_instance" "web" {
  ...
  provisioner "local-exec" {
    command = "echo Instance created"
  }
}

Beste praktijken

  • Versiebeheer voor alle .tf-bestanden
  • Provider-versies vergrendelen om consistente implementaties te waarborgen
  • Remote backend voor state-beheer (S3, Azure Blob, enz.)
  • State-bestanden versleutelen in remote backends
  • Modulair maken van infrastructuur met behulp van herbruikbare modules
  • Documenteren van uw configuraties
  • Testen in staging voordat u naar productie gaat

Aanvullende referenties

  • Help: terraform --help of [command] --help voor opdracht-specifieke hulp
  • Debuggen: Stel TF_LOG=INFO of TF_LOG=DEBUG in voor uitgebreide logs
  • Opmaak: terraform fmt
  • Codering: Voor Base64-coderings/decoderingsoperaties, zie Codering - decodering Base64 op Windows, Linux en Mac

Deze cheat sheet biedt een snel toegankelijke referentie voor de meest voorkomende en geavanceerde aspecten van Terraform-gebruik - van opdrachten tot beste praktijken - en maakt het praktisch voor zowel beginners als gevorderde gebruikers. Heeft u een fijne dag!