Skip to main content

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.