Ansible Inventories – Strukturierte Zielsystemverwaltung für skalierbare Automatisierung
Inventories sind das Bindeglied zwischen Ansible-Automatisierung und realer Infrastruktur. Sie definieren, welche Systeme existieren, wie sie gruppiert sind und wie Ansible sie erreicht.
Ohne ein sauber strukturiertes Inventory ist selbst das beste Playbook nicht skalierbar, nicht wartbar und fehleranfällig.
1. Aufgabe und Bedeutung von Inventories
Ein Inventory beschreibt:
- Zielhosts (IP-Adressen, DNS-Namen)
- Gruppierungen von Systemen
- Zugangsdaten und Verbindungsparameter
- Umgebungs- und systemspezifische Variablen
Inventories sind damit ein zentrales Steuerungsinstrument für:
- Multi-Server-Deployments
- Cloud- und Hybrid-Umgebungen
- Produktions-, Staging- und Testsysteme
2. Statisches Inventory – INI-Format
Das klassische Inventory-Format ist einfach und gut lesbar.
[webserver]
web01 ansible_host=192.168.10.10
web02 ansible_host=192.168.10.11
[dbserver]
db01 ansible_host=192.168.10.20
[all:vars]
ansible_user=admin
ansible_ssh_private_key_file=~/.ssh/id_rsa
Geeignet für:
- Kleine bis mittlere Umgebungen
- Statische Serverlandschaften
3. YAML-Inventories
YAML bietet mehr Struktur und ist besser skalierbar.
all:
vars:
ansible_user: admin
children:
webserver:
hosts:
web01:
ansible_host: 192.168.10.10
web02:
ansible_host: 192.168.10.11
dbserver:
hosts:
db01:
ansible_host: 192.168.10.20
Best Practice: YAML für komplexe Umgebungen bevorzugen.
4. Gruppen & Gruppierungskonzepte
Gruppen ermöglichen logische Zuordnung von Hosts:
- Rollenbasiert (web, db, cache)
- Umgebungsbasiert (prod, staging, test)
- Standortbasiert (dc1, dc2)
[prod:children]
webserver
dbserver
Ein Host kann mehreren Gruppen gleichzeitig angehören.
5. Host- und Gruppenvariablen
5.1 Host-spezifische Variablen
web01 ansible_host=192.168.10.10 web_port=8080
5.2 Gruppenvariablen
[webserver:vars]
web_port=80
Variablenhierarchie ist entscheidend für korrektes Verhalten.
6. Inventory-Verzeichnisstruktur (Best Practice)
inventory/
├── production/
│ ├── hosts.yml
│ └── group_vars/
│ ├── webserver.yml
│ └── dbserver.yml
├── staging/
│ ├── hosts.yml
│ └── group_vars/
└── test/
└── hosts.yml
Diese Struktur erlaubt saubere Trennung von Umgebungen.
7. Dynamische Inventories
In Cloud- und Container-Umgebungen ändern sich Hosts dynamisch. Dynamische Inventories beziehen ihre Daten aus:
- Cloud-Providern (AWS, Azure, GCP)
- VM-Plattformen
- CMDB-Systemen
Beispiel:
ansible-inventory -i aws_ec2.yml --graph
8. Verbindungsparameter & Zugriff
- ansible_user
- ansible_port
- ansible_connection
- ansible_become
Fehlerhafte Verbindungsparameter sind eine der häufigsten Ursachen für fehlgeschlagene Playbook-Ausführungen.
9. Typische Fehler & Fehlerbehebung
| Problem | Ursache | Lösung |
|---|---|---|
| Host unreachable | SSH, Firewall | Zugriff testen, Ports prüfen |
| Variablen greifen nicht | Falsche Hierarchie | group_vars prüfen |
| Falsche Hosts angesprochen | Gruppenfehler | ansible-inventory --graph |
10. Vor- und Nachteile verschiedener Inventory-Arten
Statisch
- Einfach
- Übersichtlich
Dynamisch
- Automatisch aktuell
- Ideal für Cloud & Scaling
Zusammenfassung
Inventories sind das Rückgrat jeder Ansible-Automatisierung. Eine saubere Struktur entscheidet über Skalierbarkeit, Sicherheit und Wartbarkeit.
Professionelle Umgebungen nutzen getrennte Inventories für jede Umgebung und setzen konsequent auf Variablenhierarchien.