Jak zbudować inwentaryzację ansible w formacie JSON

Jak zbudować inwentaryzację ansible w formacie JSON
Domyślnie plik zapasowy Ansible używa formatu konfiguracji INI. Możesz także użyć formatu konfiguracji JSON (notacja obiektów JavaScript) dla plików zapasów ansible.

W tym artykule pokażę, jak użyć formatu konfiguracji JSON do budowy plików zapasów Ansible. Więc zacznijmy.

Wymagania wstępne:

Jeśli chcesz wypróbować przykłady tego artykułu,

1) Musisz mieć zainstalowany na komputerze Ansible.
2) Musisz mieć co najmniej 6 hostów Linux skonfigurowanych do automatyzacji Ansible.

Istnieje wiele artykułów na temat Linuxhint poświęconych instalacji ansible i konfiguracji hostów do automatyzacji ansible. Możesz je sprawdzić w razie potrzeby.

Tworzenie katalogu projektu:

W tym artykule użyję kodu Visual Studio do edytowania pliku konfiguracyjnego Ansible, pliku inwentaryzacji i podręczników. Możesz użyć dowolnego edytora lub IDE, który chcesz.

Zanim zaczniesz, utwórzmy katalog projektu, abyśmy mogli zorganizować nasze pliki projektu.

Stworzyłem nowy katalog projektu JSON-INVENTORY/ w moim DOM katalog, jak widać na zrzucie ekranu poniżej.

Po utworzeniu nowego katalogu projektu otwórz go za pomocą ulubionego edytora tekstu lub IDE.

W kodzie Visual Studio idź do Plik > Otwórz folder… jak zaznaczono na zrzucie ekranu poniżej.

Teraz wybierz katalog projektu JSON-INVENTORY/ i kliknij OK.

Katalog projektu powinien zostać otwarty za pomocą kodu Visual Studio.

Teraz kliknij Nowy plik i utwórz nowy plik Ansible.CFG.

Następnie wpisz następujące wiersze w Ansible.CFG plik.

[domyślne]
Inwentaryzacja = hosty.JSON
host_key_checking = false

Po zakończeniu naciśnij + S Aby uratować Ansible.CFG plik.

W ten sam sposób, stwórz zastępy niebieskie.JSON plik. To jest plik zapasowy JSON. Zostaw to na razie puste. Pracujemy nad tym później.

Teraz kliknij Nowy folder i stwórz nowy katalog podręczniki jak pokazano na zrzucie ekranu poniżej.

Dodawanie hostów do pliku inwentarza JSON:

W tej sekcji pokażę Ci, jak dodać hosty do pliku ekwipunku w formacie JSON.

w zastępy niebieskie.JSON plik zapasowy, dodajesz Wszystko Sekcja.


"Wszystko":

W Wszystko Sekcja, dodajesz gospodarz sekcja i dodaj hosty.


"Wszystko":
„Gospodarze”:
„Host1”: Null,
„host2”: null


Na przykład możesz dodać hosty VM1.Nodekite.com I VM2.Nodekite.com w zastępy niebieskie.JSON Plik zapasowy w następujący sposób.


"Wszystko":
„Gospodarze”:
„VM1.Nodekite.com ": null,
„VM2.Nodekite.com ": null


Po zakończeniu naciśnij + S Aby uratować zastępy niebieskie.JSON plik.

Możesz sprawdzić, które hosty są dostępne w pliku ekwipunku za pomocą następującego polecenia:

$ ansible-lista-hosts

Jak widać, hosty, które dodałem do mojego pliku ekwipunku (VM1.Nodekite.com I VM2.Nodekite.com) są wymienione.

Grupowanie hostów w pliku zapasów JSON:

W tej sekcji pokażę ci, jak grupować hosty w pliku zapasów JSON.

Domyślna grupa hosta w Ansible jest Wszystko. Wszystko Grupa ma wszystkich gospodarzy z każdej grupy (w tym gospodarzy z Wszystko Grupa).

Dodajesz grupy hosta w dzieci sekcja pliku zapasów JSON.


"Wszystko":

"dzieci":
"Grupa 1":
,
„Group2”:



Na przykład, aby dodać hosty VM3.Nodekite.com I VM4.Nodekite.com w sieć grupa i dodać hosty VM5.Nodekite.com I VM6.Nodekite.com w db Grupa, wpisz następujące wiersze w pliku inwentaryzacji JSON.


"Wszystko":
„Gospodarze”:
„VM1.Nodekite.com ": null,
„VM2.Nodekite.com ": null
,
"dzieci":
„Web”:
„Gospodarze”:
„VM3.Nodekite.com ": null,
„VM4.Nodekite.com ": null

,
„DB”:
„Gospodarze”:
„VM5.Nodekite.com ": null,
„VM6.Nodekite.com ": null




Po zakończeniu naciśnij + S Aby uratować zastępy niebieskie.JSON plik.

Tutaj zaznaczone linie dodają hosty VM3.Nodekite.com I VM4.Nodekite.com w sieć Grupa.

Oznaczone linie dodają hosty VM5.Nodekite.com I VM6.Nodekite.com w db Grupa.

Teraz możesz wymienić wszystkie dostępne hosty w swoim pliku inwentaryzacji JSON za pomocą następującego polecenia:

$ ansible-lista-hosts

Jak widać, wszyscy gospodarze z każdej grupy (sieć, db, I Wszystko) są wyświetlane.

Aby wymienić dostępne hosty z sieć Tylko grupa, uruchom następujące polecenie:

$ ansible-Web-hosts-hosts

Jak widać, wszyscy gospodarze w sieć Grupa jest wyświetlana.

W ten sam sposób możesz wymienić wszystkie dostępne hosty z db grupa z następującym poleceniem:

$ ansible--list-hosts db

Jak widać, wszyscy gospodarze w db Grupa jest wyświetlana.

Dodawanie globalnych faktów w pliku zapasów JSON:

W Ansible zmienne są również nazywane faktami. Globalne fakty lub zmienne globalne są dostępne z każdej gospodarza każdej grupy w pliku zapasów JSON. W tej sekcji pokażę, jak dodać globalne fakty lub zmienne globalne w Ansible.

Możesz dodać globalne fakty lub zmienne globalne w vars sekcja wewnątrz Wszystko Sekcja pliku zapasów JSON w następujący sposób:


"Wszystko":
„Gospodarze”:

,
„vars”:
„zmienna1”: „wartość1”,
„Zmienna2”: „wartość2”
,
"dzieci":
„Web”:

,
„DB”:




Na przykład możesz dodać globalne fakty/zmienne Webroot I indeks w vars Sekcja pliku zapasów JSON w następujący sposób:


"Wszystko":
„Gospodarze”:
„VM1.Nodekite.com ": null,
„VM2.Nodekite.com ": null
,
„vars”:
„Webroot”: „/var/www/html”,
„indeks”: „indeks.php "
,
"dzieci":
„Web”:
„Gospodarze”:
„VM3.Nodekite.com ": null,
„VM4.Nodekite.com ": null

,
„DB”:
„Gospodarze”:
„VM5.Nodekite.com ": null,
„VM6.Nodekite.com ": null




Po zakończeniu naciśnij + S Aby zapisać plik zapasowy JSON.

Aby sprawdzić, czy globalne fakty/zmienne działają, zamierzam stworzyć nowy podręcznik print_vars1.Yaml. Celem tego podręcznika jest wydrukowanie faktów/zmiennych za pomocą odpluskwić Moduł Ansible. Pomoże nam również zrozumieć pierwszeństwo faktów/zmiennych później.

Więc stwórz nowy podręcznik print_vars1.Yaml w Twoim podręczniki/ katalog i wpisz w następujących wierszach w twoim print_vars1.Yaml plik.

- Gospodarze: Wszyscy
Użytkownik: Ansible
Zadania:
- Nazwa: Wydrukuj Webroot i indeks
odpluskwić:
MSG: „Webroot webroot i indeks index”

Po zakończeniu naciśnij + S Aby uratować print_vars1.Yaml plik.

Aby sprawdzić, czy globalne fakty/zmienne działają, uruchom print_vars1.Yaml Playbook w następujący sposób:

$ Ansible-Playbook Playbooks/print_vars1.Yaml

Podręcznik powinien działać pomyślnie.

Przewiń z powrotem do ZADANIE Sekcja. Jak widać, Webroot I indeks Fakty/zmienne są stosowane do każdego hosta w moim pliku zapasów JSON. Tak więc globalne fakty/zmienne działają.

Dodawanie faktów grupowych w pliku zapasów JSON:

Możesz dodać fakty/zmienne również dla określonej grupy hosta. W tej sekcji pokażę Ci, jak dodać fakty/zmienne grupowe w pliku inwentaryzacji JSON.

Dodam to samo Webroot I indeks fakty w sieć Grupa hosta mojego pliku zapasów JSON. Wartość tych faktów będzie inna. Zrobiłem to, abyś mógł również zrozumieć, jak działają fakty/precedencja zmienna w Ansible.

Aby dodać fakty Webroot I indeks w sieć grupa hosta, dodaj vars sekcja w sieć Sekcja pliku zapasów JSON w następujący sposób:


"Wszystko":
„Gospodarze”:
„VM1.Nodekite.com ": null,
„VM2.Nodekite.com ": null
,
„vars”:
„Webroot”: „/var/www/html”,
„indeks”: „indeks.php "
,
"dzieci":
„Web”:
„Gospodarze”:
„VM3.Nodekite.com ": null,
„VM4.Nodekite.com ": null
,
„vars”:
„Webroot”: „/web/public_html”,
„indeks”: „indeks.html "

,
„DB”:
„Gospodarze”:
„VM5.Nodekite.com ": null,
„VM6.Nodekite.com ": null




Po zakończeniu naciśnij + S Aby zapisać plik zapasowy JSON.

Aby sprawdzić fakty, uruchom print_vars1.Yaml Playbook w następujący sposób:

$ Ansible-Playbook Playbooks/print_vars1.Yaml

Jak widać, fakty grupowe Webroot I indeks są dostępne tylko dla hostów VM3.Nodekite.com I VM4.Nodekite.com, gospodarze w sieć Grupa.

Zauważ też, że fakty grupowe (Webroot I indeks) zastąpił globalne fakty (Webroot I indeks). Można więc powiedzieć, że fakty grupowe mają wyższe pierwszeństwo niż fakty globalne.

Dodawanie faktów hosta w pliku zapasów JSON:

Możesz dodać fakty/zmienne specyficzne dla hosta w pliku zapasów JSON. W tej sekcji pokażę, jak dodać fakty/zmienne specyficzne dla hosta.

W przypadku faktów globalnych lub grupowych zachowaliśmy wartość gospodarzy zero.

Aby dodać fakty hosta, wymień zero z faktami hosta w pliku inwentarza JSON w następujący sposób:

„Gospodarze”:
„host1”:
„var1”: „wartość1”,
„var2”: „wartość2”,
,
„host2”:
„var2”: „wartość3”,
„var3”: „wartość4”,

Na przykład, aby dodać indeks fakt hosta do VM5.Nodekite.com host, wymień zero z faktami gospodarza w następujący sposób.


"Wszystko":
„Gospodarze”:
„VM1.Nodekite.com ": null,
„VM2.Nodekite.com ": null
,
„vars”:
„Webroot”: „/var/www/html”,
„indeks”: „indeks.php "
,
"dzieci":
„Web”:
„Gospodarze”:
„VM3.Nodekite.com ": null,
„VM4.Nodekite.com ": null
,
„vars”:
„Webroot”: „/web/public_html”,
„indeks”: „indeks.html "

,
„DB”:
„Gospodarze”:
„VM5.Nodekite.com ":
„indeks”: „indeks.py "
,
„VM6.Nodekite.com ": null




Po zakończeniu naciśnij + S Aby zapisać plik zapasowy JSON.

Aby sprawdzić dostępne fakty, uruchom print_vars1.Yaml Playbook w następujący sposób:

$ Ansible-Playbook Playbooks/print_vars1.Yaml

Jak widać, indeks fakt jest dostępny tylko dla VM5.Nodekite.com gospodarz.

Zauważ również, że fakt hosta zastąpił globalny fakt. Fakty/zmienne gospodarza mają najwyższe pierwszeństwo w Ansible. Tak więc fakty/zmienne hosta zastąpi fakty/zmienne grupowe i fakty/zmienne globalne.

Wniosek:

W tym artykule pokazałem, jak zbudować plik zapasowy Ansible w formacie JSON. Pokazałem ci, jak dodawać hosty, dodawać grupy hosta, dodawać fakty globalne, dodawać fakty grupowe i dodawać fakty hosta w pliku ekwipunku w formacie JSON.