Назад | Перейти на главную страницу

Разделяете простые задачи по ролям в ансибле?

У меня есть несколько разных типов машин, на которых должно быть определено официальное репозиторий postgres APT, чтобы иметь возможность apt-get install нужная версия инструментов. Эти разные машины должны иметь следующие общие функции:

---
- name: add postgres repo key
  sudo: yes
  apt_key: url=http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc
           id=ACCC4CF8

- name: add postgres repo
  sudo: yes
  apt_repository: repo='deb http://apt.postgresql.org/pub/repos/apt/ {{ ansible_distribution_release }}-pgdg main'

У меня две роли, которые зависят от этого, моя nagios роль (нужно выполнить кучу работы с psql) и мой postgres-base роль. Было бы замечательно, если бы обе эти роли каким-то образом включали один и тот же файл / задачи, указанные выше.

Прямо сейчас я создал отдельную роль для задач, назвал ее postgres-repo и я использую зависимости ролей ansible, чтобы убедиться, что обе указанные выше роли выполняются postgres-repo перед выполнением.

Это их meta/main.yml:

---
dependencies:
  - postgres-repo

Это лучшее, что я могу сделать? Есть ли более легкий подход, чем создание отдельной роли?

Мне это кажется лучшим вариантом; роли - это делать одно дело и делать это хорошо :)