Terraform-Cheatsheet – nützliche Befehle und Beispiele

Die Liste aller Terraform-Befehle

Inhaltsverzeichnis

Hier ist eine umfassende Terraform-Cheat-Sheet mit wesentlichen Befehlen, Konfigurationselementen, Ressourcenverwaltung, Modulen, Variablen, Zustandsverwaltung und Best Practices.

Terraform ist ein Open-Source-Infrastructure-as-Code-(IaC)-Tool, das von HashiCorp entwickelt wurde und es Nutzern ermöglicht, Infrastruktur über mehrere Cloud-Anbieter (z. B. AWS, Azure, GCP) hinweg mithilfe deklarativer Konfigurationsdateien zu definieren und bereitzustellen. Sein Hauptzweck besteht darin, die Infrastrukturbereitstellung zu automatisieren, Konsistenz zu gewährleisten und manuelle Fehler zu reduzieren. Terraform unterstützt Multi-Cloud-, modulare und zustandsgesteuerte Workflows und ist damit ein Eckpfeiler moderner DevOps-Praktiken.

Schüler nutzt Terraform

Wichtige Vorteile von Terraform:

  • Deklarative Syntax: Definieren Sie den gewünschten Infrastrukturzustand im Code.
  • Anbieterunabhängigkeit: Funktioniert mit AWS, Azure, GCP, Kubernetes und mehr.
  • Zustandsverwaltung: Verfolgt Infrastrukturänderungen, um Konflikte zu vermeiden.

Installations- und Einrichtungshandbuch

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

Der Installationsprozess von Terraform ist recht einfach.

  • 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
    

Überprüfung

terraform --version

Terraform-CLI-Befehle

Hier ist eine Liste aller Terraform-Befehle:

Befehl Beschreibung
terraform init Initialisiert ein neues oder bestehendes Terraform-Konfigurationsverzeichnis
terraform validate Prüft, ob die Konfiguration gültig ist
terraform plan Zeigt den Ausführungsplan an, ohne Änderungen vorzunehmen
terraform apply Wendet die erforderlichen Änderungen an, um den gewünschten Zustand zu erreichen
terraform destroy Zerstört die von Terraform verwaltete Infrastruktur
terraform fmt Formatiert Konfigurationsdateien im Standardstil
terraform show Zeigt den aktuellen Zustand oder Plan
terraform refresh Aktualisiert den Zustand mit der tatsächlichen Infrastruktur
terraform providers Zeigt die in der Konfiguration verwendeten Anbieter
terraform graph Visualisiert Ressourcenabhängigkeiten als Graph
terraform workspace list Listet alle verfügbaren Workspaces
terraform workspace new Erstellt einen neuen Workspace
terraform workspace select Wechselt zu einem bestimmten Workspace
terraform workspace show Zeigt den Namen des aktuellen Workspaces
terraform workspace delete Löscht einen bestimmten Workspace
terraform output Zeigt Ausgabewerte aus der Zustanddatei
terraform import Importiert eine bestehende Ressource in Terraform
terraform taint Markiert eine Ressource zur Neuerstellung beim nächsten Anwenden
terraform untaint Hebt die Markierung einer Ressource als kontaminiert auf
terraform state list Listet Ressourcen in der Zustanddatei
terraform state show Zeigt die Attribute einer einzelnen Ressource im Zustand

Konfigurationsgrundlagen

Dateierweiterungen

  • .tf: Hauptkonfigurationsdateien (HCL-Syntax)
  • .tfvars: Variablenwerte

Terraform-Blocktypen

  • Anbieterbeispiel
    provider "aws" {
      region = "us-east-1"
    }
    
  • Ressourcenbeispiel
    resource "aws_instance" "web" {
      ami           = "ami-0abcdef"
      instance_type = "t2.micro"
    }
    
  • Variablenbeispiel
    variable "instance_count" {
      type    = number
      default = 2
    }
    
  • Ausgabe-Beispiel
    output "instance_ip" {
      value = aws_instance.web.public_ip
    }
    
  • Modulbeispiel
    module "vpc" {
      source = "./modules/vpc"
      cidr_block = var.vpc_cidr
    }
    

Arbeiten mit Variablen

  • Variablen deklarieren
    variable "region" {
      description = "AWS-Region"
      default     = "us-east-1"
    }
    
  • Werte zuweisen
    • CLI: terraform apply -var="region=us-west-2"
    • tfvars-Datei: terraform apply -var-file="prod.tfvars"
  • Typen: string, number, bool, list, map, object

Zustandsverwaltung

  • Zustandsdatei: terraform.tfstate
  • Remote-Zustand (S3-Beispiel)
    backend "s3" {
      bucket = "my-tf-state"
      key    = "state.tfstate"
      region = "us-east-1"
    }
    
  • Zustand anzeigen: terraform show terraform state list

Schleifen und bedingte Anweisungen

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

Funktionen

  • Zeichenketteninterpolation: resource "aws_s3_bucket" "example" { bucket = "my-bucket-${var.env}" }
  • Listen-, Map-Beispiele:
    locals {
      my_map = { a = 1, b = 2 }
    }
    

Provisioner

Werden zum Bootstrapping von Ressourcen verwendet. Beispiel:

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

Best Practices

  • Versionierung aller .tf-Dateien
  • Anbieterversionen sperren, um konsistente Bereitstellungen zu gewährleisten
  • Remote-Backend für die Zustandsverwaltung (S3, Azure Blob usw.)
  • Zustandsdateien verschlüsseln in Remote-Backends
  • Infrastruktur modularisieren mit wiederverwendbaren Modulen
  • Konfigurationen dokumentieren
  • In der Staging-Umgebung testen, bevor Sie in die Produktion gehen

Zusätzliche Referenzen

  • Hilfe: terraform --help oder [command] --help für command-spezifische Hilfe
  • Fehlerbehebung: Setzen Sie TF_LOG=INFO oder TF_LOG=DEBUG für detaillierte Protokolle
  • Formatierung: terraform fmt

Diese Cheat-Sheet bietet einen schnellen Zugriff auf die häufigsten und fortgeschrittensten Aspekte der Terraform-Nutzung – von Befehlen bis hin zu Best Practices – und ist damit praktisch für Anfänger und fortgeschrittene Nutzer.