Możesz zdefiniować trzy rodzaje niestandardowych faktów w Ansible.
1) Fakty globalne: Te fakty są dostępne z każdego hosta w pliku ekwipunku.
2) Fakty grupowe: Fakty te są dostępne tylko z określonego zestawu hostów lub grupy hosta.
3) Fakty hosta: Fakty te są dostępne tylko od konkretnego hosta.
W tym artykule pokażę ci, jak pracować z niestandardowymi faktami 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.
Konfiguracja katalogu projektu:
Zanim zaczniemy, utwórzmy katalog projektu, abyśmy mogli zorganizować nasze pliki projektu.
Aby utworzyć katalog projektu fakty na zamówienie/ w Twoim DOM Directory, uruchom następujące polecenie:
$ mkdir -pv custom fact/podręczniki, host_vars, grupa_vars
Teraz przejdź do fakty na zamówienie/ katalog w następujący sposób:
$ CD Custom fact/
Utwórz plik konfiguracyjny Ansible Ansible.CFG W katalogu projektu w następujący sposób:
$ nano ansible.CFG
Wpisz w następujących liniach Ansible.CFG plik.
[domyślne]Po zakończeniu naciśnij + X śledzony przez Y I Aby uratować Ansible.CFG plik konfiguracyjny.
Teraz utwórz plik zapasowy Ansible zastępy niebieskie W katalogu projektu w następujący sposób:
$ nano gospodarze
Wpisz w następujących wierszach w swoim zastępy niebieskie Plik zapasowy.
VM1.Nodekite.comPo zakończeniu naciśnij + X śledzony przez Y I Aby uratować zastępy niebieskie Plik zapasowy.
Aby wymienić wszystkie dostępne hosty w pliku ekwipunku, uruchom następujące polecenie:
$ ansible all--list-hosts
Jak widać, mam sześć hostów w moim pliku ekwipunku.
Aby wymienić hosty dostępne w sieć Grupa pliku ekwipunku uruchom następujące polecenie:
$ ansible Web--list-hosts
Jak widać, mam dwóch gospodarzy (VM3.Nodekite.com I VM4.Nodekite.com) w sieć grupa mojego pliku zapasów.
Aby wymienić hosty dostępne w Baza danych Grupa pliku ekwipunku uruchom następujące polecenie:
Baza danych $ ansible-hosts-hosts
Jak widać, mam dwóch gospodarzy (VM5.Nodekite.com I VM6.Nodekite.com) w Baza danych grupa mojego pliku zapasów.
Praca z globalnymi faktami:
W tej sekcji pokażę, jak zdefiniować globalne fakty/zmienne w pliku zapasów i uzyskać do nich dostęp z twoich poradników Ansible. Pokażę również, jak zdefiniować globalne fakty/zmienne w osobnym pliku.
Najpierw otwórz zastępy niebieskie plik zapasowy z następującym poleceniem:
$ nano gospodarze
Teraz dodaj oznaczone linie w swoim zastępy niebieskie Plik zapasowy. Po zakończeniu naciśnij + X śledzony przez Y I Aby zapisać plik.
'
Dodajesz globalne fakty w Wszystkie: vars Sekcja. Tutaj dodałem Web_Url Fakt globalny.
Teraz utwórz nowy podręcznik print_global_fact.Yaml w podręczniki/ katalog w następujący sposób:
$ Nano Playbooks/print_global_fact.YamlNastępnie wpisz następujące wiersze w print_global_fact.Yaml plik.
- Gospodarze: WszyscyCelem tego podręcznika jest wydrukowanie Web_Url Fakt globalny.
Po zakończeniu naciśnij + X śledzony przez Y I Aby uratować print_global_fact.Yaml plik.
Teraz uruchom print_global_fact.Yaml Playbook w następujący sposób:
$ Ansible-Playbook Playbooks/print_global_fact.YamlJak widać, wszystkie hosty w moim pliku ekwipunku mogą uzyskać dostęp do globalnego faktu Web_Url.
Możesz także dodać fakty globalne w osobnym pliku. W ten sposób możesz utrzymać plik zapasów w czystości. Zobaczmy, jak to zrobić.
Najpierw usuńmy globalne fakty z zastępy niebieskie Plik zapasowy.
$ nano gospodarze
Teraz usuń zaznaczone linie z pliku inwentaryzacji i naciśnij + X, śledzony przez Y I Aby zapisać plik zapasów.
Następnie utwórz nowy plik Wszystko w grupa_vars/ katalog w następujący sposób:
$ nano grupa_vars/all
Aby dodać globalny fakt Web_Url, Wpisz w następującym wierszu w grupa_vars/all plik.
Web_Url: https: // www.Linuxhint.com
Po zakończeniu naciśnij + X śledzony przez Y I Aby uratować grupa_vars/all plik.
Aby sprawdzić, czy możesz uzyskać dostęp do faktu globalnego Web_Url, uruchom print_global_fact.Yaml Playbook ponownie w następujący sposób:
$ Ansible-Playbook Playbooks/print_global_fact.YamlJak widać, wszystkie hosty w moim pliku ekwipunku mogą uzyskać dostęp do globalnego faktu Web_Url.
Praca z faktami grupy Ansible:
W tej sekcji pokażę, jak zdefiniować fakty/zmienne grupy Ansible w pliku ekwipunku i uzyskać do nich dostęp z twoich poradników Ansible. Pokażę również, jak zdefiniować fakty/zmienne grupowe w osobnym pliku.
Najpierw otwórz zastępy niebieskie plik zapasowy z następującym poleceniem:
$ nano gospodarze
Jeśli masz grupę hosta Grupa 1, Następnie dodajesz fakty/zmienne grupowe dla tej grupy hosta w a Grupa 1: VARS sekcja pliku zapasów.
[Grupa 1]Na przykład, aby dodać fakty/zmienne grupowe Nazwa domeny I Batabase_backends dla sieć Grupa hosta, możesz wpisać oznaczone linie w pliku ekwipunku.
Po zakończeniu naciśnij + X śledzony przez Y I Aby zapisać plik zapasów.
Aby wydrukować i sprawdzić, czy możemy uzyskać dostęp do faktów grupowych, stwórz nowy podręcznik print_group_facts.Yaml w podręczniki/ katalog w następujący sposób:
$ Nano Playbooks/print_group_facts.YamlWpisz w następujących wierszach w swoim print_group_facts.Yaml plik.
- Hosty: WebPo zakończeniu naciśnij + X śledzony przez Y I Aby uratować print_group_facts.Yaml plik.
Teraz uruchom print_group_facts.Yaml Playbook w następujący sposób:
$ Ansible-Playbook Playbooks/print_group_facts.YamlJak widać, gospodarze w sieć Grupa może uzyskać dostęp do Nazwa domeny I Batabase_backend Fakty/zmienne grupowe.
Teraz posprzątajmy plik zapasów i zobaczmy, jak dodać fakty/zmienne grupowe w osobnym pliku.
Najpierw otwórz zastępy niebieskie Plik zapasowy w następujący sposób:
$ nano fakty
Usuń oznaczone linie z zastępy niebieskie Plik zapasowy. Po zakończeniu naciśnij + X śledzony przez Y I Aby uratować zastępy niebieskie Plik zapasowy.
Jak dodajemy zmienne grupowe dla sieć Grupa hosta, utwórz nowy plik sieć (tak samo jak nazwa grupy) w grupa_vars/ katalog w następujący sposób:
$ nano grupa_vars/internet
Aby dodać fakty grupowe Nazwa domeny I Batabase_backend dla sieć grupa hosta, dodaj następujące wiersze w grupa_vars/Web plik.
Domeain_name: Web.Linuxhint.comPo zakończeniu naciśnij + X śledzony przez Y I Aby uratować grupa_vars/Web plik.
Aby sprawdzić, czy gospodarze w sieć Grupa może uzyskać dostęp do faktów grupowych, uruchomić print_group_facts.Yaml Playbook w następujący sposób:
$ Ansible-Playbook Playbooks/print_group_facts.YamlJak widać, gospodarze w sieć Grupa może uzyskać dostęp do Nazwa domeny I Batabase_backend Fakty/zmienne grupowe.
Praca z faktami hosta Ansible:
W tej sekcji pokażę, jak zdefiniować fakty/zmienne hosta ansible w pliku ekwipunku i uzyskać do nich dostęp z twoich poradników Ansible. Pokażę również, jak zdefiniować fakty/zmienne hosta w osobnym pliku.
Najpierw otwórz zastępy niebieskie plik zapasowy z następującym poleceniem:
$ nano gospodarze
Możesz dodać fakty/zmienne hosta po nazwie DNS lub adresie IP hosta w pliku ekwipunku w następujący sposób:
www.domena1.com zmienna 1 = wartość 1 zmienna 2 = wartość2Na przykład możesz dodawać fakty/zmienne hosta Nazwa domeny I Batabase_backend dla gospodarzy VM3.Nodekite.com I VM4.Nodekite.com, jak zaznaczono na zrzucie ekranu poniżej.
Zauważ, że wartość Nazwa domeny I Batabase_backend Fakty/zmienne są różne dla każdego hosta.
Po zakończeniu dodawania faktów/zmiennych hosta naciśnij + X, śledzony przez Y I Aby uratować zastępy niebieskie Plik zapasowy.
Ponieważ dodałem te same fakty/zmienne, co w przykładzie faktów/zmiennych grupowych, możemy użyć print_group_facts.Yaml podręcznik w celu przetestowania dostępności tych faktów/zmiennych.
Uruchom print_group_facts.Yaml Playbook w następujący sposób:
$ Ansible-Playbook Playbooks/print_group_facts.YamlJak widać, fakty/zmienne hosta są dostępne dla określonego hosta. Wartości są również różne dla każdego hosta.
Ponieważ każdy z hostów znajduje się w osobnej linii w moim pliku ekwipunku, mogę łatwo dodać fakty/zmienne hosta w moim pliku zapasowym. Ale jeśli używasz zakresów do zdefiniowania hostów w pliku ekwipunku, jak zaznaczono na zrzucie ekranu poniżej, nie możesz dodać takich faktów/zmiennych hostów.
Możesz dodać fakty/zmienne hosta w osobnym pliku, tak jak zrobiłeś to dla globalnych i grupowych faktów/zmiennych.
Dodać fakty/zmienne hosta VM5.Nodekite.com host, utwórz nowy plik VM5.Nodekite.com (tak samo jak nazwa DNS hosta) w host_vars/ katalog w następujący sposób:
$ nano host_vars/vm5.Nodekite.com
Możesz dodać fakty/zmienne hosta db_port I db_name dla gospodarza VM5.Nodekite.com z następującymi wierszami.
DB_PORT: 3306
db_name: demo1
Po zakończeniu naciśnij + X śledzony przez Y I Aby uratować VM5.Nodekite.com plik.
W ten sam sposób, aby dodać fakty/zmienne hosta dla hosta VM6.Nodekite.com, Utwórz nowy plik VM6.Nodekite.com w host_vars/ katalog w następujący sposób:
$ nano host_vars/vm6.Nodekite.comMożesz dodać fakty/zmienne hosta db_port I db_name dla gospodarza VM6.Nodekite.com z następującymi wierszami.
DB_PORT: 8877Po zakończeniu naciśnij + X śledzony przez Y I Aby uratować VM6.Nodekite.com plik.
Aby wydrukować i przetestować, czy możemy uzyskać dostęp do faktów/zmiennych hosta, utwórz nowy podręcznik print_host_facts.Yaml w podręczniki/ katalog w następujący sposób:
$ Nano Playbooks/print_host_facts.YamlTeraz wpisz następujące wiersze w print_host_facts.Yaml plik.
- Hosty: baza danychPo zakończeniu naciśnij + X śledzony przez Y I Aby uratować print_host_facts.Yaml plik.
Aby sprawdzić, czy gospodarz VM5.Nodekite.com I VM6.Nodekite.com może uzyskać dostęp do faktów/zmiennych hosta, uruchomić print_host_facts.Yaml Playbook w następujący sposób:
$ Ansible-Playbook Playbooks/print_host_facts.YamlJak widać, gospodarze VM5.Nodekite.com I VM6.Nodekite.com może uzyskać dostęp do db_name I db_port Fakty/zmienne hosta.
Złożenie tego wszystkiego: Ansible Facts Pierwsze
W tej sekcji zamierzam porozmawiać o precedensie o fakcie/zmiennym. Więc zacznijmy.
Zanim zaczniemy, posprzątajmy plik zapasów.
Otworzyć zastępy niebieskie plik zapasowy z następującym poleceniem:
$ nano gospodarze
Usuń oznaczoną sekcję z pliku inwentaryzacji.
W ten sposób Twój plik zapasowy powinien patrzeć w tym momencie.
Teraz dodaj zaznaczoną linię w pliku ekwipunku. Te linie dodają globalne fakty/zmienne fact_scope I Port.
Następnie dodaj zaznaczone linie w pliku ekwipunku. Te linie dodają fact_scope I Port fakty/zmienne dla gospodarzy w Baza danych Grupa.
Na koniec dodaj fact_scope I Port fakty/zmienne hosta dla VM3.Nodekite.com I VM4.Nodekite.com gospodarze, jak zaznaczono na zrzucie ekranu poniżej.
Po zakończeniu naciśnij + X śledzony przez Y I Aby zapisać plik zapasów.
Aby wydrukować wartość faktów/zmiennych globalnych, grupowych i hostów, stwórz nowy podręcznik FACT_PRECENDENCE.Yaml w podręczniki/ katalog w następujący sposób:
$ nano boiska/fact_precedence.YamlWpisz w następujących wierszach w FACT_PRECEDENCE.Yaml plik.
- Gospodarze: WszyscyPo zakończeniu naciśnij + X śledzony przez Y I Aby uratować FACT_PRECEDENCE.Yaml plik.
Aby wydrukować fakty/zmienne globalne, grupowe i hosta, uruchom FACT_PRECEDENCE.Yaml Playbook w następujący sposób:
$ Ansible-Playbook Playbooks/fact_precedence.YamlJak widać, fakty/zmienne globalne, grupowe i hosta są drukowane.
Zauważ, że fakty/zmienne grupowe zastąpiły globalne fakty/zmienne (1). Zauważ też, że fakty/zmienne hosta zastąpiły zarówno fakty/zmienne grupy, jak i globalne (2).
Fakt/zmienna pierwszeństwo Ansible jest następujące:
Fakt hosta> fakt grupowy> Fakt globalnyPo przeczytaniu tego artykułu powinieneś być w stanie wygodnie współpracować z faktami/zmiennymi Ansible Global, Group i Host. Pamiętaj o precedensowaniu niestandardowych faktów. Pomoże ci łatwiej debugować swoje podręczniki Ansible.