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 pingansible <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' -bansible <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' -bansible <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' -bansible <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.ymlansible-playbook <playbook> -i <inventory> — Mit einer bestimmten Inventory-Datei ausführen.
ansible-playbook deploy.yml -i production/hostsansible-playbook <playbook> --check — Trockenlauf: zeigt geplante Änderungen, ohne sie anzuwenden.
ansible-playbook site.yml --checkansible-playbook <playbook> --diff — Datei-Unterschiede bei Änderungen anzeigen.
ansible-playbook site.yml --diffansible-playbook <playbook> -l <hosts> — Ausführung auf bestimmte Hosts beschränken.
ansible-playbook site.yml -l webserver01ansible-playbook <playbook> -t <tags> — Nur Tasks mit bestimmten Tags ausführen.
ansible-playbook site.yml -t nginx,deployansible-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.ymlansible-inventory --graph — Inventory als Baumstruktur anzeigen.
ansible-inventory --graphansible <hosts> --list-hosts — Anzeigen, welche Hosts auf ein Muster passen.
ansible webservers --list-hostsansible-playbook <playbook> --list-tasks — Alle Tasks eines Playbooks auflisten.
ansible-playbook site.yml --list-tasksansible-playbook <playbook> --list-tags — Alle Tags eines Playbooks auflisten.
ansible-playbook site.yml --list-tagsGalaxy & Rollen
ansible-galaxy init <role> — Eine neue Rollen-Verzeichnisstruktur anlegen.
ansible-galaxy init my-roleansible-galaxy install <role> — Eine Rolle aus der Ansible Galaxy installieren.
ansible-galaxy install geerlingguy.dockeransible-galaxy install -r requirements.yml — Rollen aus einer Requirements-Datei installieren.
ansible-galaxy install -r requirements.ymlansible-galaxy collection install <collection> — Eine Ansible-Collection installieren.
ansible-galaxy collection install community.dockeransible-galaxy list — Installierte Rollen auflisten.
ansible-galaxy listVault (Secrets)
ansible-vault create <file> — Eine neue verschlüsselte Datei anlegen.
ansible-vault create secrets.ymlansible-vault edit <file> — Eine verschlüsselte Datei bearbeiten.
ansible-vault edit secrets.ymlansible-vault encrypt <file> — Eine vorhandene Datei verschlüsseln.
ansible-vault encrypt vars/passwords.ymlansible-vault decrypt <file> — Eine verschlüsselte Datei entschlüsseln.
ansible-vault decrypt secrets.ymlansible-vault view <file> — Eine verschlüsselte Datei ansehen, ohne sie zu entschlüsseln.
ansible-vault view secrets.ymlansible-playbook <playbook> --ask-vault-pass — Playbook ausführen und nach dem Vault-Passwort fragen.
ansible-playbook site.yml --ask-vault-passansible-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 -vvvansible-config dump — Alle Konfigurationseinstellungen anzeigen.
ansible-config dump --only-changedansible-doc <module> — Dokumentation zu einem Modul anzeigen.
ansible-doc ansible.builtin.aptansible-doc -l — Alle verfügbaren Module auflisten.
ansible-doc -l | grep dockeransible-playbook <playbook> --syntax-check — Playbook-Syntax prüfen, ohne es auszuführen.
ansible-playbook site.yml --syntax-checkansible-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.
Weiterführende Links
- Ansible-Dokumentation – offizielle Referenz zu Playbooks, Modulen und Inventory (englisch)
- Ansible-Vault – Secrets verschlüsseln – offizieller Leitfaden zur sicheren Verwaltung von Secrets (englisch)
- Ansible – Hintergrund und Einordnung in der deutschsprachigen Wikipedia