Dies ist eine alte Version des Dokuments!
Ansible - Erweiterte Konfigurationsbeispiel: Inventory
Nachdem wir uns bereits eingehend mit den Grundlagen, mit der Installation von Ansible und auch schon mit der Grundkonfiguration beschäftigt sowie erste Erfahrungen mit Playbooks gesammelt haben, wollen wir uns nun mit der tiefer gehenden Konfiguration von Ansible beschäftigen. Ein wesentlicher Punkt, den wir bei unseren Überlegungen im Kapitel Ansible - Erweiterte Konfigurationsbeispiele angestellt hatten, war unter anderem Woher beziehen wir die Hostdefinitionen und deren Eigenschaften?.
Klar ist natürlich dass sich da eine Hobby-mässige Installation mit einer Hand voll Geräten sich wohl erheblich von einer professionellen Umgebung mit hunderten oder gar mehr Hosts unterscheiden wird. Bei ersteren wird man vermutlich alle Information bestmöglich versuchen z.B. in einer Datei oder in einem Verzeichnis vor zuhalten. Bei grösseren Installationen wird man hingegen eine CMDB1) zurück greifen und dort die Informationen pflegen, wie z.B.:
Egal was wir als Bai verwenden, Ziel sollte immer sein aus den aktuell gepflegten Daten alle Informationen so für Ansible aufzubereiten, dass alle relevanten Daten, die zum Abarbeiten eines Playbooks benötigt werden, auch zur Verfügung stehen.
Inventory
Zur Verwaltung/Inventarisierung von mehreren Knoten oder Hosts in unserer Infrastrukturumgebung verwendet Ansible Listen oder eine Gruppe von Listen, die man als Inventory bezeichnet. Im einfachsten Fall beschreibt solch eine Inventory-Datei lediglich Hosts und/oder deren Hostnamen bzw. IP-Adressen. Auf der anderen Seite kann man aber auch komplexe Landschaften abbilden und Eigenschaften einzelnen Hosts und /oder Gruppe zuordnen.
Im Kapitel (Grund-)Konfiguration - /etc/ansible/hosts hatten wir uns schon einmal kurz mit dem Thema Inventory beschäftigt. In den nachfolgenden Beispielen wollen wir nun intensiver auf Details dazu eingehen.
Im Kapitel How to build your inventory der Ansible-Onlinedoku finden sich dazu viele tiefergehende Informationen.
Ansible-Konfigurationsdatei und Inventory-Definition
In der Ansible-Konfigurationsdatei /etc/ansible/ansible.cfg
zeigt zu Beginn der default-Eintrag auf die vorgenannte Datei /etc/ansible/hosts
.
$ less /etc/ansible/ansible.cfg
... [defaults] # some basic default values... #inventory = /etc/ansible/hosts ...
Unsere eigene Konfigurationsdatei für die Hosts wollen wir aber künftig unserer Ansible-Administationsumgebung beim jeweiligen Admin-Users vorhalten. Im Beispiel unseres Adminusers django wäre dies entsprechend der Pfad /home/django/ansible/inventories/production
. Das entsprechende Ansible: Directory Layout haben wir ja mit Hilfe unsere Ansible-Playbooks zur initialen Einrichtung bereits erfolgreich angelegt.
In unserer benutzerspezifischen Ansible-Konfigurationsdatei wird auch bereits auf das entsprechende Ziel verwiesen.
$ less ~/.ansible.cfg
some basic default values... # Generated by Ansible on 2022-09-22, do not edit manually! # default: #inventory = /etc/ansible/hosts inventory = /home/django/ansible/inventories/production