backlog: удалена задача shared-roles-sync, она реализована
- канон ролей лежит в ansible-roles, синхронизация идёт тасками roles-status / roles-pull / roles-push, подписка — eget и app_image - драфт переведён в статус «реализовано»: отмечены расхождения с дизайном (имя канона, состав подписки) и незакрытые пункты плана
This commit is contained in:
@@ -29,7 +29,6 @@ _(sec-ревью)_ — три независимых security-ревью на м
|
||||
- [Включить автообновления безопасности](security-autoupdates.md) — патчи openssh/libssl только вручную; окна в недели между CVE и фиксом _(sec-ревью)_
|
||||
- [Запретить SSH-вход под root](ssh-disable-root-login.md) — `PermitRootLogin yes` пускает root по ключу; наименьшие привилегии + defense-in-depth (пароль уже off) _(sec-ревью)_
|
||||
- [Gitea runner on-demand в Yandex Cloud](gitea-runner-on-demand.md) — раннер активен только во время сборки; webhook→Cloud Function стартует ВМ, probe/decide гасят по idle; экономия ~95%
|
||||
- [Синхронизация общих Ansible-ролей между репозиториями](shared-roles-sync.md) — `owner`/`eget`/`secrets` дублируются между репозиториями и дрейфуют; канон в ansible-shared + rsync-таски invoke
|
||||
- [Composable-роль `backup`](ansible-backup-role.md) — бэкап — самый чистый шов для extraction (одинаков у всех, различается только список targets) _(ансибл-ревью)_
|
||||
- [Вывести из оборота секреты с широкими правами](narrow-secret-scopes.md) — `yc_oauth_token` (весь аккаунт Yandex Cloud) уже выведен; осталось проставить радиус остальным переменным vault и сузить широкие
|
||||
- [outline: секреты из файлов](secrets-file-outline.md) — умеет generic `<NAME>_FILE` для всех пяти секретов; единственное приложение, где выносится вообще всё, включая пароль БД
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
# Синхронизация общих 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](../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.
|
||||
Reference in New Issue
Block a user