1.8 KiB
Синхронизация общих Ansible-ролей между репозиториями
Приоритет: средний
Серверы управляются изолированными репозиториями (pet-project-server, buckland,
далее — торрент-бокс). Кастомные роли (owner, eget, secrets) концептуально
общие, но физически продублированы и дрейфуют (owner в buckland стал мёртвым
кодом). Решение под pets-подход: канон ролей в ~/projects/private/ansible-shared/,
каждый репозиторий держит закоммиченную копию (она же «пин версии») и
синхронизируется через rsync-таски invoke — roles-pull / roles-push /
roles-status. Подписка на роли явная и пер-серверная (SYNCED_ROLES в
tasks.py). Обновление роли на сервере — осознанный коммит с читаемым диффом, не
скрытый сайд-эффект. Предохранитель от дрейфа — предупреждение в lefthook.
Отвергнуты: общий roles_path, симлинки, submodule/subtree, galaxy-из-git,
монорепо (все ломают самодостаточность или вводят лишнюю петлю).
Подход обсуждён, реализация не начата. Полный дизайн + план внедрения: docs/drafts/shared-roles-sync.md.
Связано: roles/owner, roles/eget, roles/secrets, tasks.py, lefthook.yml, project_isolated_repos_shared_roles, project_shared_invoke_command_surface.