Ansible vs. Terraform: Was ist der Unterschied und wann nutzt du welches Tool?
Ansible und Terraform werden häufig in einem Atemzug genannt, wenn es um Infrastructure as Code (IaC) geht. Aber sie lösen grundlegend verschiedene Probleme. Dieser Vergleich klärt, was beide Tools können — und wo sie sich überschneiden.
Kurz erklärt: Was macht jedes Tool?
Terraform ist ein deklaratives IaC-Tool von HashiCorp. Du beschreibst in HCL (HashiCorp Configuration Language), wie deine Infrastruktur aussehen soll — welche VMs, Netzwerke, Datenbanken, Load Balancer. Terraform erstellt, ändert oder löscht diese Ressourcen dann bei Providern wie AWS, Azure, Hetzner oder GCP.
Ansible ist ein agentenloses Konfigurationsmanagement-Tool. Du schreibst Playbooks in YAML, die beschreiben, welche Pakete installiert, Konfigurationsdateien gesetzt und Services gestartet werden sollen. Ansible verbindet sich per SSH zu bestehenden Servern und bringt sie in den gewünschten Zustand.
Der entscheidende Unterschied: Provisioning vs. Konfiguration
Terraform brilliert beim Provisioning — also dem Erstellen von Infrastruktur. Du willst 10 VMs bei Hetzner, ein Kubernetes-Cluster bei AWS EKS oder ein Datenbankcluster — Terraform ist das richtige Tool.
Ansible brilliert bei der Konfiguration bestehender Infrastruktur. Du hast bereits Server und willst Nginx installieren, Firewall-Regeln setzen, Zertifikate verteilen, User anlegen — dann greif zu Ansible.
Zustandsmanagement: State-File vs. Agentenlos
Terraform verwaltet einen State (Zustandsdatei), der abbildet, welche Ressourcen existieren. Das ermöglicht terraform plan — eine Vorschau, was sich ändern würde. Aber der State muss gepflegt werden, und bei Teamarbeit braucht es einen Remote State (S3, Terraform Cloud).
Ansible ist zustandslos — es führt Tasks aus und verlässt sich auf idempotente Module. Kein State, kein State-Lock, keine State-Konflikte. Dafür fehlt die "Was würde sich ändern?"-Vorschau ohne Dry-Run.
Sprache und Lernkurve
Terraform nutzt HCL, eine deklarative Sprache, die JSON ähnelt. Die Syntax ist sauber, aber HCL-spezifische Eigenheiten (Expressions, Modules, Providers) brauchen Zeit.
Ansible nutzt YAML für Playbooks und Jinja2 für Templates. YAML kennt fast jeder Entwickler, und die Konzepte (Task, Handler, Role, Inventory) sind intuitiv. Für viele ist Ansible der schnellere Einstieg.
Cloud-Provider-Support
Terraform hat den breiteren Cloud-Provider-Support. AWS, Azure, GCP, Hetzner, DigitalOcean, VMware — tausende Provider sind verfügbar. Für Multi-Cloud-Setups ist Terraform Standard.
Ansible unterstützt über Cloud-Module ebenfalls viele Provider, ist aber nicht so tiefgreifend integriert wie Terraform. Für reine Cloud-Provisioning-Aufgaben ist Terraform die stärkere Wahl.
CI/CD-Integration
Beide Tools lassen sich gut in GitLab CI/CD oder GitHub Actions integrieren. Terraform via terraform apply in der Pipeline, Ansible via ansible-playbook. In der Praxis sieht man oft:
- Terraform in der Infrastruktur-Pipeline (Staging/Prod-Umgebungen aufsetzen)
- Ansible in der Deployment-Pipeline (Applikationen konfigurieren und deployen)
Zusammenspiel: Terraform + Ansible als Team
Die beste Antwort auf "Ansible vs. Terraform" ist oft: beide zusammen. Ein typisches Setup:
- Terraform provisioniert die VMs, Netzwerke und Datenbanken
- Ansible konfiguriert die VMs (Pakete, Services, App-Deployment)
Terraform gibt die IP-Adressen aus, Ansible bekommt sie als Inventory. Dieses Zusammenspiel ist in vielen produktiven Umgebungen Standard.
Wann welches Tool?
Terraform wählen, wenn:
- Du Infrastruktur bei Cloud-Providern erstellen oder löschen willst
- Multi-Cloud-Management gefragt ist
- Infrastrukturveränderungen planbar und reviewbar sein sollen
Ansible wählen, wenn:
- Du bestehende Server konfigurieren willst
- Du schnell ohne State-Management loslegen willst
- Du Deployments und Konfigurationsänderungen auf VMs ausrollen willst
Fazit
Ansible und Terraform sind keine Konkurrenten — sie ergänzen sich. Terraform provisioniert, Ansible konfiguriert. Wer nur ein Tool wählen muss: Für Cloud-Infrastruktur greif zu Terraform, für Serverkonfiguration zu Ansible. Wer beides kann, ist für moderne DevOps-Workflows gut gerüstet.