joe-speedboat.fact_inventory
Nom du Rôle
joe-speedboat.fact_inventory
Description
Ce rôle Ansible vous permet de collecter des faits essentiels à partir de diverses ressources d'endpoint, fournissant des informations précieuses pour la gestion de votre infrastructure. Que vous ayez besoin de déployer des machines virtuelles, de créer un aperçu de vos ressources ou de visualiser des topologies réseau, ce rôle simplifie le processus en collectant des faits à partir de différents endpoints.
Caractéristiques
- Indépendant des Ressources : Fonctionne avec une variété de ressources d'endpoint, comme VMware vCenter, AWS, Azure, et plus encore.
- Configuration Facile : Configuration simple utilisant des variables YAML pour spécifier les ressources dont vous voulez recueillir les faits.
- Données Structurées : Collecte des données structurées, y compris des centres de données, des clusters, des hôtes, des machines virtuelles, des datastores, des réseaux, et plus.
- Sortie JSON : Génère un fichier JSON bien formaté avec les faits recueillis, adapté pour une analyse ou une visualisation ultérieure.
Exigences
- Ansible >= 2.11
- Python >= 3.6 (sur l'hôte cible)
- Bibliothèques Python :
- pip
- setuptools
- vsphere-automation-sdk-python
- Collection Ansible :
- community.vmware
Variables du Rôle
Les variables suivantes sont disponibles pour configuration :
inventory_file
: Le chemin vers le fichier d'inventaire. Par défaut, il est/tmp/fact_inventory.json
.debug_vars
: Un booléen pour activer le mode débogage. Par défaut, il estTrue
.inventory_targets
: Une liste de cibles pour recueillir des faits. Chaque cible doit être un dictionnaire avec les clés suivantes :ressource_name
: Le nom de la ressource.type
: Le type de la ressource (ex. : "vsphere").validate_certs
: Un booléen pour activer la validation des certificats.vcenter_api_url
: L'URL de l'API vCenter.vcenter_username
: Le nom d'utilisateur pour l'API vCenter.vcenter_password
: Le mot de passe pour l'API vCenter.datacenter_regex
: Une expression régulière pour filtrer les centres de données.cluster_regex
: Une expression régulière pour filtrer les clusters.host_regex
: Une expression régulière pour filtrer les hôtes.datastore_regex
: Une expression régulière pour filtrer les datastores.network_regex
: Une expression régulière pour filtrer les réseaux.vm_folder_regex
: Une expression régulière pour filtrer les dossiers de machines virtuelles.
Dépendances
Aucune.
Licence
GPLv3
Utilisation
Pour utiliser ce rôle, vous devez spécifier les variables dans la liste inventory_targets
dans votre playbook ou dans le fichier defaults/main.yml
. Chaque élément de la liste représente une cible à partir de laquelle recueillir des faits.
Les variables datacenter_regex
, cluster_regex
, host_regex
, datastore_regex
, network_regex
, et vm_folder_regex
vous permettent de filtrer les résultats de l'API vSphere. Ces variables acceptent des expressions régulières. Par exemple, si vous souhaitez recueillir des faits uniquement pour des centres de données dont les noms commencent par "dc", vous pouvez définir datacenter_regex
sur '^dc'.
Test
Avant d'exécuter les tests, vous devez créer un fichier vars.yml
dans le répertoire tests
avec votre configuration spécifique. Vous pouvez le faire en copiant le fichier vars_example.yml
:
cp tests/vars_example.yml tests/vars.yml
Ensuite, remplissez le fichier vars.yml
avec vos valeurs spécifiques, y compris les expressions régulières pour le filtrage.
Pour exécuter les tests, lancez la commande suivante :
ansible-playbook tests/test.yml -i tests/inventory
Cette commande exécutera le playbook test.yml
en utilisant le fichier d'inventaire situé dans le répertoire tests
.
Script CGI pour Options Rundeck
Avec Rundeck et JSON, vous pouvez créer d'excellents menus de tâches.
Mais pour cela, vous devez d'abord configurer le serveur cgi et l'utiliser avec le fichier de ressources JSON, créé par ce rôle.
Voici comment configurer lighttpd
avec cgi sur Rocky Linux 8 :
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 suit
print() # ligne vide, fin des en-têtes
print("<html>")
print("<head><title>Hello CGI</title></head>")
print("<body>")
print("<h1>Hello World</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
Dans ce rôle, j'ai fourni un cgi qui peut être utilisé pour servir ces options, il se trouve dans tests/cgi-bin/option.py
, il suffit de le copier dans le répertoire cgi-bin, de mettre à jour l'emplacement du fichier json et de l'appeler.
Veuillez garder à l'esprit que ce cgi est juste une preuve de concept pour le moment, rapide et simple.
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 # mettez à jour l'emplacement du fichier json
Et ensuite, vous pouvez l'appeler dans Rundeck :
[ "Datacenter1" ]
[ "Cluster1" ]
[ "LUN_01_VM_Replica", "LUN_02_VM_Replicas" ]
Et c'est plutôt incroyable... avec peu d'effort !
ansible-galaxy install joe-speedboat.fact_inventory