Ansible — Server agentenlos automatisieren und provisionieren

Praxis-Guide zu Ansible — agentenlose IT-Automatisierung über SSH, mit YAML-Playbooks provisionieren, deployen, konfigurieren und Secrets per Vault schützen.

Ansible ist ein agentenloses Automatisierungswerkzeug von Red Hat, mit dem du Server provisionierst, konfigurierst und Software ausrollst – ohne dass auf den verwalteten Hosts ein Agent laufen muss. Alles läuft über reines SSH, und dein gewünschter Zustand steckt als Code in deklarativen YAML-Playbooks. Hinter dem Namen stehen mehrere Binaries: ansible für Ad-hoc-Befehle, ansible-playbook für komplette Abläufe, dazu ansible-galaxy, ansible-vault und ansible-inventory. Dieser Guide führt dich vom schnellen Ping über strukturierte Playbooks bis zur verschlüsselten Secrets-Verwaltung.

Ad-hoc-Befehle

ansible <hosts> -m ping — Erreichbarkeit der Hosts testen.

ansible all -m ping

ansible <hosts> -a '<command>' — Einen Shell-Befehl auf den Remote-Hosts ausführen.

ansible webservers -a 'uptime'

ansible <hosts> -m <module> -a '<args>' — Ein Modul mit Argumenten ausführen.

ansible webservers -m apt -a 'name=nginx state=present' -b

ansible <hosts> -m copy -a 'src=<src> dest=<dest>' — Eine Datei auf die Remote-Hosts kopieren.

ansible all -m copy -a 'src=config.conf dest=/etc/app/config.conf' -b

ansible <hosts> -m service -a 'name=<svc> state=restarted' — Einen Dienst auf den Remote-Hosts neu starten.

ansible webservers -m service -a 'name=nginx state=restarted' -b

ansible <hosts> -b -a '<command>' — Befehl mit Rechte-Eskalation (become/sudo) ausführen.

ansible all -b -a 'apt update'

Playbooks

ansible-playbook <playbook> — Ein Playbook ausführen.

ansible-playbook site.yml

ansible-playbook <playbook> -i <inventory> — Mit einer bestimmten Inventory-Datei ausführen.

ansible-playbook deploy.yml -i production/hosts

ansible-playbook <playbook> --check — Trockenlauf: zeigt geplante Änderungen, ohne sie anzuwenden.

ansible-playbook site.yml --check

ansible-playbook <playbook> --diff — Datei-Unterschiede bei Änderungen anzeigen.

ansible-playbook site.yml --diff

ansible-playbook <playbook> -l <hosts> — Ausführung auf bestimmte Hosts beschränken.

ansible-playbook site.yml -l webserver01

ansible-playbook <playbook> -t <tags> — Nur Tasks mit bestimmten Tags ausführen.

ansible-playbook site.yml -t nginx,deploy

ansible-playbook <playbook> -e '<key>=<value>' — Zusätzliche Variablen übergeben.

ansible-playbook deploy.yml -e 'version=2.0 env=production'

Inventory

ansible-inventory --list — Das vollständige Inventory im JSON-Format anzeigen.

ansible-inventory --list -i hosts.yml

ansible-inventory --graph — Inventory als Baumstruktur anzeigen.

ansible-inventory --graph

ansible <hosts> --list-hosts — Anzeigen, welche Hosts auf ein Muster passen.

ansible webservers --list-hosts

ansible-playbook <playbook> --list-tasks — Alle Tasks eines Playbooks auflisten.

ansible-playbook site.yml --list-tasks

ansible-playbook <playbook> --list-tags — Alle Tags eines Playbooks auflisten.

ansible-playbook site.yml --list-tags

Galaxy & Rollen

ansible-galaxy init <role> — Eine neue Rollen-Verzeichnisstruktur anlegen.

ansible-galaxy init my-role

ansible-galaxy install <role> — Eine Rolle aus der Ansible Galaxy installieren.

ansible-galaxy install geerlingguy.docker

ansible-galaxy install -r requirements.yml — Rollen aus einer Requirements-Datei installieren.

ansible-galaxy install -r requirements.yml

ansible-galaxy collection install <collection> — Eine Ansible-Collection installieren.

ansible-galaxy collection install community.docker

ansible-galaxy list — Installierte Rollen auflisten.

ansible-galaxy list

Vault (Secrets)

ansible-vault create <file> — Eine neue verschlüsselte Datei anlegen.

ansible-vault create secrets.yml

ansible-vault edit <file> — Eine verschlüsselte Datei bearbeiten.

ansible-vault edit secrets.yml

ansible-vault encrypt <file> — Eine vorhandene Datei verschlüsseln.

ansible-vault encrypt vars/passwords.yml

ansible-vault decrypt <file> — Eine verschlüsselte Datei entschlüsseln.

ansible-vault decrypt secrets.yml

ansible-vault view <file> — Eine verschlüsselte Datei ansehen, ohne sie zu entschlüsseln.

ansible-vault view secrets.yml

ansible-playbook <playbook> --ask-vault-pass — Playbook ausführen und nach dem Vault-Passwort fragen.

ansible-playbook site.yml --ask-vault-pass

ansible-vault encrypt_string '<string>' --name '<var>' — Eine einzelne Zeichenkette zur Verwendung in YAML verschlüsseln.

ansible-vault encrypt_string 'mysecret' --name 'db_password'

Debugging & Konfiguration

ansible-playbook <playbook> -v — Mit ausführlicher Ausgabe laufen lassen (-v, -vv, -vvv, -vvvv).

ansible-playbook site.yml -vvv

ansible-config dump — Alle Konfigurationseinstellungen anzeigen.

ansible-config dump --only-changed

ansible-doc <module> — Dokumentation zu einem Modul anzeigen.

ansible-doc ansible.builtin.apt

ansible-doc -l — Alle verfügbaren Module auflisten.

ansible-doc -l | grep docker

ansible-playbook <playbook> --syntax-check — Playbook-Syntax prüfen, ohne es auszuführen.

ansible-playbook site.yml --syntax-check

ansible-playbook <playbook> --step — Playbook Schritt für Schritt mit Bestätigung ausführen.

ansible-playbook site.yml --step

Fazit

Mit demselben Werkzeugkasten deckst du beides ab: schnelle Ad-hoc-Eingriffe und reproduzierbare, in YAML versionierte Playbooks – idempotent, sodass mehrfaches Ausführen denselben Zielzustand herstellt. Geh bei heiklen Änderungen erst mit --check und --diff in den Trockenlauf, bevor du sie wirklich anwendest, denn ad hoc abgesetzte shell- oder command-Aufrufe und state=absent wirken sofort und unwiderruflich. Halte Secrets ausschließlich in ansible-vault verschlüsselt – niemals im Klartext ins Git-Repository – und setze -b/--become nur dort, wo du echte Root-Rechte brauchst.

Verwandte Kommandos

  • aws – Kommandozeilen-Client für Amazon-Web-Services-Ressourcen
  • terraform – deklaratives Infrastructure-as-Code über Provider hinweg