Jak tworzyć i pobierać role w Ansible Galaxy oraz z nich korzystać — część 9
W Części 9 serii Ansible dowiesz się, jak tworzyć i pobierać role w Ansible Galaxy oraz jak z nich korzystać. Ansible to proste, ale skuteczne narzędzie do zarządzania konfiguracją i automatycznego wdrażania, które płynnie i skutecznie automatyzuje złożone zadania. Możesz zarządzać setkami, a nawet tysiącami serwerów z jednego węzła kontrolnego, korzystając z jednego pliku playbooka.
Jednak pisanie podręczników zarządzania tą samą usługą w różnych środowiskach może być dość kłopotliwe, co zwykle prowadzi do nadmiarowości kodu. Dodatkowo większa złożoność może zwiększyć trudność w zarządzaniu wszystkimi urządzeniami.
Nadchodzą role. W Ansible role służą do dzielenia podręczników na pliki wielokrotnego użytku, których można używać w kilku innych przypadkach, gdy zajdzie potrzeba wykonania podobnego zadania. Wyeliminowało to potrzebę ciągłego przepisywania podręczników i pozwoliło zaoszczędzić mnóstwo czasu i energii.
Role to po prostu funkcje podręczników. Rola zawiera prawie wszystko, co stanowiłoby podręcznik: zadania, pliki, moduły, zmienne i szablony. Należy również pamiętać, że każda rola jest ograniczona do określonego zadania lub pożądanego wyniku.
Tworzenie roli Ansible
Aby utworzyć rolę w Ansible, po prostu użyj składni.
ansible-galaxy init role_name
W bieżącym katalogu roboczym zostanie utworzonych wiele katalogów i plików. W tym przypadku zdecydowałem się utworzyć rolę w katalogu /etc/ansible/roles.
Stwórzmy rolę o nazwie Apache.
ansible-galaxy init apache
Użyj polecenia drzewa, aby rzucić okiem na strukturę katalogów roli.
tree apache
Jak widać, utworzono kilka katalogów, jednak nie wszystkie zostaną wykorzystane w playbooku.
Teraz, aby użyć nowo utworzonej roli w playbooku, zdefiniuj zadanie w pliku main.yml znajdującym się w katalogu zadań Twojej nowej roli.
/apache/tasks/main.yml
---
- hosts: database_servers
tasks:
- name: Install Apache2 on Ubuntu webserver
apt:
name: apache2
state: installed
Następnie utwórz plik podręcznika i wywołaj rolę, jak pokazano.
---
- hosts: webservers
roles:
- apache
Instalowanie roli z Ansible Galaxy
Role odgrywają kluczową rolę w udostępnianiu kodu innym użytkownikom w społeczności Ansible korzystającej z platformy Ansible Galaxy. W Ansible Galaxy otrzymujesz tysiące ról wykonujących różne zadania, takie jak instalacja serwerów WWW i baz danych, narzędzia monitorujące itp.
Ansible Galaxy to baza danych lub repozytorium ról Ansible, które możesz wykorzystać w swoich podręcznikach i pomóc usprawnić swoje zadania.
Aby wyszukać rolę w Ansible Galaxy, po prostu uruchom polecenie.
ansible-galaxy search <role>
Na przykład, aby wyszukać rolę o nazwie mysql run.
ansible-galaxy search mysql
Jak widać, istnieją setki ról pasujących do słowa kluczowego mysql. Jednak nie wszystkie role spełnią Twoje oczekiwania, dlatego zaleca się uważne przeczytanie instrukcji.
Aby zebrać więcej informacji o roli, po prostu uruchom polecenie Ansible:
ansible-galaxy info 5KYDEV0P5.skydevops-mysql
W naszym przykładzie zainstalujemy rolę 5KYDEV0P5.skydevops-mysql.
ansible-galaxy install 5KYDEV0P5.skydevops-mysql
Rola zostanie pobrana i rozpakowana do domyślnego katalogu ról znajdującego się pod adresem /etc/ansible/roles.
Rolę można następnie wywołać w podręczniku, na przykład:
---
- name: Install MySQL server
hosts: webservers
roles:
• 5KYDEV0P5.skydevops-mysql
Teraz możesz bezpiecznie uruchomić podręcznik Ansible, jak pokazano.
ansible-playbook install_mysql.yml
Dodatkowo możesz odwiedzić Ansible Galaxy za pośrednictwem przeglądarki internetowej i ręcznie wyszukiwać role do wykonywania różnych zadań zgodnie z opisem na pulpicie nawigacyjnym.
Na przykład, aby wyszukać rolę monitorującą, taką jak elasticsearch, kliknij opcję „Monitorowanie” i wyszukaj rolę, jak pokazano.
Ansible Galaxy ułatwia użytkownikom instalowanie najlepszych ról, wyświetlając listę najpopularniejszych i najczęściej pobieranych ról. Aby uzyskać więcej informacji na temat konkretnej roli, wystarczy na nią kliknąć.
W podręczniku możesz na przykład określić więcej niż jedną rolę.
---
- name: Install MySQL server
hosts: webservers
roles:
• 5KYDEV0P5.skydevops-mysql
• Aaronpederson.mariadb
Aby wyświetlić listę zainstalowanych ról, po prostu uruchom.
ansible-galaxy list
Wniosek
Role ułatwiają ponowne wykorzystanie i udostępnianie podręczników Ansible. W ten sposób oszczędzają użytkownikowi dużo czasu na pisaniu dużej ilości zbędnego kodu i spędzają zbyt dużo czasu, który zostałby wykorzystany na inne zadania administracyjne systemu. I to tyle w tym poradniku.