Playbook vs Role vs [databases] и аналогичные записи в / etc / ansible / hosts
[databases]одно имя для группы хостов. Это позволяет вам ссылаться на несколько хостов по одному имени.
Роль - это набор задач и дополнительных файлов для настройки хоста для выполнения определенной роли .
Playbook - это сопоставление хостов и ролей.
Пример из документации описывает пример проекта. Он содержит две вещи:
- Пособия.
site.yml, webservers.yml, fooservers.ymlЯвляются playbooks.
- Роли:
roles/common/и roles/webservers/содержат определения commonи webserversроли соответственно.
Внутри playbook ( webservers.yml) у вас есть что-то вроде:
---
- hosts: webservers <- this group of hosts defined in /etc/ansible/hosts, databases and mail_servers in example from your question
roles: <- this is list of roles to assign to these hosts
- common
- webservers
Если Playbook определены внутри файлов YAML, то где же определяются роли?
Они определены внутри roles/*каталогов. Роли определяются в основном с помощью файлов YAML, но также могут содержать ресурсы любых типов ( files/, templates/). Согласно документации определение роли структурировано следующим образом:
- Если роли / x / tasks / main.yml существует, перечисленные в них задачи будут добавлены в игру.
- Если роли / x / handlers / main.yml существуют, перечисленные в них обработчики будут добавлены в игру.
- Если роли / x / vars / main.yml существуют, перечисленные в них переменные будут добавлены в игру.
- Если роли / x / meta / main.yml существуют, любые зависимости ролей, перечисленные в нем, будут добавлены в список ролей (1.3 и новее)
- Любые задачи копирования могут ссылаться на файлы в ролях / x / files / без необходимости относительного или абсолютного пути к ним.
- Любые задачи сценария могут ссылаться на сценарии в ролях / x / files / без необходимости относительного или абсолютного пути к ним.
- Любые задачи шаблона могут ссылаться на файлы в ролях / x / templates / без необходимости относительного или абсолютного пути к ним.
- Любые включаемые задачи могут ссылаться на файлы в ролях / x / tasks / без необходимости относительного или абсолютного пути к ним.
Самый важный файл - roles/x/tasks/main.ymlздесь вы определяете задачи, которые будут выполняться при выполнении роли.
Помимо файла ansible.cfg, который находится на сервере Ansible, как мне добавить / настроить Ansible с доступными Playbooks / ролями? Например, когда я запускаю ansible-playbook someplaybook.yaml, как Ansible узнает, где найти этот playbook?
$ ansible-playbook someplaybook.yaml
Будет искать пьесу внутри текущего каталога.
$ ansible-playbook somedir/somedir/someplaybook.yaml
Буду искать пьесу внутри somedir/somedir/каталога.
Вы обязаны разместить свой проект со всеми сценариями и ролями на сервере. Ansible не имеет к этому никакого отношения.