ansible automatisiert die Konfiguration von Servern — ohne Agent auf den Zielsystemen. Ansible verbindet sich per SSH (unter Windows per WinRM), führt Aufgaben (Tasks) aus und bringt die Systeme in den gewünschten Zustand. Playbooks sind in YAML geschrieben und dadurch leicht lesbar.

Ad-hoc-Befehle: Schnell etwas prüfen

ansible all -m ping
ansible all -m command -a "uptime"

ansible all -m ping testet die Verbindung zu allen Hosts des Inventars. Mit -m command -a "uptime" führt man einen einzelnen Befehl auf allen Servern aus — ohne ein Playbook schreiben zu müssen.

  • ansible all -m apt -a "name=nginx state=latest" -b — Pakete installieren (-b = sudo)
  • ansible all -m service -a "name=nginx state=restarted" -b — Dienste neu starten

Das Inventar

[webserver]
web1.example.com
web2.example.com

Die Datei hosts (Inventar) gruppiert die Server, auf denen Ansible arbeitet. Gruppen wie [webserver] oder [datenbank] erlauben, Befehle und Playbooks gezielt nur auf bestimmte Maschinen anzuwenden.

Playbooks: Der Standardweg

ansible-playbook playbook.yml

Ein Playbook beschreibt den Soll-Zustand deklarativ — Ansible prüft, was schon erfüllt ist, und ändert nur, was nötig ist (idempotent):

---
- hosts: webserver
  become: yes
  tasks:
    - name: Nginx installieren
      apt:
        name: nginx
        state: present
  • ansible-playbook playbook.yml --check — Probelauf, ohne etwas zu ändern
  • ansible-playbook playbook.yml --syntax-check — nur Syntax prüfen
  • ansible-playbook playbook.yml --limit web1.example.com — nur einen Host ansprechen
  • ansible-playbook playbook.yml -v — ausführliche Ausgabe (-vvv für Debugging)

Geheimnisse verschlüsseln: ansible-vault

ansible-vault encrypt group_vars/all.yml
ansible-playbook playbook.yml --ask-vault-pass

ansible-vault encrypt verschlüsselt Dateien mit Passwörtern oder Schlüsseln — damit können Secrets (API-Keys, Zugangsdaten) sicher im Repository liegen. Beim Lauf werden sie per --ask-vault-pass oder Vault-Key-Datei entschlüsselt.

Rollen und Galaxy

ansible-galaxy init meine-rolle
ansible-galaxy install geerlingguy.nginx

Rollen bündeln Tasks, Templates und Variablen zu wiederverwendbaren Bausteinen. ansible-galaxy lädt fertige Rollen aus der Ansible Galaxy Bibliothek — so bekommt man bewährte Konfigurationen für Webserver, Datenbanken und mehr.

Praxis-Tipp

Immer mit --check starten, Host-Variablen in group_vars/ und host_vars/ organisieren und Playbooks versionieren — am besten mit git. Die SSH-Grundlagen dazu stehen im Artikel ssh, scp und rsync, die Konfigurations-Syntax stammt aus YAML.