Jak używać tagów w Ansible

Jak Uzywac Tagow W Ansible



Gry, role i zadania są strukturą ansible, a ta struktura ansible zawiera ważny atrybut, który w Ansible nazywa się tagami. Za każdym razem, gdy uruchamiamy podręcznik w Ansible, możesz użyć poleceń -tags i -skip tags, abyśmy mogli wykonać tylko określoną serię zadań, zabaw i ról. Jeśli mamy podręcznik zawierający tak wiele zadań, ale nie chcemy wykonywać wszystkich zadań z podręcznika, zamiast wykonywać cały podręcznik, po prostu uruchomimy kilka zadań za pomocą polecenia tag w podręczniku Ansible.

W tym temacie omówimy tagi, które są jednym z najważniejszych aspektów Ansible. Postaramy się wyjaśnić, czym są tagi i jak działają tagi w Ansible, ponieważ jest to kłopotliwa funkcja platformy Ansible.







Na przykład podręcznik może zawierać trzy obowiązki: instalowanie modułu, konfigurowanie go i sprawdzanie stanu wdrożonego modułu, np. czy usługa działa i jest dostępna. Ponieważ po prostu potrzebujemy zobaczyć stan modułów na kilku zdalnych komputerach, w tej sytuacji używamy tagów Ansible zamiast wykonywać wszystkie zadania z podręcznika. Umożliwia nam prowadzenie wyłącznie określonej operacji, co pozwala nam skrócić czas działania, utrzymując wszystkie powiązane działania w jednym podręczniku.



Warunki wstępne wykorzystania tagów w Ansible Playbook

Aby umieścić praktyczne przykłady w oprogramowaniu ansible, musimy spełnić następujące wymagania.



Aby wprowadzić zmiany, musi być wymagany serwer kontrolujący Ansible. Aby wykorzystać parametr znacznika w oprogramowaniu Ansible, potrzebujemy lokalnych hostów do komunikacji z nimi. W tym przypadku używamy lokalnego hosta przez cały czas wykonywania jako docelowego serwera zdalnego. Stworzymy podręczniki, wykonamy polecenia tagów Ansible i będziemy monitorować wyniki na zdalnych hostach z urządzenia ansible-controller.





Będziemy dążyć do zastosowania różnych scenariuszy w celu zbadania kilku tagów Ansible, aby uczeń mógł łatwo zrozumieć koncepcję tagów w podręczniku Ansible.

Przykład 01: Dostęp do pojedynczego zadania w Ansible Playbook

Zamierzamy zaimplementować w Ansible, udostępniając wiele zadań w podręczniku, a następnie uzyskamy dostęp tylko do jednego zadania, wykorzystując zawarte w nim tagi. Aby to zrobić, najpierw utworzymy podręcznik, pisząc następujące polecenie:



[root@master ansible]# nano ansible_tags.yml

Po utworzeniu i uruchomieniu podręcznika ansible_tags.yml. Teraz zaczniemy pisać polecenia w podręczniku. Najpierw przekażemy podane hosty w parametrze „hosts”, którego użyjemy „localhost”. Następnie zapiszemy wartość „false” w parametrze „gather_facts”, abyśmy nie mogli uzyskać dodatkowych informacji o hoście lokalnym podczas wykonywania podręcznika.

Następnie zaczniemy kolejno wymieniać czynności w parametrze „zadania”, które chcemy wykonać. W pierwszym procesie ustalimy, czy dokument znajduje się na komputerze hosta lokalnego. Jeśli jest dostępny, zapiszemy go w parametrze „register”, a następnie nadamy tagowi unikalną nazwę, aby po uruchomieniu playbooka łatwo było nam uzyskać dostęp do tagu. W drugim zadaniu zrobimy to samo, co w zadaniu pierwszym, ale tag musi być unikalny, a następnie użyjemy opcji debugowania, aby wyświetlić zadanie wraz z powiązanym komunikatem.

- gospodarze:

- Lokalny Gospodarz
zebrać_fakty: fałsz


zadania:
- nazwa: Sprawdź istnienie pliku x`
stat: ścieżka=./host.yml
rejestr: plikExists
tagi: plik_sprawdzający


- debugowanie:
msg: '{{ 'Plik istnieje' if fileExists.stat.exists else 'Nie znaleziono pliku' }}'
tagi: plik_sprawdzający


- name: Sprawdź, czy bieżący użytkownik ma dostęp do pliku host.yml
powłoka: stat -c '%a' ./host.yml
zarejestruj: ścieżka dostępu
tagi: check_access


- debugowanie:
msg: '{{ 'Plik dostępny' if (accessPath.stdout|int) < 660 else 'Plik jest niedostępny' }}'
tagi: check_access

Teraz zapiszemy podręcznik, a następnie go zamkniemy. Chcemy uruchomić ansible_tags.yml playbook, więc napiszemy następujące polecenie w terminalu Ansible, aby zaprezentować wyniki użytkownikom.

[root@master ansible]# ansible-playbook ansible_tags.yml –tags check_file

Po uruchomieniu powyższego polecenia otrzymamy w zamian pożądane wyjście. Jak pokazano poniżej, wykonywane jest tylko jedno zadanie, które jest wyświetlane na wyjściu, czyli „sprawdź istnienie pliku”.

Przykład 02: Ignoruj ​​konkretny tag w Ansible Playbook

Oto drugi przykład tagu Ansible, w którym przechodzimy do tagu „pomiń”. Od Ciebie zależy, czy chcesz zignorować wszystkie zadania, czy też chcesz zignorować określone zadanie z podręcznika w Ansible. Wykorzystujemy przykładową implementację 1, a następnie po prostu pominiemy to zadanie, po prostu pisząc poniższą instrukcję w terminalu Ansible.

[root@master ansible]# ansible-playbook ansible_tags.yml --skip-tags check_file

Z powyższego polecenia po prostu zignorowaliśmy zadanie „sprawdź istnienie pliku”. Teraz na wyjściu wyświetlane jest tylko jedno zadanie, które jest „dostępne do pliku” zieloną czcionką.

Przykład 03: Zawsze uruchamiaj zadanie w Ansible Playbook

Trzeci przykład zaimplementujemy w oparciu o tag Ansible. W tym przykładzie użyjemy tagu „always”, co oznacza, że ​​określony tag będzie zawsze wykonywany w Ansible Playbook. Aby uruchomić podręcznik, użyj następującego polecenia:

[root@master ansible]# nano ansible_tags.yml

W playbooku utworzyliśmy wiele zadań do wykonania, ale w ostatnim zadaniu, którym jest „usuń hasło z ekwipunku”, przekazaliśmy znacznik „zawsze”. Poniżej znajdują się polecenia zaimplementowane w podręczniku:

- gospodarze: wszyscy

zebrać_fakty: fałsz


zadania:
- nazwa: Sprawdź istnienie pliku
stat: ścieżka=./host.yml
rejestr: plikExists
delegat_do: host lokalny
tagi: plik_sprawdzający


- debugowanie:
msg: '{{ 'Plik istnieje' if fileExists.stat.exists else 'Nie znaleziono pliku' }}'
tagi: plik_sprawdzający


- name: Sprawdź, czy bieżący użytkownik ma dostęp do pliku host.yml
powłoka: stat -c '%a' ./host.yml
zarejestruj: ścieżka dostępu
delegat_do: host lokalny
tagi: check_access


- debugowanie:
msg: '{{ 'Plik dostępny' if (accessPath.stdout|int) < 660 else 'Plik jest niedostępny' }}'
tagi: check_access


- nazwa: Usuń hasło z ekwipunku
plik liniowy:
ścieżka: „{{plik_inwentarza}}”
wyrażenie regularne: '\b{{element}}.*\b'
stan: brak
delegat_do: host lokalny
stać się: fałszywym
Tagi: zawsze
z_przedmiotami:
- ansible_hasło

Następnie utworzymy plik inwentaryzacji, aby zbudować połączenie między kontrolerem a docelowym zdalnym hostem. Poniżej komenda:

[root@master ansible]# nano host.yml

Oto plik inwentaryzacji, który zawiera informacje związane z „Linux_host” w Ansible.

Wszystko:

zastępy niebieskie:
Linux_Host:
ansible_host: 192.168.3.229
ansible_user: ansible
ansible_password: ******
ansible_connection: ssh
ansible_port: 22

Aby uzyskać pożądane dane wyjściowe, uruchomimy następujące polecenie w terminalu Ansible:

[root@master ansible]# ansible-playbook ansible_tags.yml --tags check_file -i host.yml

Wniosek

Tagi w Ansible zostały wyjaśnione w tym artykule. Rozumiemy teraz funkcję tagów i miejsca w Ansible, w których je zastosujemy. Aby pomóc uczniowi w zrozumieniu koncepcji tagów Ansible, opracowaliśmy różne przykłady.