joe-speedboat.fact_inventory

Nazwa roli

joe-speedboat.fact_inventory

Opis

Ta rola Ansible pozwala zbierać niezbędne informacje z różnych zasobów końcowych, dostarczając cennych danych do zarządzania infrastrukturą. Niezależnie od tego, czy potrzebujesz wdrożyć maszyny wirtualne, stworzyć przegląd swoich zasobów, czy zobrazować topologie sieci, ta rola upraszcza proces, zbierając informacje z różnych punktów końcowych.

Cechy

  • Niezależność od zasobów: Działa z różnymi zasobami końcowymi, takimi jak VMware vCenter, AWS, Azure i inne.
  • Łatwa konfiguracja: Prosta konfiguracja za pomocą zmiennych YAML, aby określić, z których zasobów chcesz zbierać dane.
  • Strukturalne dane: Zbiera dane strukturalne, w tym centra danych, klastry, hosty, maszyny wirtualne, magazyny danych, sieci i inne.
  • Wyjście w formacie JSON: Generuje dobrze sformatowany plik JSON z zebranymi danymi, odpowiedni do dalszej analizy lub wizualizacji.

Wymagania

  • Ansible >= 2.11
  • Python >= 3.6 (na docelowym hoście)
  • Pakiety Pythona:
  • Kolekcja Ansible:
    • community.vmware

Zmienne roli

Poniższe zmienne są dostępne do konfiguracji:

  • inventory_file: Ścieżka do pliku inwentarza. Domyślnie jest to /tmp/fact_inventory.json.
  • debug_vars: Bool, który włącza tryb debugowania. Domyślnie True.
  • inventory_targets: Lista celów do zbierania danych. Każdy cel powinien być słownikiem z następującymi kluczami:
    • ressource_name: Nazwa zasobu.
    • type: Typ zasobu (np. "vsphere").
    • validate_certs: Bool, który włącza walidację certyfikatów.
    • vcenter_api_url: URL API vCenter.
    • vcenter_username: Nazwa użytkownika dla API vCenter.
    • vcenter_password: Hasło dla API vCenter.
    • datacenter_regex: Wyrażenie regularne do filtrowania centrów danych.
    • cluster_regex: Wyrażenie regularne do filtrowania klastrów.
    • host_regex: Wyrażenie regularne do filtrowania hostów.
    • datastore_regex: Wyrażenie regularne do filtrowania magazynów danych.
    • network_regex: Wyrażenie regularne do filtrowania sieci.
    • vm_folder_regex: Wyrażenie regularne do filtrowania folderów VM.

Zależności

Brak.

Licencja

GPLv3

Użycie

Aby użyć tej roli, należy określić zmienne w liście inventory_targets w swoim playbooku lub w pliku defaults/main.yml. Każdy element listy reprezentuje cel, z którego mają być zbierane dane.

Zmienne datacenter_regex, cluster_regex, host_regex, datastore_regex, network_regex oraz vm_folder_regex pozwalają na filtrowanie wyników z API vSphere. Te zmienne akceptują wyrażenia regularne. Na przykład, jeśli chcesz zbierać informacje tylko z centrów danych, których nazwy zaczynają się na "dc", możesz ustawić datacenter_regex na '^dc'.

Testowanie

Przed uruchomieniem testów musisz stworzyć plik vars.yml w katalogu tests z Twoją specyficzną konfiguracją. Możesz to zrobić, kopiując plik vars_example.yml:

cp tests/vars_example.yml tests/vars.yml

Następnie wypełnij plik vars.yml swoimi wartościami, w tym wyrażeniami regularnymi do filtrowania.

Aby uruchomić testy, wykonaj następujące polecenie:

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

To polecenie uruchomi playbook test.yml z użyciem pliku inwentarza znajdującego się w katalogu tests.

Skrypt CGI dla opcji Rundeck

Dzięki Rundeck i JSON możesz stworzyć świetne menu zadań.
Ale najpierw musisz skonfigurować serwer cgi i używać go z plikiem zasobów JSON, stworzonym przez tę rolę.
Oto jak skonfigurować lighttpd z cgi na 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 jest poniżej
print()  # pusta linia, koniec nagłówków
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

W tej roli dostarczyłem cgi, które można wykorzystać do serwowania tych opcji. Znajduje się ono w tests/cgi-bin/option.py, wystarczy je skopiować do katalogu cgi-bin, zaktualizować lokalizację pliku JSON i wywołać.
Proszę pamiętać, że to cgi jest obecnie tylko dowodem koncepcji, wykonane szybko i na szybko.

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 # zaktualizuj lokalizację pliku JSON

A następnie możesz to wywołać w Rundeck:

[ "Datacenter1" ]
[ "Cluster1" ]
[ "LUN_01_VM_Replica", "LUN_02_VM_Replicas" ]

I to jest całkiem niesamowite ... przy niewielkim wysiłku.

O projekcie

Create JSON Ressource file of various vSphere endpoints

Zainstaluj
ansible-galaxy install joe-speedboat.fact_inventory
Licencja
gpl-3.0
Pobrania
4.5k
Właściciel
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 ...