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 :
  • 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 est True.
  • 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 !

À propos du projet

Create JSON Ressource file of various vSphere endpoints

Installer
ansible-galaxy install joe-speedboat.fact_inventory
Licence
gpl-3.0
Téléchargements
4.5k
Propriétaire
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 ...