joe-speedboat.fact_inventory

Rollename

joe-speedboat.fact_inventory

Beschreibung

Diese Ansible-Rolle ermöglicht es Ihnen, wichtige Informationen von verschiedenen Endpunkt-Ressourcen zu sammeln, die wertvolle Informationen für die Verwaltung Ihrer Infrastruktur bereitstellen. Egal, ob Sie virtuelle Maschinen bereitstellen, einen Überblick über Ihre Ressourcen erstellen oder Netzwerk-Topologien visualisieren möchten, diese Rolle vereinfacht den Prozess, indem sie Fakten von verschiedenen Endpunkten sammelt.

Funktionen

  • Ressourcenunabhängig: Funktioniert mit einer Vielzahl von Endpunkt-Ressourcen, wie VMware vCenter, AWS, Azure und mehr.
  • Einfache Konfiguration: Einfache Konfiguration mit YAML-Variablen, um die Ressourcen anzugeben, von denen Sie Fakten sammeln möchten.
  • Strukturierte Daten: Sammelt strukturierte Daten, einschließlich Rechenzentren, Cluster, Hosts, virtuelle Maschinen, Datenspeicher, Netzwerke und mehr.
  • JSON-Ausgabe: Erstellt eine gut formatierte JSON-Datei mit den gesammelten Fakten, die für weitere Analysen oder Visualisierungen geeignet ist.

Anforderungen

  • Ansible >= 2.11
  • Python >= 3.6 (auf dem Zielhost)
  • Python-Pakete:
  • Ansible Sammlung:
    • community.vmware

Rollvariablen

Die folgenden Variablen stehen für die Konfiguration zur Verfügung:

  • inventory_file: Der Pfad zur Inventardatei. Standard ist /tmp/fact_inventory.json.
  • debug_vars: Eine boolesche Variable, um den Debug-Modus zu aktivieren. Der Standardwert ist True.
  • inventory_targets: Eine Liste von Zielen, von denen Fakten gesammelt werden sollen. Jedes Ziel sollte ein Wörterbuch mit den folgenden Schlüsseln sein:
    • ressource_name: Der Name der Ressource.
    • type: Der Typ der Ressource (z.B. "vsphere").
    • validate_certs: Eine boolesche Variable zur Aktivierung der Zertifikatsvalidierung.
    • vcenter_api_url: Die URL der vCenter API.
    • vcenter_username: Der Benutzername für die vCenter API.
    • vcenter_password: Das Passwort für die vCenter API.
    • datacenter_regex: Ein regulärer Ausdruck zur Filterung der Rechenzentren.
    • cluster_regex: Ein regulärer Ausdruck zur Filterung der Cluster.
    • host_regex: Ein regulärer Ausdruck zur Filterung der Hosts.
    • datastore_regex: Ein regulärer Ausdruck zur Filterung der Datenspeicher.
    • network_regex: Ein regulärer Ausdruck zur Filterung der Netzwerke.
    • vm_folder_regex: Ein regulärer Ausdruck zur Filterung der VM-Ordner.

Abhängigkeiten

Keine.

Lizenz

GPLv3

Nutzung

Um diese Rolle zu verwenden, müssen Sie die Variablen in der Liste inventory_targets in Ihrem Playbook oder in der Datei defaults/main.yml spezifizieren. Jeder Eintrag in der Liste stellt ein Ziel dar, von dem Fakten gesammelt werden sollen.

Die Variablen datacenter_regex, cluster_regex, host_regex, datastore_regex, network_regex und vm_folder_regex ermöglichen es Ihnen, die Ergebnisse von der vSphere API zu filtern. Diese Variablen akzeptieren reguläre Ausdrücke. Wenn Sie beispielsweise nur Fakten von Rechenzentren sammeln möchten, deren Namen mit "dc" beginnen, können Sie datacenter_regex auf '^dc' setzen.

Testen

Bevor Sie die Tests ausführen, müssen Sie eine Datei vars.yml im Verzeichnis tests mit Ihrer spezifischen Konfiguration erstellen. Sie können dies tun, indem Sie die Datei vars_example.yml kopieren:

cp tests/vars_example.yml tests/vars.yml

Dann fügen Sie die Werte in die vars.yml-Datei ein, einschließlich der regulären Ausdrücke für die Filterung.

Um die Tests auszuführen, führen Sie den folgenden Befehl aus:

ansible-playbook tests/test.yml -i tests/inventory

Dieser Befehl führt das Playbook test.yml unter Verwendung der Inventardatei aus, die im Verzeichnis tests gespeichert ist.

CGI-Skript für Rundeck-Optionen

Mit Rundeck und JSON können Sie großartige Jobmenüs erstellen.
Aber dafür müssen Sie zuerst den CGI-Server einrichten und ihn mit der JSON-Ressourcendatei verwenden, die von dieser Rolle erstellt wurde.
Hier ist, wie Sie lighttpd mit CGI auf Rocky Linux 8 einrichten:

dnf install lighttpd
systemctl enable lighttpd

cp -av /etc/lighttpd/modules.conf /etc/lighttpd/modules.conf.orig
cp -av /etc/lighttpd/lighttpd.conf /etc/lighttpd/lighttpd.conf.orig
cp -av /etc/lighttpd/conf.d/cgi.conf /etc/lighttpd/conf.d/cgi.conf.orig

sed -i 's@.*\(include.*conf.d/cgi.conf"\).*@\1@' /etc/lighttpd/modules.conf
sed -i 's@.*server\.use-ipv6.*@server\.use-ipv6 = "disable"@' /etc/lighttpd/lighttpd.conf
sed -i 's@.*server\.bind.*@server\.bind = "localhost"@' /etc/lighttpd/lighttpd.conf
sed -i 's@.*server\.port.*@server\.port = 8888@' /etc/lighttpd/lighttpd.conf
semanage port -a -t http_port_t -p tcp 8888
systemctl restart lighttpd
systemctl status lighttpd

lsof -i -P -n | grep light

test -f /usr/bin/python && ln -s /usr/bin/python3 /usr/bin/python

mkdir -p /var/www/lighttpd/cgi-bin

vi /var/www/lighttpd/cgi-bin/test.cgi
------------------
#!/usr/bin/env python3

print("Content-Type: text/html")  # HTML folgt
print()  # Leerzeile, Ende der Header
print("<html>")
print("<head><title>Hallo CGI</title></head>")
print("<body>")
print("<h1>Hallo Welt</h1>")
print("</body>")
print("</html>")
----------------------
chmod +x /var/www/lighttpd/cgi-bin/test.cgi

curl http://127.0.0.1:8888/cgi-bin/test.cgi

In dieser Rolle habe ich ein CGI bereitgestellt, das zur Bereitstellung dieser Optionen verwendet werden kann. Es befindet sich in tests/cgi-bin/option.py. Kopieren Sie es einfach in das CGI-Bin-Verzeichnis, aktualisieren Sie den Speicherort der JSON-Datei und rufen Sie es auf.
Bitte beachten Sie, dass dieses CGI derzeit nur ein Konzeptnachweis ist, schnell und einfach.

cp tests/cgi-bin/option.py /var/www/lighttpd/cgi-bin/option.cgi
chmod +x /var/www/lighttpd/cgi-bin/option.cgi
vi /var/www/lighttpd/cgi-bin/option.cgi # JSON-Dateispeicherort aktualisieren

Und dann können Sie es innerhalb von Rundeck aufrufen:

[ "Rechenzentrum1" ]
[ "Cluster1" ]
[ "LUN_01_VM_Replica", "LUN_02_VM_Replicas" ]

Und das ist ziemlich erstaunlich ... mit nicht viel Aufwand.

Über das Projekt

Create JSON Ressource file of various vSphere endpoints

Installieren
ansible-galaxy install joe-speedboat.fact_inventory
GitHub Repository
Lizenz
gpl-3.0
Downloads
4.5k
Besitzer
I don't do Linux for 20 years because I love Unix or consoles. OpenSource is what I love and want to do. moving together ... that fascinates me ...