[ English | Deutsch | 한국어 (대한민국) | English (United Kingdom) | Indonesia ]
Das Skript zum Erstellen des Inventars befindet sich unter inventory/dynamic_inventory.py
.
In diesem Abschnitt wird erläutert, wie ansible das Inventar ausführt und wie Sie es manuell ausführen können, um sein Verhalten zu sehen.
Beim Ausführen eines Ansible-Befehls (wie ansible
, ansible-playbook
oder openstack-ansible
) führt Ansible automatisch das dynamic_inventory.py
-Skript aus und verwendet seine Ausgabe als Inventar.
Führen Sie den folgenden Befehl aus:
# from the root folder of cloned OpenStack-Ansible repository
inventory/dynamic_inventory.py --config /etc/openstack_deploy/
Dieser Aufruf ist nützlich, wenn Änderungen am dynamischen Inventarscript getestet werden.
Das dynamic_inventory.py
nimmt das --config
Argument für die Verzeichnisholding-Konfiguration, aus der das Inventar erstellt werden soll. Wenn nicht angegeben, ist der Standard /etc/openstack_deploy/
.
Zusätzlich zu diesem Argument wird das Skelett der Basisumgebung im Verzeichnis inventory/env.d
der OpenStack-Ansible-Codebasis bereitgestellt.
Sollte ein env.d
-Verzeichnis in dem mit --config
angegebenen Verzeichnis gefunden werden, wird dessen Inhalt der Basisumgebung hinzugefügt, wobei im Konfliktfall der vorherige Inhalt überschrieben wird.
Bemerkung
In allen Versionen vor Rocky war dieses Argument file
.
Die folgende Datei muss im Konfigurationsverzeichnis vorhanden sein:
openstack_user_config.yml
Darüber hinaus könnte die Konfiguration oder Umgebung auf zwei zusätzliche Unterverzeichnisse aufgeteilt werden:
conf.d
env.d
(für die Anpassung der Umgebung)Das dynamische Inventarscript führt Folgendes aus:
Betrachten Sie als Beispiel den folgenden Auszug aus openstack_user_config.yml
:
identity_hosts:
infra01:
ip: 10.0.0.10
infra02:
ip: 10.0.0.11
infra03:
ip: 10.0.0.12
Das identity_hosts
-Wörterbuch definiert eine Ansible-Inventory-Gruppe mit dem Namen identity_hosts
, die die drei infra-Hosts enthält. Die Konfigurationsdatei inventory/env.d/keystone.yml
definiert zusätzliche Ansible-Inventory-Gruppen für die Container, die auf den drei Hosts mit dem Präfix infra bereitgestellt werden.
Beachten Sie, dass alle Dienste, die mit is_metal: true
gekennzeichnet sind, auf dem zugewiesenen physischen Host und nicht in einem Container ausgeführt werden. Ein Beispiel für die Verwendung von is_metal: true
ist inventory/env.d/cinder.yml
im Abschnitt container_skel
.
Weitere Informationen finden Sie unter Konfigurieren des Inventars.
Nach der Ausführung gibt das Skript eine Datei openstack_inventory.json
in das Verzeichnis aus, das mit dem Argument --config
angegeben wurde. Dies wird als Quelle der Wahrheit für wiederholte Läufe verwendet.
Warnung
Die openstack_inventory.json
Datei ist die Quelle der Wahrheit für die Umgebung. Wenn Sie dies in einer Produktionsumgebung löschen, bedeutet dies, dass der UUID-Teil der Containernamen neu generiert wird. Dies führt dazu, dass neue Container erstellt werden. Container, die unter der vorherigen Version generiert wurden, werden von Ansible nicht mehr erkannt, selbst wenn sie über SSH erreichbar sind.
Die gleiche JSON-Struktur wird auf stdout gedruckt, die von Ansible als Inventar für die Playbooks verwendet wird.
Wenn Sie das --check
-Flag bei der Ausführung von `` dynamic_inventory.py`` verwenden, wird der Inventarerstellungsprozess ausgeführt und nach bekannten Fehlern gesucht, aber keine Dateien auf die Festplatte geschrieben.
Wenn in den Dateien openstack_user_config.yml
oder conf.d
definierte Gruppen nicht in der Umgebung gefunden werden, wird eine Warnung ausgegeben.
Diese Überprüfung führt keine YAML-Syntaxvalidierung durch, obwohl sie fehlschlägt, wenn nicht korrigierbare Fehler auftreten.
Der Parameter --debug/-d
ermöglicht das Schreiben einer detaillierten Protokolldatei zum Debuggen des Verhaltens des Inventarscripts. Die Ausgabe wird in das aktuelle Arbeitsverzeichnis in inventory.log
geschrieben.
Die Datei inventory.log
wird angehängt, nicht überschrieben.
Wie --check
wird dieses Flag bei der Ausführung von ansible nicht aufgerufen.
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.