# 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.
- Version Control (Git): Speichert den Code der Infrastruktur.
- Terraform: Liest die
.tfDateien und ruft die Proxmox API auf. - Proxmox: Erstellt die VMs basierend auf Cloud-Init Templates (Artikel 670).
- 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.
- Plugin:
community.general.proxmox. - Aktion: Ansible ruft die API auf und erhält eine Liste aller VMs mit dem Tag
ansible:true. - Vorteil: Neue VMs, die Terraform erstellt hat, werden automatisch vom nächsten Ansible-Lauf erkannt und konfiguriert.
# 4. Day-2 Operations: CI/CD Pipeline Integration
Vom Commit zum Server.
Integrieren Sie die Automatisierung in GitLab oder GitHub Actions.
- Vorteil: Jede Änderung an der Infrastruktur wird erst ge-reviewed, dann getestet und schließlich automatisch in Proxmox ausgerollt (GitOps).
# 5. Troubleshooting & “War Stories”
Wenn der Code das RZ steuert.
# Top 3 Fehlerbilder
-
Symptom:
terraform applyscheitert mit “401 Unauthorized”.- Ursache: API-Token Berechtigungen unzureichend.
- Lösung: Token-Rechte auf
/Pfad in Proxmox prüfen.
-
Symptom: Terraform löscht eine produktive VM beim Update eines Netzwerks.
- Ursache: Fehlender
lifecycle { prevent_destroy = true }Block im Code.
- Ursache: Fehlender
-
Symptom: Ansible-Lauf ist extrem langsam.
- Fix: Nutzen Sie
pipelining = Truein deransible.cfg.
- Fix: Nutzen Sie
# “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:
- KPI: Anzahl der Ressourcen im Terraform-State vs. Realität in Proxmox.
- Alert: Wenn Terraform einen “Drift” erkennt (jemand hat manuell in der GUI etwas geändert).
# 7. Fazit & Empfehlung
Die Kombination von Terraform und Ansible ist das “Dynamic Duo” der Virtualisierung.
- Empfehlung: Verwalten Sie 100% Ihrer Standard-VMs über IaC.
- Wichtig: Sichern Sie Ihre
terraform.tfstateDatei wie Ihren Augapfel. Ohne diese Datei weiß Terraform nicht mehr, was es in Proxmox erstellt hat.
# 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 |