Ansible unterscheidet sich fundamental von traditionellen Automatisierungslösungen durch seine agentenlose Push-Architektur. Im Gegensatz zu Master-Agent-Systemen wie Puppet oder Chef benötigt Ansible keine persistente Serverkomponente auf den verwalteten Systemen.
Traditionelle Systeme: Agent-Dienste auf jedem System → kontinuierliche Master-Server-Kommunikation → zusätzliche Installation, Konfiguration, Updates und Überwachung erforderlich
Ansible-Ansatz: Direkte Kommunikation über SSH/WinRM → keine dauerhaften Prozesse → eliminiert Software-Schichten und reduziert Wartungsaufwände, Sicherheitsrisiken und Ausfallpunkte
Funktion: Zentrale Komponente zur Steuerung aller Ansible-Operationen
Technische Anforderungen:
Unterstützte Systeme: Physische Server, VMs, Container, Netzwerkgeräte, Cloud-Services
Minimale Anforderungen:
| Format | Anwendungsfall | Vorteile |
|---|---|---|
| INI | Einfache, statische Umgebungen | Leicht verständliche Syntax |
| YAML | Komplexe Hierarchien | Bessere Struktur und Lesbarkeit |
| Script/Plugin | Dynamische Umgebungen | Automatischer Bezug aus Cloud/CMDB |
inventory/
├── hosts.yml # Haupt-Inventar
├── group_vars/
│ ├── all.yml # Globale Variablen
│ ├── webservers.yml # Webserver-Gruppe
│ └── databases.yml # Datenbank-Gruppe
└── host_vars/
├── web01.example.com.yml # Host-spezifische Variablen
└── db01.example.com.yml
Praktische Tipps:
web[01:10].example.comhost_vars/ und group_vars/
für bessere OrganisationPlaybooks definieren WAS erreicht werden soll (nicht WIE). Ansible ermittelt automatisch die notwendigen Schritte zum gewünschten Zustand.
Struktur: YAML-basierte Orchestrierung von Tasks → jeder Task nutzt spezifische Module → Handler reagieren auf Änderungen
Funktionsweise:
Vorteile: Keine permanenten Spuren, breite Funktionalität von Dateiverwaltung bis Cloud-Orchestrierung
| Plugin-Typ | Zweck | Beispiele | Anwendung |
|---|---|---|---|
| Connection | Kommunikationswege | ssh, winrm, local |
Verschiedene Betriebssysteme |
| Inventory | Dynamische Systemlisten | aws_ec2, azure_rm,
gcp_compute |
Cloud-Integration |
| Lookup | Externe Datenquellen | env, file, url,
dig |
API-Calls, Umgebungsvariablen |
| Filter | Datenmanipulation | to_json, select, map |
Template-Verarbeitung |
| Callback | Ausgabesteuerung | minimal, json,
profile_tasks |
Logging, Monitoring |
| Kommando | Funktion | Primärer Einsatz |
|---|---|---|
ansible-playbook |
Playbook-Ausführung | Hauptwerkzeug für Automatisierung |
ansible |
Ad-hoc-Kommandos | Schnelle Überprüfungen |
ansible-inventory |
Inventar-Analyse | Systemübersicht und Validierung |
| Kommando | Funktion | Wann verwenden |
|---|---|---|
ansible-galaxy |
Rollen/Collections-Management | Community-Inhalte installieren |
ansible-vault |
Verschlüsselung | Sichere Daten verwalten |
ansible-doc |
Dokumentation | Module/Plugin-Hilfe |
ansible-config |
Konfiguration | Setup-Validierung |
| Phase | Hauptaufgaben |
|---|---|
| Parsing-Phase | YAML-Syntax-Validierung Playbook-Struktur-Analyse Include/Import-Auflösung |
| Inventory-Auflösung | Zielknoten-Identifikation Variable-Zusammenführung (Precedence-Regeln) Gruppierung und Limits |
| Task-Ausführung | Verbindungsaufbau zu
Zielknoten Modul-Übertragung Parameter-Interpolation Remote-Ausführung |
| Result-Capture & Cleanup | Rückgabewerte
sammeln Status-Aggregation Callback-Plugin-Benachrichtigung Temporäre Dateien entfernen |
Konzept: Thematisch zusammengehörige Module, Plugins und Rollen in versionierten Paketen
Vorteile:
Jeder Task benötigt neue Verbindung → potenzielle Performance-Engpässe in großen Umgebungen
| Technik | Wirkung | Kombinierbar mit |
|---|---|---|
| Pipelining | Reduziert SSH-Verbindungen | ControlPersist, Parallelisierung |
| ControlPersist | Wiederverwendung von SSH-Verbindungen | Pipelining, Fact-Caching |
| Fact-Caching | Vermeidet wiederholtes Sammeln von Systeminformationen | Alle anderen Techniken |
| Parallelisierung | Gleichzeitige Ausführung auf mehreren Systemen | Pipelining, ControlPersist |
Praxis-Tipp: Kombinieren Sie mehrere Techniken für optimale Performance:
# ansible.cfg
[defaults]
host_key_checking = False
pipelining = True
fact_caching = memory
fact_caching_timeout = 3600
[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=60sSSH-Härtung:
# /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Protocol 2Ansible-Vault-Strategien:
Berechtigungsmanagement:
Die durchdachte Balance zwischen Einfachheit und Funktionalität macht Ansible zu einem wertvollen Werkzeug für moderne IT-Operationen. Die agentenlose Architektur reduziert nicht nur Komplexität, sondern ermöglicht auch Automatisierung für Organisationen jeder Größe, ohne Kompromisse bei Transparenz oder Erweiterbarkeit einzugehen.