Ansible

Jak korzystać z niestandardowych faktów Ansible

Jak korzystać z niestandardowych faktów Ansible
Fakty są jak zmienne w Ansible. Ansible generuje wiele faktów, w zależności od hosta, którego automatyzuje. Jeśli potrzebujesz, możesz również zdefiniować niestandardowe fakty/zmienne w Ansible.

W Ansible możesz zdefiniować trzy rodzaje niestandardowych faktów.

1) Fakty globalne: Te fakty są dostępne z każdego hosta w twoim pliku ekwipunku.
2) Fakty grupowe: Te fakty są dostępne tylko z określonego zestawu hostów lub grupy hostów.
3) Fakty gospodarza: Te fakty są dostępne tylko od konkretnego gospodarza.

W tym artykule pokażę, jak pracować z niestandardowymi faktami Ansible. Więc zacznijmy.

Wymagania wstępne:

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

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

Istnieje wiele artykułów na LinuxHint poświęconych instalowaniu Ansible i konfigurowaniu hostów do automatyzacji Ansible. W razie potrzeby możesz je sprawdzić.

Konfigurowanie katalogu projektu:

Zanim zaczniemy, stwórzmy katalog projektu, abyśmy mogli uporządkować nasze pliki projektu.

Aby utworzyć katalog projektu niestandardowe fakty/ w Twoim DOM katalogu, uruchom następujące polecenie:

$ mkdir -pv niestandardowe fakty/playbooki,host_vars,group_vars

Teraz przejdź do niestandardowe fakty/ katalog w następujący sposób:

$ cd fakty/

Utwórz plik konfiguracyjny Ansible ansibl.cfg w katalogu projektu w następujący sposób:

$ nano ansibl.cfg

Wpisz następujące wiersze swoje ansibl.cfg plik.

[domyślne]
inwentarz        = hosty
host_key_checking   = Fałsz

Gdy skończysz, naciśnij + X śledzony przez Tak i uratować ansibl.cfg plik konfiguracyjny.

Teraz utwórz plik inwentaryzacji Ansible zastępy niebieskie w katalogu projektu w następujący sposób:

$nano hosty

Wpisz następujące wiersze w swoim zastępy niebieskie plik inwentarzowy.

vm1.nozekit.com
vm2.nozekit.com
[sieć]
vm3.nozekit.com
vm4.nozekit.com
[Baza danych]
vm[5:6].nozekit.com

Gdy skończysz, naciśnij + X śledzony przez Tak i uratować zastępy niebieskie plik inwentarzowy.

Aby wyświetlić listę wszystkich dostępnych hostów w pliku ekwipunku, uruchom następujące polecenie:

$ ansible all --list-hosts

Jak widać, w moim inwentarzu mam sześć hostów.

Aby wyświetlić listę hostów dostępnych w sieć grupy pliku inwentaryzacji, uruchom następujące polecenie:

$ ansible web --list-hosts

Jak widać mam dwa hosty (vm3.nozekit.com i vm4.nozekit.com) w sieć grupa moich plików inwentarzowych.

Aby wyświetlić listę hostów dostępnych w Baza danych grupy pliku inwentaryzacji, uruchom następujące polecenie:

$ ansible baza danych --list-hosts

Jak widać mam dwa hosty (vm5.nozekit.com i vm6.nozekit.com) w Baza danych grupa moich plików inwentarzowych.

Praca z Ansible Global Facts:

W tej sekcji pokażę, jak zdefiniować globalne fakty/zmienne Ansible w pliku ekwipunku i uzyskać do nich dostęp z podręczników Ansible. Pokażę Ci również, jak zdefiniować globalne fakty/zmienne w osobnym pliku.

Najpierw otwórz zastępy niebieskie plik inwentarzowy za pomocą następującego polecenia:

$nano hosty

Teraz dodaj zaznaczone linie w swoim zastępy niebieskie plik inwentarzowy. Gdy skończysz, naciśnij + X śledzony przez Tak i aby zapisać plik.

'

Dodajesz globalne fakty w wszystkie: vars Sekcja. Tutaj dodałem web_url globalny fakt.

Teraz utwórz nowy podręcznik print_global_fact.jamla w podręczniki/ katalog w następujący sposób:

$ nano playbooks/print_global_fact.jamla

Następnie wpisz następujące wiersze w print_global_fact.jamla plik.

- gospodarze: wszyscy
użytkownik: ansible
zadania:
- nazwa: Wydrukuj wartość globalnego faktu „web_url”
odpluskwić:
msg: 'URL WWW: web_url'

Celem tego poradnika jest wydrukowanie web_url globalny fakt.

Gdy skończysz, naciśnij + X śledzony przez Tak i uratować print_global_fact.jamla plik.

Teraz uruchom print_global_fact.jamla Playbook w następujący sposób:

$ ansible-playbook playbooks/print_global_fact.jamla

Jak widać, wszystkie hosty w moim pliku inwentarza mają dostęp do globalnego faktu web_url.

Możesz także dodać globalne fakty w osobnym pliku. W ten sposób możesz utrzymać plik inwentarza w czystości. Zobaczmy, jak to zrobić.

Najpierw usuńmy globalne fakty z zastępy niebieskie plik inwentarzowy.

$nano hosty

Teraz usuń zaznaczone linie z pliku inwentarza i naciśnij and + X, śledzony przez Tak i aby zapisać plik inwentaryzacji.

Następnie utwórz nowy plik wszystko w zmienne_grupy/ katalog w następujący sposób:

$ nano group_vars/all

Aby dodać globalny fakt web_url, wpisz następującą linię w group_vars/all plik.

web_url: https://www.linuxhint.com

Gdy skończysz, naciśnij + X śledzony przez Tak i uratować group_vars/all plik.

Aby sprawdzić, czy możesz uzyskać dostęp do globalnego faktu web_url, uruchom print_global_fact.jamla Playbook ponownie w następujący sposób:

$ ansible-playbook playbooks/print_global_fact.jamla

Jak widać, wszystkie hosty w moim pliku inwentarza mają dostęp do globalnego faktu web_url.

Praca z Ansible Group Fakty:

W tej sekcji pokażę, jak zdefiniować fakty/zmienne grupy Ansible w pliku ekwipunku i uzyskać do nich dostęp z podręczników Ansible. Pokażę Ci również, jak zdefiniować grupowe fakty/zmienne w osobnym pliku.

Najpierw otwórz zastępy niebieskie plik inwentarzowy za pomocą następującego polecenia:

$nano hosty

Jeśli masz grupę gospodarzy Grupa 1, następnie dodajesz fakty/zmienne grupowe dla tej grupy hostów w group1:vars sekcja twojego pliku inwentaryzacji.

[Grupa 1]

[grupa1:zmienne]
zmienna1=wartość1
zmienna2=wartość2

Na przykład, aby dodać grupowe fakty/zmienne Nazwa domeny i zaplecze_bazy danych dla sieć grupę hostów, możesz wpisać zaznaczone linie w swoim pliku inwentaryzacyjnym.

Gdy skończysz, naciśnij + X śledzony przez Tak i aby zapisać plik inwentaryzacji.

Aby wydrukować i sprawdzić, czy możemy uzyskać dostęp do faktów dotyczących grupy, utwórz nowy podręcznik print_group_facts.jamla w podręczniki/ katalog w następujący sposób:

$ nano playbooks/print_group_facts.jamla

Wpisz następujące wiersze w swoim print_group_facts.jamla plik.

- hosty: web
użytkownik: ansible
zadania:
- nazwa: Drukuj fakty grupy
odpluskwić:
msg: 'Nazwa domeny: domain_name Zaplecze bazy danych: database_backend'

Gdy skończysz, naciśnij + X śledzony przez Tak i uratować print_group_facts.jamla plik.

Teraz uruchom print_group_facts.jamla Playbook w następujący sposób:

$ ansible-playbook playbooks/print_group_facts.jamla

Jak widać gospodarze w sieć grupa może uzyskać dostęp do Nazwa domeny i database_backend grupuj fakty/zmienne.

Teraz posprzątajmy plik inwentarza i zobaczmy, jak dodać grupowe fakty/zmienne w osobnym pliku.

Najpierw otwórz zastępy niebieskie plik inwentarzowy w następujący sposób:

$ nano fakty

Usuń zaznaczone linie z zastępy niebieskie plik inwentarzowy. Gdy skończysz, naciśnij + X śledzony przez Tak i uratować zastępy niebieskie plik inwentarzowy.

Ponieważ dodajemy zmienne grupowe dla sieć grupa hostów, utwórz nowy plik sieć (taka sama jak nazwa grupy) w zmienne_grupy/ katalog w następujący sposób:

$ nano group_vars/web

Aby dodać fakty dotyczące grupy Nazwa domeny i database_backend dla sieć grupy hostów, dodaj następujące wiersze w group_vars/web plik.

nazwa_domeny: web.linuxhint.com
database_backend: pgsql

Gdy skończysz, naciśnij + X śledzony przez Tak i uratować group_vars/web plik.

Aby sprawdzić, czy gospodarze w sieć grupa może uzyskać dostęp do faktów o grupie, uruchom print_group_facts.jamla Playbook w następujący sposób:

$ ansible-playbook playbooks/print_group_facts.jamla

Jak widać gospodarze w sieć grupa może uzyskać dostęp do Nazwa domeny i database_backend grupuj fakty/zmienne.

Praca z Ansible Host Fakty:

W tej sekcji pokażę, jak zdefiniować fakty/zmienne dotyczące hosta Ansible w pliku ekwipunku i uzyskać do nich dostęp z podręczników Ansible. Pokażę Ci również, jak zdefiniować fakty/zmienne hosta w osobnym pliku.

Najpierw otwórz zastępy niebieskie plik inwentarzowy za pomocą następującego polecenia:

$nano hosty

Możesz dodać fakty/zmienne hosta po nazwie DNS lub adresie IP hosta w pliku inwentaryzacji w następujący sposób:

www.domena1.com      zmienna1=wartość1       zmienna2=wartość2
192.168.22.2      zmienna1=wartość3       zmienna2=wartość4

Na przykład możesz dodać fakty/zmienne hosta Nazwa domeny i database_backend dla gospodarzy vm3.nozekit.com i vm4.nozekit.com, jak zaznaczono na zrzucie ekranu poniżej.

Zauważ, że wartość Nazwa domeny i database_backend fakty/zmienne są różne dla każdego gospodarza.

Po zakończeniu dodawania faktów/zmiennych dotyczących hosta naciśnij + X, śledzony przez Tak i uratować zastępy niebieskie plik inwentarzowy.

Ponieważ dodałem te same fakty/zmienne, co w przykładzie grup faktów/zmiennych, możemy użyć print_group_facts.jamla podręcznik do testowania dostępności również tych faktów/zmiennych.

Uruchom print_group_facts.jamla Playbook w następujący sposób:

$ ansible-playbook playbooks/print_group_facts.jamla

Jak widać, fakty/zmienne dotyczące hosta są dostępne dla określonego hosta. Wartości są różne dla każdego hosta.

Ponieważ każdy z hostów znajduje się w osobnym wierszu w moim pliku inwentarza, mogłem łatwo dodać fakty/zmienne hosta w moim pliku inwentarza. Ale jeśli używasz zakresów do definiowania hostów w pliku inwentarza, jak zaznaczono na poniższym zrzucie ekranu, nie możesz dodawać takich faktów/zmiennych hostów.

Możesz dodać fakty/zmienne hosta w osobnym pliku, tak jak to zrobiłeś dla globalnych i grupowych faktów/zmiennych.

Aby dodać fakty/zmienne hosta dla vm5.nozekit.com host, utwórz nowy plik vm5.nozekit.com (taka sama jak nazwa DNS hosta) w host_vars/ katalog w następujący sposób:

$ nano host_vars/vm5.nozekit.com

Możesz dodać fakty/zmienne hosta baza_portów i nazwa_bazy dla gospodarza vm5.nozekit.com z następującymi liniami.

port_db_db: 3306
nazwa_db: demo1

Gdy skończysz, naciśnij + X śledzony przez Tak i uratować vm5.nozekit.com plik.

W ten sam sposób, aby dodać fakty/zmienne hosta dla hosta vm6.nozekit.com, utwórz nowy plik vm6.nozekit.com w host_vars/ katalog w następujący sposób:

$ nano host_vars/vm6.nozekit.com

Możesz dodać fakty/zmienne hosta baza_portów i nazwa_bazy dla gospodarza vm6.nozekit.com z następującymi liniami.

port_db: 8877
nazwa_bazy_danych: aplikacja1

Gdy skończysz, naciśnij + X śledzony przez Tak i uratować vm6.nozekit.com plik.

Aby wydrukować i sprawdzić, czy możemy uzyskać dostęp do faktów/zmiennych dotyczących hosta, utwórz nowy podręcznik print_host_facts.jamla w podręczniki/ katalog w następujący sposób:

$ nano playbooks/print_host_facts.jamla

Teraz wpisz następujące wiersze w print_host_facts.jamla plik.

- hosty: baza danych
użytkownik: ansible
zadania:
- nazwa: Drukuj fakty hosta
odpluskwić:
msg: 'Nazwa bazy danych: db_name Port bazy danych: db_port'

Gdy skończysz, naciśnij + X śledzony przez Tak i uratować print_host_facts.jamla plik.

Aby sprawdzić, czy host vm5.nozekit.com i vm6.nozekit.com może uzyskać dostęp do faktów/zmiennych hosta, uruchom print_host_facts.jamla Playbook w następujący sposób:

$ ansible-playbook playbooks/print_host_facts.jamla

Jak widać gospodarze vm5.nozekit.com i vm6.nozekit.com może uzyskać dostęp do nazwa_bazy i baza_portów fakty/zmienne dotyczące gospodarza.

Podsumowując: Ansible Fakty Pierwszeństwo

W tej sekcji omówię Ansible fakt/priorytet zmiennych. Więc zacznijmy.

Zanim zaczniemy, uporządkujmy plik inwentarza.

Otworzyć zastępy niebieskie plik inwentarzowy za pomocą następującego polecenia:

$nano hosty

Usuń zaznaczoną sekcję z pliku inwentaryzacji.

Tak powinien wyglądać twój plik inwentarzowy w tym momencie.

Teraz dodaj zaznaczoną linię do pliku inwentarza. Te wiersze dodają globalne fakty/zmienne fakt_zakres i Port.

Następnie dodaj zaznaczone linie w swoim pliku inwentarzowym. Te linie dodają fakt_zakres i Port fakty/zmienne dla gospodarzy w Baza danych Grupa.

Na koniec dodaj fakt_zakres i Port fakty/zmienne gospodarza dla vm3.nozekit.com i vm4.nozekit.com hosty, jak zaznaczono na zrzucie ekranu poniżej.

Gdy skończysz, naciśnij + X śledzony przez Tak i aby zapisać plik inwentaryzacji.

Aby wydrukować wartość globalnych, grupowych i hostujących faktów/zmiennych, utwórz nowy poradnik fakt_precendencja.jamla w podręczniki/ katalog w następujący sposób:

$ nanoporadniki/fact_precedence.jamla

Wpisz następujące wiersze w fakt_pierwszeństwo.jamla plik.

- gospodarze: wszyscy
użytkownik: ansible
zadania:
- nazwa: Wydrukuj wszystkie fakty
odpluskwić:
msg: 'Zakres faktów: fact_scope    Port: port'

Gdy skończysz, naciśnij + X śledzony przez Tak i uratować fakt_pierwszeństwo.jamla plik.

Aby wydrukować fakty/zmienne globalne, grupowe i hosta, uruchom fakt_pierwszeństwo.jamla Playbook w następujący sposób:

$ ansible-playbook playbooks/fact_precedence.jamla

Jak widać, drukowane są fakty/zmienne globalne, grupowe i hosta.

Zauważ, że fakty/zmienne grupowe zastąpiły globalne fakty/zmienne (1). Zauważ również, że fakty/zmienne nadrzędne zastąpiły zarówno fakty/zmienne grupowe, jak i globalne (2).

Pierwszeństwo faktu/zmiennej w Ansible jest następujące:

Fakt gospodarza > Fakt grupowy > Fakt globalny

Wniosek:

Po przeczytaniu tego artykułu powinieneś być w stanie wygodnie pracować z globalnymi, grupowymi i hostowanymi faktami/zmiennymi Ansible. Zapamiętaj pierwszeństwo faktu niestandardowego Ansible. Pomoże Ci to łatwiej debugować podręczniki Ansible.

Gry Zainstaluj najnowszą grę strategiczną OpenRA na Ubuntu Linux
Zainstaluj najnowszą grę strategiczną OpenRA na Ubuntu Linux
OpenRA to darmowy silnik gier strategicznych czasu rzeczywistego, który odtwarza wczesne gry Westwood, takie jak klasyczny Command & Conquer: Red Aler...
Gry Zainstaluj najnowszy emulator Dolphin dla Gamecube i Wii w systemie Linux
Zainstaluj najnowszy emulator Dolphin dla Gamecube i Wii w systemie Linux
Emulator Dolphin pozwala grać w wybrane gry Gamecube i Wii na komputerach osobistych z systemem Linux (PC). Będąc ogólnodostępnym emulatorem gier o o...
Gry Jak korzystać z GameConqueror Cheat Engine w systemie Linux
Jak korzystać z GameConqueror Cheat Engine w systemie Linux
Artykuł zawiera przewodnik dotyczący korzystania z silnika oszukującego GameConqueror w systemie Linux. Wielu użytkowników, którzy grają w gry w syste...