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:
- pip
- setuptools
- vsphere-automation-sdk-python
- 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 istTrue
.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.
ansible-galaxy install joe-speedboat.fact_inventory