нужно запихнуть в git. Также, есть набор сторонних ролей, которые юзаются "as is" (всякие официальные роли по установке популярного софта).
Изначально хотел красиво каждую роль класть в отдельный гит-реп, а в основном environment за счёт requirements.yml подключать все роли (и самописные, и официальные). Но позже пришли в голову нюансы:
1. Хотелось бы, чтобы непосредственно репы с ролями лежали в поддиректории ./roles относительно репы с environment - для удобства. Если устанавливать роли из гита через requirements.yml - они (пожалуй, логично) ставятся не как полноценный гит-репозиторий (через clone), а как просто директория с данными (то есть, без .git внутри).
2. Скорее, нюанс в целом работы с git. Следить за актуальностью N отдельных реп - такое себе удовольствие.
Соответственно, сейчас склоняюсь к тому, чтобы:
1) Самописные роли - хранить все в одной репе (отдельно от репы environment), и на моей рабочей тачке репа с ролями будет лежать в ./roles относительно репы с environment.
2) Сторонние роли - ставить/обновлять через requirements.yml (то есть, они будут ложиться куда-то в ~/.ansible/...)
Вопрос: мб есть какой-то общепринятый подход, который решает эти нюансы? В идеале, описанный/упомянутый где-либо. Самостоятельно пока ничего "однозначно годного" не нашёл.
То как изначально правильно. Чем не понравилось то
В ansible.cfg в корне проекта указываешь относительный role_path и все
вот "корень зла" :) > Хотелось бы, чтобы непосредственно репы с ролями лежали в поддиректории ./roles относительно репы с environment Я бы хотел иметь такую структуру: /path/environment (git-реп, где лежат все мои плейбуки, мб инвентарь и т.д.; ./roles/ в gitignore) /path/environment/roles (git-реп, где лежат все мои самописные роли) Если я буду через requirements.yml устанавливать самописные роли в /path/environment/roles - директории в /path/environment/roles не будут являться git-репозиториями. Я это имел в виду под словами: > Если устанавливать роли из гита через requirements.yml - они (пожалуй, логично) ставятся не как полноценный гит-репозиторий (через clone), а как просто директория с данными (то есть, без .git внутри). То есть, мне, в таком случае, придётся извращаться в виде: 1) Иметь какую-то отдельную директорию, где лежат мои самописные роли (их git-репозитории), там их создавать/править/push/pull/... 2) Каждый раз после изменения ролей - внутри environment делать ansible-galaxy install ... Мб это, конечно, не "извращаться", а "так и надо" - но мне такое пока явно непривычно.
Тогда это не роди в общем-то, а просто набор тасков
А что не так? В одном месте разрабатываете роли, в другом - используете. Вы же когда ПО разрабатываете и в ./bin билдите бинарник для теста, переносите его в свой $PATH после работы. Ваш ансибл environment же кто то будет запускать, возможно им даже не надо будет ничего в ролях править ваших.
Зачем вам локально гит для ролей вне контекста конкретной репы - совершенно непонятно
то есть, я тут либо "не согласен", либо "не понял")
я полагаю, я таки преисполнился и понял, что имелось в виду. спасибо)
Стикер
git submodules уже предлагали?
нет* :) . спасибо за идею, но, вроде, и так уже какой-то "flow" себе намутил, вопрос более неактуален
Обсуждают сегодня