Terraform-Referenzliste – nützliche Befehle und Beispiele

Die Liste aller Terraform-Befehle

Inhaltsverzeichnis

Hier ist ein umfassender Terraform-Quick-Reference mit essenziellen Befehlen, Konfigurationselementen, Ressourcenverwaltung, Modulen, Variablen, Statusverwaltung und bewährten Methoden.

Terraform ist ein Open-Source-Tool für Infrastructure-as-Code (IaC), das von HashiCorp entwickelt wurde. Es ermöglicht Benutzern, Infrastruktur über mehrere Cloud-Anbieter hinweg (z. B. AWS, Azure, GCP) mithilfe deklarativer Konfigurationsdateien zu definieren und bereitzustellen. Sein Hauptzweck ist die Automatisierung der Infrastrukturbereitstellung, die Sicherstellung der Konsistenz und die Verringerung manueller Fehler. Terraform unterstützt Multi-Cloud, modulare und statusgesteuerte Workflows, was es zu einem Eckpfeiler moderner DevOps-Praktiken macht.

Für weitere Entwickler-Tools und Workflows sehen Sie Entwickler-Tools: Der vollständige Leitfaden für moderne Entwicklungsworkflows.

student using terraform

Wichtige Vorteile von Terraform:

  • Deklarative Syntax: Definieren Sie den gewünschten Infrastrukturstatus im Code.
  • Unabhängigkeit von Providern: Funktioniert mit AWS, Azure, GCP, Kubernetes und mehr.
  • Statusverwaltung: Verfolgt Änderungen an der Infrastruktur, um Konflikte zu vermeiden.

Installations- und Einrichtungsguide

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

Der Terraform-Installationsprozess ist ziemlich 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
    

Für die Terminalproduktivität bei der Arbeit mit Terraform sehen Sie Ubuntu-Tastenkürzel: Vollständiger Quick-Reference.

Verifizierung

terraform --version

Terraform CLI-Befehle

Hier ist die Liste aller Terraform-Befehle:

Befehl Beschreibung
terraform init Initialisieren eines neuen oder bestehenden Terraform-Konfigurationsverzeichnisses
terraform validate Überprüfen, ob die Konfiguration gültig ist
terraform plan Ausführungsplan anzeigen, ohne Änderungen vorzunehmen
terraform apply Änderungen anwenden, die für den gewünschten Status erforderlich sind
terraform destroy Von Terraform verwaltete Infrastruktur zerstören
terraform fmt Konfigurationsdateien im Standardstil neu formatieren
terraform show aktuellen Status oder Plan anzeigen
terraform refresh Status mit der realen Infrastruktur aktualisieren
terraform providers Anzeigen der in der Konfiguration verwendeten Provider
terraform graph Visualisierung der Ressourcenabhängigkeiten als Graph
terraform workspace list Alle verfügbaren Workspaces auflisten
terraform workspace new Einen neuen Workspace erstellen
terraform workspace select Zu einem angegebenen Workspace wechseln
terraform workspace show Den Namen des aktuellen Workspaces anzeigen
terraform workspace delete Einen angegebenen Workspace löschen
terraform output Ausgabe-Werte aus der Statusdatei anzeigen
terraform import Bestehende Ressource in Terraform importieren
terraform taint Eine Ressource für die Neuanlage beim nächsten Apply markieren
terraform untaint Eine Ressource als „befleckt" (tainted) aufheben
terraform state list Ressourcen in der Statusdatei auflisten
terraform state show Attribute einer einzelnen Ressource im Status anzeigen

Konfigurationselemente

Dateierweiterungen

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

Terraform-Block-Typen

  • Beispiel für einen Provider
    provider "aws" {
      region = "us-east-1"
    }
    
  • Beispiel für eine Ressource
    resource "aws_instance" "web" {
      ami           = "ami-0abcdef"
      instance_type = "t2.micro"
    }
    
  • Beispiel für eine Variable
    variable "instance_count" {
      type    = number
      default = 2
    }
    
  • Beispiel für eine Ausgabe
    output "instance_ip" {
      value = aws_instance.web.public_ip
    }
    
  • Beispiel für ein Modul
    module "vpc" {
      source = "./modules/vpc"
      cidr_block = var.vpc_cidr
    }
    

Arbeiten mit Variablen

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

Statusverwaltung

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

Schleifen und Bedingungen

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

Funktionen

  • String-Interpolation:
    resource "aws_s3_bucket" "example" { bucket = "my-bucket-${var.env}" }
  • Beispiele für Listen und Maps:
    locals {
      my_map = { a = 1, b = 2 }
    }
    

Provisioner

Wird zum Bootstrapping von Ressourcen verwendet. Beispiel:

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

Best Practices

  • Versionskontrolle für alle .tf-Dateien
  • Provider-Versionen sperren, um konsistente Bereitstellungen sicherzustellen
  • Remote-Backend für die Statusverwaltung (S3, Azure Blob usw.)
  • Statusdateien verschlüsseln in Remote-Backends
  • Infrastruktur modularisieren unter Verwendung wiederverwendbarer Module
  • Dokumentation Ihrer Konfigurationen
  • Testen im Staging-Umfeld vor der Produktion

Zusätzliche Referenzen

  • Hilfe: terraform --help oder [Befehl] --help für spezifische Befehlshilfe
  • Debugging: Setzen Sie TF_LOG=INFO oder TF_LOG=DEBUG für ausführliche Protokollierung
  • Formatierung: terraform fmt
  • Codierung: Für Base64-Codierungs-/Dekodierungsoperationen sehen Sie Codierung - Base64 auf Windows, Linux und Mac decodieren

Dieser Quick-Reference bietet eine schnelle Zugriffsmöglichkeit für die häufigsten und fortgeschrittenen Aspekte der Terraform-Nutzung – von Befehlen bis hin zu Best Practices – und macht ihn sowohl für Anfänger als auch für fortgeschrittene Anwender praxistauglich. Ich wünsche Ihnen einen schönen Tag!