Управление большим количеством ролей Ansible

Мы работаем над переводом нашего проекта на Ansible. В связи с масштабом проекта нам потребуется большое количество ролей (30+). Где мы сталкиваемся с проблемами, так это в том, как хранить эти роли и управлять ими. Вещи, которые мы рассмотрели:

1) Репозиторий Github для каждой роли -> Это нереально. Мы не хотим управлять более чем 30 репозиториями git просто для того, чтобы поддерживать наши роли. 2) Ansible Galaxy -> Это было бы полезно, если бы у нас был локальный экземпляр Ansible Galaxy, но центральный экземпляр не будет работать 3) Мы можем просто хранить роли в плоском каталоге, однако в этом случае мы теряем преимущество возможности их версий. Существует также вопрос о том, как автоматически перенаправить наши каталоги ролей ansible на хост контроллера ansible в правильный каталог.

Есть ли решение, которое мне не хватает?


person pasquers    schedule 15.11.2018    source источник
comment
Есть ли проблема со всеми ролями в репозитории git? Потому что вы хотите иметь requirements.yml для этих ролей?   -  person imjoseangel    schedule 16.11.2018
comment
Действительно ли роли функционально разделены? Если нет, то может иметь смысл объединить некоторые из них в несколько ролей, используя теги или условия для управления выполнением.   -  person Michael Gardner    schedule 16.11.2018


Ответы (1)


Я бы предложил сохранить роли в одном репозитории git.

Для автоматической отправки на контроллер ansible вы можете создать отдельную книгу воспроизведения, которая использует модуль git для получения соответствующей версии ролей. Затем это можно будет запускать на регулярной основе (или по расписанию через cron). ).

В качестве альтернативы вы можете добавить поиск git в свои существующие плейбуки, а затем он будет проверять/обновлять роли перед их выполнением.

person Michael Gardner    schedule 16.11.2018
comment
Я согласен. У меня было около 100 различных ролей Ansible и около дюжины плейбуков, использующих эти роли для одного проекта, над которым я работал. Все они хранились в одном репо. Работал просто отлично. Я не подбирал автоматически новые роли при запуске playbooks. Я удостоверился, что каталог обновлен вручную, но это были только я и еще один человек. Таким образом, нам не нужно было сильно беспокоиться о том, что мы не знаем, когда были обновления. :) - person Lewis M; 16.11.2018
comment
Одним из дополнений к этому является то, как вы управляете отдельными версиями ролей? Например, некоторые роли требуют значительно отличающейся конфигурации в зависимости от версии (хорошим примером является Tomcat). Поэтому, чтобы установить конкретную версию роли, нам нужно иметь возможность ссылаться на нее по версии. - person pasquers; 16.11.2018
comment
@pasquers Обычно я использую теги и / или переменные, которые извлекают определенные значения конфигурации, которые мне нужны. Затем у вас может быть несколько файлов переменных в /var или /default, на которые ссылаются в зависимости от настроек тегов или версии. Использование шаблонов jinja было бы еще одной возможностью. - person Michael Gardner; 20.11.2018