# Proxmox IaC: Orchestrierung mit Terraform & Ansible

TL;DR / Management Summary In einem modernen Rechenzentrum wird Infrastruktur als Code (IaC) behandelt. Wir nutzen Terraform als Architekten (erstellt VMs, Netzwerke, Storage) und Ansible als Handwerker (installiert Linux-Pakete, konfiguriert Datenbanken). Ein Senior Admin nutzt diese Kombination über die Proxmox API, um hunderte Server konsistent, reproduzierbar und fehlerfrei auszurollen.


# 1. Die Werkzeug-Kette

Der Workflow der Automatisierung.

  1. Version Control (Git): Speichert den Code der Infrastruktur.
  2. Terraform: Liest die .tf Dateien und ruft die Proxmox API auf.
  3. Proxmox: Erstellt die VMs basierend auf Cloud-Init Templates (Artikel 670).
  4. Ansible: Verbindet sich via SSH mit den neuen VMs und installiert die Applikations-Stacks.

# 2. Terraform Provider-Setup

Die Verbindung zur API.

# provider.tf
terraform {
  required_providers {
    proxmox = {
      source  = "Telmate/proxmox"
      version = "2.9.14"
    }
  }
}

provider "proxmox" {
  pm_api_url      = "https://pve01.firma.local:8006/api2/json"
  pm_api_token_id = "terraform-user@pve!token-id"
  pm_api_token_secret = "XXXX-XXXX"
}

# 3. Deep Dive: Dynamisches Ansible Inventory

Server finden ohne Host-Listen.

Anstatt IPs manuell in Ansible zu pflegen, fragen wir Proxmox live ab.


# 4. Day-2 Operations: CI/CD Pipeline Integration

Vom Commit zum Server.

Integrieren Sie die Automatisierung in GitLab oder GitHub Actions.


# 5. Troubleshooting & “War Stories”

Wenn der Code das RZ steuert.

# Top 3 Fehlerbilder

  1. Symptom: terraform apply scheitert mit “401 Unauthorized”.

    • Ursache: API-Token Berechtigungen unzureichend.
    • Lösung: Token-Rechte auf / Pfad in Proxmox prüfen.
  2. Symptom: Terraform löscht eine produktive VM beim Update eines Netzwerks.

    • Ursache: Fehlender lifecycle { prevent_destroy = true } Block im Code.
  3. Symptom: Ansible-Lauf ist extrem langsam.

    • Fix: Nutzen Sie pipelining = True in der ansible.cfg.

# “War Story”: Der “Destroy” am Freitagnachmittag

Ein Administrator wollte eine Test-Umgebung löschen. Er führte terraform destroy aus, befand sich aber im falschen Workspace (Production statt Lab). Das Ergebnis: Innerhalb von 2 Minuten löschte die API 50 produktive Datenbank-Server. Die Rettung: Da wir alle VMs via PBS (Artikel 693) sicherten, konnten wir den Stand von vor 1 Stunde wiederherstellen. Lehre: Nutzen Sie in Terraform zwingend Remote State Locking und erzwingen Sie ein manuelles “Approval” für jeden Destructive-Step in Ihrer Pipeline.


# 6. Monitoring & Reporting

Code-Status.

# Terraform Plan Audit

Überwachen Sie die Änderungen am Infrastruktur-Code:


# 7. Fazit & Empfehlung

Die Kombination von Terraform und Ansible ist das “Dynamic Duo” der Virtualisierung.


# Anhang: Cheatsheet (IaC Befehle)

Aufgabe Befehl
Initialisierung terraform init
Plan ansehen terraform plan
VM ausrollen terraform apply
Software Setup ansible-playbook -i proxmox.yml site.yml

# Referenzen