- Ansible braucht keinen Agenten: Ansible verbindet sich per SSH mit den Zielsystemen, eine Installation auf dem verwalteten Server entfällt.
- Über 3.000 Module verfügbar: Für Server, Cloud, Netzwerk und Container stehen mehr als 3.000 Ansible-Module bereit, von apt bis AWS und von Docker bis Firewall.
- Playbooks sind idempotent: Ein Playbook lässt sich beliebig oft ausführen, Ansible ändert dabei nur, was tatsächlich vom Ziel-Zustand abweicht.
- LAMP-Stack in einem Playbook: Ein Beispiel-Playbook installiert Apache, PHP und MySQL auf mehreren Servern und hält dabei den Paket-Cache 3600 Sekunden lang gültig.
- Sensible Daten gehören in den Vault: Passwörter dürfen nicht im Klartext in Playbooks oder Inventories stehen, Ansible Vault verschlüsselt solche Variablen.
Server manuell konfigurieren, Updates einzeln einspielen, Konfigurationsdateien per Hand bearbeiten - das kostet Zeit, ist fehleranfällig und lässt sich kaum dokumentieren. Ansible löst dieses Problem: Ein Open-Source-Tool für Configuration Management und IT-Automatisierung, das ohne Agenten auskommt und mit einfachen YAML-Dateien arbeitet.
/01Was ist Ansible und warum sollten Sie es nutzen?
Ansible ist ein Automatisierungswerkzeug von Red Hat, das Server, Netzwerkgeräte und Cloud-Ressourcen konfiguriert und verwaltet. Der große Vorteil: Sie benötigen keine Software auf den Zielsystemen - Ansible verbindet sich per SSH und führt Aufgaben remote aus.
Agentenlos
Keine Installation auf Zielsystemen nötig. SSH-Zugang genügt - weniger Komplexität, weniger Sicherheitsrisiken.
YAML-basiert
Playbooks sind lesbare YAML-Dateien - keine Programmiersprache lernen, einfach zu verstehen und zu warten.
Idempotent
Playbooks können beliebig oft ausgeführt werden - Ansible ändert nur, was wirklich geändert werden muss.
Modular
Über 3.000 Module für Server, Cloud, Netzwerk, Container - von apt bis AWS, von Docker bis Firewall.
Infrastructure as Code: Mit Ansible werden Ihre Serverkonfigurationen zu versionierbarem Code. Sie können Änderungen nachvollziehen, in Git verwalten und bei Bedarf zurückrollen - genau wie bei Software-Entwicklung.
Vom Playbook zur produktiven Automatisierung ist es ein weiter Weg. Linux-Server-Management mit Ansible— wir bauen die Struktur auf und betreiben sie.
/02Ansible installieren
Ansible wird nur auf dem Control Node installiert - dem Rechner, von dem aus Sie Ihre Infrastruktur verwalten. Die Zielsysteme benötigen lediglich Python und SSH-Zugang.
# Repository hinzufügen sudo apt update sudo apt install software-properties-common sudo add-apt-repository --yes --update ppa:ansible/ansible # Ansible installieren sudo apt install ansible # Version prüfen ansible --version
Alternativ per pip für die aktuellste Version:
pip install ansible
/03Das Inventory: Ihre Serverliste
Das Inventory definiert, welche Server Ansible verwaltet. Die einfachste Form ist eine INI-Datei mit Hostnamen oder IP-Adressen:
# Webserver-Gruppe [webservers] web1.example.com web2.example.com 192.168.1.50 # Datenbankserver [databases] db1.example.com ansible_user=dbadmin # Alle Produktionsserver [production:children] webservers databases # Variablen für alle Server [all:vars] ansible_python_interpreter=/usr/bin/python3
Sie können Server in Gruppen organisieren und Variablen definieren. Die Gruppe all umfasst automatisch alle Hosts. Mit :children erstellen Sie Gruppen aus anderen Gruppen.
Best Practice: Nutzen Sie sprechende Gruppennamen und strukturieren Sie nach Funktion (webservers, databases) oder Umgebung (production, staging). So können Sie Playbooks gezielt auf bestimmte Servergruppen anwenden.
/04Ihr erstes Playbook
Ein Playbook beschreibt den gewünschten Zustand Ihrer Server. Es besteht aus Plays, die wiederum Tasks enthalten. Jeder Task nutzt ein Modul für eine bestimmte Aktion.
--- - name: Webserver einrichten hosts: webservers become: yes tasks: - name: Nginx installieren apt: name: nginx state: present update_cache: yes - name: Nginx starten und aktivieren service: name: nginx state: started enabled: yes - name: Firewall-Regel für HTTP ufw: rule: allow port: '80' proto: tcp
Das Playbook ausführen:
ansible-playbook -i inventory.ini webserver-setup.yml
Die wichtigsten Module
- apt/yum/dnf: Pakete installieren und verwalten
- service/systemd: Dienste starten, stoppen, aktivieren
- copy/template: Dateien auf Server kopieren
- file: Dateien und Verzeichnisse erstellen, Berechtigungen setzen
- user/group: Benutzer und Gruppen verwalten
- command/shell: Beliebige Befehle ausführen
- git: Repositories klonen und aktualisieren
/05Variablen und Templates
Variablen machen Ihre Playbooks flexibel und wiederverwendbar. Sie können im Inventory, in separaten Dateien oder direkt im Playbook definiert werden.
--- - name: Anwendung deployen hosts: webservers vars: app_name: myapp app_port: 8080 app_user: www-data tasks: - name: Konfiguration kopieren template: src: app.conf.j2 dest: "/etc/{{ app_name }}/config.conf" owner: "{{ app_user }}"
Templates nutzen die Jinja2-Syntax und erlauben dynamische Konfigurationsdateien:
# Generiert von Ansible server { listen {{ app_port }}; server_name {{ inventory_hostname }}; location / { proxy_pass http://127.0.0.1:{{ app_port }}; } }
/06Rollen: Wiederverwendbare Bausteine
Rollen sind der Schlüssel zu wartbarem Ansible-Code. Sie bündeln zusammengehörige Tasks, Templates, Variablen und Handler in einer definierten Struktur.
roles/
webserver/
tasks/
main.yml # Haupt-Tasks
handlers/
main.yml # Handler (z.B. Restart)
templates/
nginx.conf.j2 # Templates
files/
index.html # Statische Dateien
vars/
main.yml # Variablen
defaults/
main.yml # Standard-Werte
Rollen im Playbook verwenden:
--- - name: Server einrichten hosts: all roles: - common - webserver - monitoring
Ansible Galaxy: Unter galaxy.ansible.com finden Sie tausende fertige Rollen der Community. Mit ansible-galaxy install geerlingguy.docker installieren Sie beispielsweise eine gepflegte Docker-Rolle.
/07Praxisbeispiel: LAMP-Stack automatisieren
Ein vollständiges Beispiel: Installation eines LAMP-Stacks (Linux, Apache, MySQL, PHP) auf mehreren Servern.
--- - name: LAMP-Stack installieren hosts: webservers become: yes vars: mysql_root_password: "{{ vault_mysql_password }}" php_packages: - php - php-mysql - php-fpm tasks: - name: Pakete aktualisieren apt: update_cache: yes cache_valid_time: 3600 - name: Apache installieren apt: name: apache2 state: present notify: Restart Apache - name: PHP-Pakete installieren apt: name: "{{ php_packages }}" state: present - name: MySQL installieren apt: name: - mysql-server - python3-pymysql state: present handlers: - name: Restart Apache service: name: apache2 state: restarted
/08Best Practices für den Einstieg
- Klein anfangen: Starten Sie mit einfachen Tasks und erweitern Sie schrittweise
- Versionskontrolle: Speichern Sie alle Playbooks in Git - Änderungen sind nachvollziehbar
- Ansible Vault: Verschlüsseln Sie sensible Daten wie Passwörter mit
ansible-vault - Check-Modus: Testen Sie mit
--checkbevor Sie Änderungen anwenden - Diff-Ausgabe: Nutzen Sie
--diffum Änderungen an Dateien zu sehen - Tags verwenden: Taggen Sie Tasks, um nur Teile eines Playbooks auszuführen
Sicherheitshinweis: Speichern Sie niemals Passwörter im Klartext in Playbooks oder Inventories. Nutzen Sie ansible-vault encrypt für sensible Variablen oder externe Secrets-Manager.
/09Fazit: Automatisierung zahlt sich aus
Ansible senkt die Einstiegshürde in die IT-Automatisierung erheblich. Die agentenlose Architektur, die lesbare YAML-Syntax und die große Community machen es zum idealen Werkzeug für Einsteiger - ohne dass Sie auf Leistung verzichten müssen.
Beginnen Sie mit kleinen Aufgaben: Ein Playbook, das Updates auf allen Servern einspielt. Ein Template für Ihre Nginx-Konfiguration. Eine Rolle für die Grundinstallation neuer Server. Mit jedem automatisierten Schritt sparen Sie Zeit und reduzieren Fehler.
Der wichtigste Tipp: Starten Sie heute. Die beste Zeit, Ansible zu lernen, war vor fünf Jahren - die zweitbeste ist jetzt.
- Red Hat, Ansible — Automatisierungswerkzeug für Configuration Management.
- Ansible Galaxy, Community-Repository für Ansible-Rollen.
