Jak używać statycznych i dynamicznych inwentarzy w Ansible – część 4
W tej części 4 serii Ansible wyjaśnimy, jak używać statycznych i dynamicznych inwentarzy do definiowania grup hostów w Ansible.
W Ansible zarządzane hosty lub serwery, które są kontrolowane przez węzeł kontrolny Ansible, są zdefiniowane w pliku inwentarza hosta, jak wyjaśniono w. Plik spisu hostów jest plikiem tekstowym, który składa się z nazw hostów lub adresów IP zarządzanych hostów lub serwerów zdalnych.
Zarządzane hosty mogą być wymienione jako indywidualne wpisy lub skategoryzowane pod nazwą grupy, jak zobaczymy później. W Ansible istnieją dwa rodzaje plików inwentaryzacyjnych: Static i Dynamic.
Przyjrzyjrzyjmy się każdemu z nich i zobaczmy, jak możemy nimi zarządzać. Zakładamy, że zainstalowałeś już Ansible na węźle kontrolnym i skonfigurowałeś połączenie SSH bez hasła do zarządzanych hostów.
- Statyczny plik inwentaryzacji hostów
- Dynamiczny plik inwentaryzacji hostów
- Jakie są zalety dynamicznej inwentaryzacji nad statyczną inwentaryzacją?
- Utilize an Existing Dynamic Inventory Script
- Słownik składający się z grup (tj.webservers, database_Servers)
- Słownik meta
- Przykładowe dane wyjściowe
- Podsumowanie
Statyczny plik inwentaryzacji hostów
W Ansible statyczny plik inwentaryzacji to plik tekstowy zawierający listę zarządzanych hostów zadeklarowanych w ramach grupy hostów przy użyciu nazw hostów lub adresów IP.
Nazwa grupy hostów jest ujęta w nawiasy kwadratowe, np. . Wpisy zarządzanych hostów są później wypisane poniżej nazwy grupy, każdy w osobnej linii. Jak omówiono wcześniej, hosty są wymienione przy użyciu albo nazwy hosta lub adresów IP.
Host A ip_address Host B ip_addressHost c ip_address
Dla celów ilustracyjnych, będziemy tworzyć statyczny plik inwentaryzacji.
# mkdir test_lab && cd test_lab# vim hosts
173.82.115.165173.82.220.239webserversdatabase_servers
Zapisz plik i wyjść.
Jak widać w pliku inwentaryzacji powyżej, mamy utworzone 2 grupy hostów: webservers i database_servers. Ponadto, stworzyliśmy dodatkową grupę o nazwie datacenter, który zawiera grupę grup hostów oznaczonych przez ': children'
sufiks jak widać powyżej.
Ansible pozwala również grupy hostów, aby być umieszczone pod nazwą grupy. W powyższym pliku inwentaryzacji, grupy webservers i database_servers zostały umieszczone pod datacenter.
UWAGA: Nie jest obowiązkowe, aby umieścić zarządzane hosty w grupie hostów. Można je po prostu wymienić, używając na przykład ich nazw hostów lub adresów IP.
173.82.202.239172.82.115.165load_balancer.pnl.com
Użyjmy teraz kilku poleceń Ansible, aby odwołać się do pliku inwentaryzacji hostów. Podstawowa składnia do zarządzania inwentarzem jest taka, jak pokazano.
$ ansible {host-pattern} -i /path/of/inventory/file --list-hosts
Na przykład,
$ ansible all -i /root/test_labs/hosts --list-hosts
Alternatywnie można użyć znaku wieloznacznego *
, aby zastąpić argument 'all'
.
$ ansible * -i /root/test_labs/hosts --list-hosts
Aby wyświetlić listę hostów w grupie, w miejscu host-pattern należy podać grupę hostów.
$ ansible webservers -i /root/test_labs/hosts --list-hosts
Dynamiczny plik inwentaryzacji hostów
W konfiguracji – zwłaszcza w chmurze, takiej jak AWS, gdzie plik inwentaryzacji ciągle się zmienia, gdy dodajesz lub usuwasz serwery, utrzymanie kart na hostach zdefiniowanych w pliku inwentaryzacji staje się prawdziwym wyzwaniem. To staje się niewygodne wracając do pliku hosta i aktualizacji listy hostów z ich adresami IP.
I to jest, gdzie dynamiczna inwentaryzacja przychodzi do gry. Więc co to jest dynamiczna inwentaryzacja? Dynamiczna inwentaryzacja jest skrypt napisany w Pythonie, PHP lub innym języku programowania. Przydaje się w środowiskach chmurowych takich jak AWS, gdzie adresy IP zmieniają się po zatrzymaniu i ponownym uruchomieniu serwera wirtualnego.
Ansible ma już opracowane skrypty inwentaryzacyjne dla platform chmury publicznej takich jak Google Compute Engine, Amazon EC2 instance, OpenStack, RackSpace, cobbler, między innymi.
Jakie są zalety dynamicznej inwentaryzacji nad statyczną inwentaryzacją?
- Dynamiczna inwentaryzacja doskonale redukuje błędy ludzkie, ponieważ informacje są zbierane za pomocą skryptów.
- Minimalny wysiłek jest wymagany w zarządzaniu inwentaryzacją.
Możesz napisać własną niestandardową dynamiczną inwentaryzację w wybranym języku programowania. Inwentaryzacja powinna zwrócić format JSON, gdy zostaną przekazane odpowiednie opcje.
Utilize an Existing Dynamic Inventory Script
Skrypt, który jest używany do tworzenia dynamicznej inwentaryzacji, musi być wykonywalny, aby Ansible mógł go użyć.
Aby pobrać informacje o hostach wewnątrz skryptu dynamicznej inwentaryzacji, wystarczy uruchomić.
# ./script --list
Jak wskazano wcześniej, wyjście powinno być w formacie JSON w poniższym formacie.
Słownik składający się z grup (tj.webservers, database_Servers)
- Lista zarządzanych hostów w każdej grupie
- Słownik zmiennych
Słownik meta
- Hosty i hostvars
Przykładowe dane wyjściowe
Podsumowanie
W tym artykule zademonstrowaliśmy jak tworzyć zarówno statyczne jak i dynamiczne inwentaryzacje. Podsumowując, statyczny plik inwentaryzacji jest plik tekstowy zawierający listę zarządzanych hostów lub węzłów zdalnych, których numery i adresy IP pozostają dość stałe.
Z drugiej strony, dynamiczny plik hostów zmienia się w miarę dodawania nowych hostów lub usuwania starych. Adresy IP hostów są również dynamiczne, ponieważ zatrzymujesz i uruchamiasz nowe systemy hostów. Mamy nadzieję, że ten poradnik był dla Ciebie pouczający.