Wir haben in den letzten Wochen begonnen, Teile unserer Infrastruktur von Fabric-Skripten auf Ansible umzustellen.
Umgebung: ~200 Debian-8-Hosts (Web, Worker, kleinere DB-Server).
Spoiler: Das wird kein Kein Hype-Artikel – sondern spiegelt Praxiserfahrung.
Warum wir Fabric ersetzt haben
Fabric hat uns jahrelang gute Dienste geleistet. Aber:
- Keine echte Idempotenz
- State-Handling selbst gebaut
- Fehlerbehandlung uneinheitlich
- Deployments nicht deklarativ
Mit zunehmender Host-Anzahl wird das unübersichtlich.
Ansible bringt hier zwei entscheidende Punkte:
- Deklarativer Ansatz
- Idempotenz ohne Eigenbau
Technische Realität
Ansible ist agentless – aber:
- SSH muss laufen
- Python 2.x muss auf dem Zielsystem installiert sein
- Minimal-Images ohne Python machen Probleme
Das sollte man nicht verschweigen.
Beispiel: Nginx-Rollout auf 200 Hosts
Playbook stark vereinfacht:
- hosts: web
become: yes
tasks:
- name: Nginx installieren
apt:
name: nginx
state: present
update_cache: yes
- name: vHost deployen
template:
src: vhost.j2
dest: /etc/nginx/sites-available/app.conf
notify: reload nginx
handlers:
- name: reload nginx
service:
name: nginx
state: reloaded
Rollout mit:
ansible-playbook -f 30 web.yml
Mit 30 Forks dauert das in unserer Umgebung ca. 10–15 Minuten.
Wichtig:
Wir fahren Updates in Gruppen (Batching via serial:), nicht alles auf einmal.
Vergleich zu Puppet / Chef / Salt (realistisch betrachtet)
| Tool | Agent | Modell | Bemerkung |
|---|---|---|---|
| Ansible | Nein | Push | Einfacher Einstieg |
| Puppet | Ja | Pull | Stabil bei großen Umgebungen |
| Chef | Ja | Pull | Dev-nah |
| SaltStack | Meist | Push/Pull | Sehr schnell |
Ansible ist nicht „besser“.
Es ist:
- schneller einzuführen
- für klassische Sysadmins zugänglicher
- für 100–500 Hosts sehr angenehm
Für mehrere tausend Systeme kann man sich noch Salt oder Puppet genauer ansehen.
Was noch nervt
- Python-Abhängigkeit
- Fehlermeldungen manchmal unklar
- Debugging bei komplexen Roles nicht trivial
- Galaxy-Roles qualitativ sehr unterschiedlich
Man muss saubere eigene Standards definieren.
Best Practices, die sich (aktuell) bewährt haben
- Keine Monster-Playbooks
- Eigene Rollen-Struktur
--checkvor produktiven Runs (JA Immer )serial:für Rolling-Deployments- Secrets ausschließlich via
ansible-vault - Keine Business-Logik in Templates verstecken (Kann nach hinten losgehen!)
Fazit nach 3 Monaten
Ansible ersetzt bei uns:
- Fabric
- 70 % der Bash-Deploy-Skripte
- diverse Cron-Update-Jobs
Nicht ersetzt:
- Monitoring
- Orchestrierung komplexer Cluster
- DB-Migrations-Logik
Für 2017 ist Ansible ein sehr pragmatisches Werkzeug.
Nicht magisch. Aber solide.

