Verwendung statischer und dynamischer Inventare in Ansible – Teil 4

In diesem Teil 4 der Ansible-Serie wird erklärt, wie statische und dynamische Inventare verwendet werden, um Gruppen von Hosts in Ansible zu definieren.

In einem Ansible werden verwaltete Hosts oder Server, die vom Ansible-Kontrollknoten kontrolliert werden, in einer Host-Inventarisierungsdatei definiert, wie in erklärt. Eine Host-Inventarisierungsdatei ist eine Textdatei, die aus Hostnamen oder IP-Adressen von verwalteten Hosts oder Remote-Servern besteht.

Verwaltete Hosts können entweder als einzelne Einträge aufgelistet oder unter einem Gruppennamen kategorisiert werden, wie wir später sehen werden. In Ansible gibt es zwei Arten von Inventardateien: Statisch und dynamisch.

Schauen wir uns jede dieser Dateien an und sehen wir, wie wir sie verwalten können. Wir gehen davon aus, dass Sie Ansible bereits auf Ihrem Kontrollknoten installiert und eine passwortlose SSH-Verbindung zu Ihren verwalteten Hosts konfiguriert haben.

Statische Host-Inventardatei

In Ansible ist eine statische Inventardatei eine einfache Textdatei, die eine Liste der verwalteten Hosts enthält, die unter einer Hostgruppe entweder mit Hostnamen oder IP-Adressen deklariert sind.

Ein Hostgruppenname wird in eckige Klammern eingeschlossen, z.B. . Die verwalteten Host-Einträge werden später unterhalb des Gruppennamens aufgelistet, jeder in einer eigenen Zeile. Wie bereits erwähnt, werden die Hosts entweder mit Hostnamen oder IP-Adressen aufgelistet.

Host A ip_address Host B ip_addressHost c ip_address

Zur Veranschaulichung erstellen wir eine statische Inventardatei.

# mkdir test_lab && cd test_lab# vim hosts
Statische Inventardatei
173.82.115.165173.82.220.239webserversdatabase_servers

Speichern Sie die Datei und beenden Sie sie.

Wie Sie in der obigen Inventardatei sehen können, haben wir zwei Hostgruppen erstellt: Webserver und Datenbankserver. Außerdem haben wir eine zusätzliche Gruppe mit dem Namen datacenter erstellt, die eine Gruppe von Hostgruppen mit dem Suffix ': children' enthält, wie oben zu sehen ist.

Ansible erlaubt es auch, Gruppen von Hosts unter einem Gruppennamen zu platzieren. In der obigen Inventarisierungsdatei wurden die Gruppen webservers und database_servers unter dem Datacenter platziert.

Hinweis: Es ist nicht zwingend erforderlich, verwaltete Hosts in einer Hostgruppe zu platzieren. Sie können sie einfach mit ihren Hostnamen oder IP-Adressen auflisten.

173.82.202.239172.82.115.165load_balancer.pnl.com

Lassen Sie uns nun ein paar Ansible-Befehle verwenden, um auf die Host-Inventarisierungsdatei zu verweisen. Die grundlegende Syntax für die Inventarverwaltung ist wie folgt.

$ ansible {host-pattern} -i /path/of/inventory/file --list-hosts

Zum Beispiel,

$ ansible all -i /root/test_labs/hosts --list-hosts
List Ansible Hosts

Alternativ können Sie das Platzhalterzeichen * verwenden, um das Argument 'all' zu ersetzen.

$ ansible * -i /root/test_labs/hosts --list-hosts
Ansible-Hosts mit Platzhaltern auflisten

Um Hosts in einer Gruppe aufzulisten, geben Sie die Host-Gruppe anstelle von host-pattern an.

$ ansible webservers -i /root/test_labs/hosts --list-hosts
Ansible-Hosts in Gruppe auflisten

Dynamische Host-Inventarisierungsdatei

In einer Konfiguration – insbesondere in einem Cloud-Setup wie AWS, wo sich die Inventarisierungsdatei ständig ändert, wenn Sie Server hinzufügen oder stilllegen – wird es zu einer echten Herausforderung, die in der Inventarisierungsdatei definierten Hosts im Auge zu behalten. Es ist mühsam, die Hostdatei aufzurufen und die Liste der Hosts mit ihren IP-Adressen zu aktualisieren.

Und hier kommt eine dynamische Bestandsaufnahme ins Spiel. Was ist also eine dynamische Bestandsaufnahme? Ein dynamisches Inventar ist ein in Python, PHP oder einer anderen Programmiersprache geschriebenes Skript. Es ist in Cloud-Umgebungen wie AWS nützlich, wo sich IP-Adressen ändern, sobald ein virtueller Server gestoppt und wieder gestartet wird.

Ansible hat bereits Inventarisierungsskripte für öffentliche Cloud-Plattformen wie Google Compute Engine, Amazon EC2-Instanz, OpenStack, RackSpace, Cobbler und andere entwickelt.

Welche Vorteile hat ein dynamisches Inventar gegenüber einem statischen Inventar?
  • Dynamische Inventare eignen sich perfekt, um menschliche Fehler zu reduzieren, da die Informationen mithilfe von Skripten erfasst werden.
  • Die Verwaltung von Inventaren erfordert nur minimalen Aufwand.

Sie können Ihr eigenes, individuelles dynamisches Inventar in einer Programmiersprache Ihrer Wahl schreiben. Die Inventarisierung sollte ein Format in JSON zurückgeben, wenn entsprechende Optionen übergeben werden.

Ein vorhandenes dynamisches Inventarisierungsskript verwenden

Ein Skript, das zur Erstellung einer dynamischen Inventarisierung verwendet wird, muss ausführbar gemacht werden, damit Ansible es verwenden kann.

Um Informationen über die Hosts innerhalb eines dynamischen Inventarisierungsskripts abzurufen, führen Sie es einfach aus.

# ./script --list 

Wie bereits erwähnt, sollte die Ausgabe in JSON im folgenden Format erfolgen.

Ein Wörterbuch, das aus Gruppen (d.e webservers, database_Servers)
  • Eine Liste der verwalteten Hosts pro Gruppe
  • Ein Wörterbuch mit Variablen
Meta-Wörterbuch
  • Hosts und hostvars
Beispiel Output
Abschluss

In diesem Artikel haben wir gezeigt, wie man sowohl statische als auch dynamische Inventare erstellt. Eine statische Inventardatei ist eine einfache Textdatei, die eine Liste der verwalteten Hosts oder Remote-Knoten enthält, deren Nummern und IP-Adressen relativ konstant bleiben.

Eine dynamische Hostdatei hingegen ändert sich ständig, wenn Sie neue Hosts hinzufügen oder alte außer Betrieb nehmen. Die IP-Adressen der Hosts sind ebenfalls dynamisch, wenn Sie neue Hostsysteme anhalten und starten. Wir hoffen, dass Sie diese Anleitung informativ fanden.