L
- hosts: backendУ меня предполагается, что плейбук описывает решение одной крупной задачи. К примеру, развернуть приложение и все его окружение. Таски в плейбуке - описывают некоторые вещи, уникальные именно для данной задачи. Роли - что-то общее для многих плейбуков. Вот, например, у меня пока существует отдельный файлик с тасками для установки nginx. И я прям сегодня занят тем, что переношу в роль "cogia-nginx" общие для пачки проектов таски, которые сетапят nginx. В общем случае я всегда начинаю с написания плейбуков. Таски, делающие какую-то подзадачу выношу в отдельные файлы. Так потом будет удобно отпочковать их в роль когда обрисуются общие паттерны.
# Apply permitting firewall rules for service at backend servers
vars:
ansible_ssh_user: ansible
ansible_become: yes
roles:
- cogia-iptables
- hosts: middleend
pre_tasks:
- name: Configuring installation...
include_vars: "config.yml"
roles:
- cogia-iptables
- mysql-cogia
- mysql-exporter
- fluentd
post_tasks:
- name: Configure system...
include_tasks: tasks/system.yml
- name: Include tasks to install service itself...
include_tasks: tasks/main.yml
- name: Include tasks to install nginx...
include_tasks: tasks/nginx.yml
- name: Include tasks to allow log access
include_tasks: tasks/log_access.yml
Отдельно упомяну config.yml. Туда я отношу переменные общие для всех задач, ролей и хостов плейбука. Возможно, это анти-паттерн. Цель - вынести в отдельное место переменные, которые являются общими для всех групп хостов и для всех "play" в плейбуке.