Wie wir im ersten Teil über Ansible gelernt haben, verwendet Ansible in der Standardeinstellung eine INI-Datei (/etc/ansible/hosts) für das Inventar. Die Pflege der Datei ist leider ziemlich mühsam. Wechselt man auf das YAML-Format, so wird die Pflege noch komplizierter.

Glücklicherweise existieren diverse Plugins für dynamische Inventarisierung. Hierbei gibt es die Möglichkeit, sich direkt an diverse Hypervisoren oder Inventarisierungssysteme anzuflanschen. Was aber, wenn die Administration ihre Hosts nach wie vor in MS-Excel-Listen pflegt, einfach weil sie es so gewohnt ist?

motherstarter unterstützt diverse Quellformate

In diesem Fall bedienen wir uns des Python-Tools motherstarter, welches genau unsere Aufgabe erledigt.

Die Installation erfolgt über den Python-Installer:

Das Tool unterstützt die Quellformate csv, json und xslx, was in den meisten Fällen ausreichend ist.

Das Inventar definieren wir uns in der Datei inventory.xlsx. Das Tabellenblatt nennen wir hierbei inventory. In der Datei definieren wir unsere Hostliste über die Spalten hostname und mgmt_ip. Die Spalte group definiert die zugehörige Gruppe.

Bild 1: motherstarter/inputs/inventory.xlsx

Template sortiert Einträge automatisch in Gruppen

Anschließend benötigen wir noch eine Datei groups.xslx für Gruppenvariablen, welche auch leer sein kann. Allerdings muss es auch hier ein Tabellenblatt groups geben.

Für die Umwandlung unseres Inventars in ein Ansible-kompatibles Format definieren wir uns ein Jinja-Template, das die einzelnen Einträge automatisch in die Gruppen einsortiert.

motherstarter/ansible/hosts.j2

Diese zwei Dateien genügen bereits, um unser Inventar zu erstellen.

Vollständige Verzeichnisstruktur

Leider lässt sich kein allgemeines Basisverzeichnis für die verschiedenen Optionen angeben, so dass der Befehlsaufruf etwas sperrig wirkt. Aus diesem Grund zeigen wir hier noch einmal die vollständige Verzeichnisstruktur:

Die hosts-Datei kann man anschließend direkt als Ansible-Inventar verwenden.

Im nächsten Teil der Serie geht es darum, wie wir an die Fakten über Systeme kommen, die wir für ein Ansible-Playbook benötigen – und zwar nicht nur statische Fakten, sondern auch dynamische. Denn für letztere müssen wir einen anderen Weg gehen.

Weitere Informationen

Sie möchten Ansible live erleben? Kontaktieren Sie uns für eine Demo.

Jetzt mehr erfahren über Ansible

motherstarter beschleunigt die Netzwerkautomatisierung