Как создавать и загружать роли в Ansible Galaxy и использовать их — часть 9
В Части 9 серии Ansible вы узнаете, как создавать и загружать роли в Ansible Galaxy и использовать их. Ansible — это простой, но эффективный инструмент управления конфигурацией и автоматического развертывания, который эффективно автоматизирует сложные задачи. Вы можете управлять сотнями или даже тысячами серверов с одного узла управления, используя один файл playbook.
Однако написание плейбуков для управления одним и тем же сервисом в разных средах может быть довольно громоздким, и это обычно приводит к избыточности кода. Кроме того, большая сложность может усложнить управление всеми устройствами.
Появляются роли. В Ansible роли используются для разбиения плейбуков на файлы многократного использования, которые можно использовать в нескольких других случаях, когда возникает необходимость выполнения аналогичной задачи. Это избавило от необходимости переписывать сценарии снова и снова и сэкономило много времени и энергии.
Роли — это просто функциональные возможности сборников пьес. Роль включает в себя практически то же, что и сборник сценариев: задачи, файлы, модули, переменные и шаблоны. Также обратите внимание, что каждая роль ограничена конкретной задачей или желаемым результатом.
Создание Ansible роли
Чтобы создать роль в Ansible, просто используйте синтаксис.
ansible-galaxy init role_name
В вашем текущем рабочем каталоге будет создано несколько каталогов и файлов. В данном случае я решил создать роль в каталоге /etc/ansible/roles.
Давайте создадим роль под названием apache.
ansible-galaxy init apache
Используйте команду дерева, чтобы просмотреть структуру каталогов роли.
tree apache
Как видите, каталогов создано несколько, однако не все из них будут использоваться в плейбуке.
Теперь, чтобы использовать вновь созданную роль в книге воспроизведения, определите задачу в файле main.yml, который находится в каталоге задач вашей новой роли.
/apache/tasks/main.yml
---
- hosts: database_servers
tasks:
- name: Install Apache2 on Ubuntu webserver
apt:
name: apache2
state: installed
После этого создайте файл книги воспроизведения и вызовите роль, как показано.
---
- hosts: webservers
roles:
- apache
Установка роли из Ansible Galaxy
Роли играют решающую роль в обмене кодом с другими пользователями сообщества Ansible, использующими платформу Ansible Galaxy. В Ansible Galaxy вы получаете тысячи ролей, выполняющих различные задачи, такие как установка веб-серверов и баз данных, инструментов мониторинга и т. д.
Ansible Galaxy — это база данных или репозиторий ролей Ansible, которые вы можете использовать в своих сборниках сценариев и оптимизировать свои задачи.
Чтобы найти роль в Ansible Galaxy, просто запустите команду.
ansible-galaxy search <role>
Например, чтобы найти роль с именем mysql, запустите.
ansible-galaxy search mysql
Как видите, существуют сотни ролей, соответствующих ключевому слову поиска mysql. Однако не все роли будут соответствовать вашим намерениям, поэтому рекомендуется внимательно прочитать инструкции.
Чтобы собрать дополнительную информацию о роли, просто запустите команду Ansible:
ansible-galaxy info 5KYDEV0P5.skydevops-mysql
В нашем примере мы собираемся установить роль 5KYDEV0P5.skydevops-mysql.
ansible-galaxy install 5KYDEV0P5.skydevops-mysql
Роль загружается и извлекается в каталог ролей по умолчанию, расположенный по адресу /etc/ansible/roles.
После этого роль можно вызвать в playbook, например:
---
- name: Install MySQL server
hosts: webservers
roles:
• 5KYDEV0P5.skydevops-mysql
Теперь вы можете безопасно запустить плейбук Ansible, как показано.
ansible-playbook install_mysql.yml
Кроме того, вы можете посетить Ansible Galaxy через веб-браузер и вручную выполнить поиск ролей для выполнения различных задач, указанных на информационной панели.
Например, чтобы найти роль мониторинга, например elasticsearch, нажмите кнопку «Мониторинг» и найдите роль, как показано.
Ansible Galaxy упрощает пользователям установку лучших ролей, перечисляя самые популярные и наиболее загружаемые роли. Чтобы получить дополнительную информацию о конкретной роли, просто нажмите на нее.
Например, в сборнике сценариев вы также можете указать более одной роли.
---
- name: Install MySQL server
hosts: webservers
roles:
• 5KYDEV0P5.skydevops-mysql
• Aaronpederson.mariadb
Чтобы просмотреть список установленных ролей, просто запустите.
ansible-galaxy list
Заключение
Роли упрощают повторное использование и совместное использование сборников сценариев Ansible. Таким образом, они экономят пользователю много времени, пытаясь написать много избыточного кода, и тратят слишком много времени, которое могло бы быть использовано для других задач системного администрирования. И это все, что касается этого руководства.