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
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.comvm2.nozekit.com
[sieć]
vm3.nozekit.com
vm4.nozekit.com
[Baza danych]
vm[5:6].nozekit.com
Gdy skończysz, naciśnij
Aby wyświetlić listę wszystkich dostępnych hostów w pliku ekwipunku, uruchom następujące polecenie:
$ ansible all --list-hostsJak 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-hostsJak 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-hostsJak 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
'
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: wszyscyuż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
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
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.comGdy skończysz, naciśnij
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
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: webużytkownik: ansible
zadania:
- nazwa: Drukuj fakty grupy
odpluskwić:
msg: 'Nazwa domeny: domain_name Zaplecze bazy danych: database_backend'
Gdy skończysz, naciśnij
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
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.comdatabase_backend: pgsql
Gdy skończysz, naciśnij
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ść2192.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
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: 3306nazwa_db: demo1
Gdy skończysz, naciśnij
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: 8877nazwa_bazy_danych: aplikacja1
Gdy skończysz, naciśnij
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 danychużytkownik: ansible
zadania:
- nazwa: Drukuj fakty hosta
odpluskwić:
msg: 'Nazwa bazy danych: db_name Port bazy danych: db_port'
Gdy skończysz, naciśnij
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
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: wszyscyużytkownik: ansible
zadania:
- nazwa: Wydrukuj wszystkie fakty
odpluskwić:
msg: 'Zakres faktów: fact_scope Port: port'
Gdy skończysz, naciśnij
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 globalnyWniosek:
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.