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