18 Commits
Author SHA1 Message Date
av 0b2a3bd19c backlog: удалена задача local-image-build, она реализована
- все три приложения (homepage, transcriber, remembos) собирают образы
  локально ролью app_image, реестр и yc_*-переменные выведены из оборота
- ссылавшиеся задачи обновлены: narrow-secret-scopes и
  no-secrets-in-playbook-output больше не ждут эту работу
2026-07-25 16:26:31 +03:00
av 1b2bc61cff docs: реестр убран из описаний, беклог отмечен по локальной сборке
- AGENTS.md: homepage/transcriber собираются ролью app_image, registry-плейбуков
  и vars/transcriber.images.yml больше нет
- local-image-build: закрыты шаги по homepage и transcriber, остался вынос
  yc_*-переменных из vault; добавлены замеры архивов
- container-hardening-nits: снят пункт про плавающий `:latest` у homepage
2026-07-25 14:37:08 +03:00
av 5dc199f3ce remembos: деплой через локальную сборку образа вместо Yandex Registry
- плейбук зовёт роль app_image, docker_login в cr.yandex удалён
- compose тянет `{{ app_name }}:{{ app_image_tag }}` с pull_policy: never
  вместо зашитого тега из реестра
2026-07-25 14:06:30 +03:00
av f505e9ebeb backlog: отмечен сделанный шаг с no_log
- Первый шаг задачи закрыт коммитом b7b1f49; остались вынос секретов
  в файлы и проверка от дрейфа.
- Записано исключение: compose miniflux оставлен без no_log, из vault он
  тянет только имя пользователя и имя базы.
2026-07-25 12:30:41 +03:00
av fbd0a66f44 backlog: secrets-env-to-file разложена по приложениям
- Шесть задач `secrets-file-*` вместо одной: outline, wakapi, authelia,
  gramps (средний), gitea, tududi (низкий, выигрыш частичный). Wanderer
  отпал — файловых секретов не умеет ни meilisearch, ни pocketbase.
- Матрица механизмов со ссылками на код уехала в
  docs/drafts/secrets-file-support.md, родитель — на кладбище.
2026-07-25 12:25:50 +03:00
av f9a8c64377 backlog: матрица поддержки файловых секретов по приложениям
- Проверено по исходникам закреплённых версий: outline, wakapi, gitea,
  gramps и authelia умеют брать секреты из файла, tududi и wanderer — нет.
- Отмечено, что `secrets-env-to-file` переросла в эпик: разбивать по
  приложениям отдельным заходом.
2026-07-25 12:20:20 +03:00
av 3b846536f9 backlog: заведён запрет секретов в выводе плейбуков
- `inv pl` идёт с `--diff`, и 14 задач в 12 плейбуках печатают отрендеренные
  секреты в терминал; `no_log` есть только в `roles/secrets`. Инвентарь,
  рычаги (`no_log`, `diff: false`, вынос в отдельный файл) и порядок — в задаче.
- Актуализирована `secrets-env-to-file`: список приложений сверен с шаблонами
  (tuwunel чистый, у gitea только SMTP), добавлен мотив с диффом.
2026-07-25 12:03:08 +03:00
av 0e7300ed0e backlog: добавлены задачи про локальную сборку образов и права секретов
- Уход от Yandex Container Registry на роль `app_image`: homepage,
  transcriber, remembos собираются локально и едут через docker save/load.
- Сужение прав секретов: `yc_oauth_token` открывает весь аккаунт ради
  одного `docker login` — вторая задача зависит от первой.
2026-07-25 11:54:31 +03:00
av f3c76ca583 backlog: добавлена идея о хранении пароля ansible-vault
- Пароль лежит открытым текстом рядом с репозиторием, а `ansible.cfg`
  подставляет его в любую ansible-команду — отсюда дамп секретов
  через `ansible-inventory --list`.
- Заведена идеей, а не задачей: компромисс «удобство против доступности
  автоматизации агенту» не разрешён, варианты с KeePassXC записаны с ценой.
2026-07-25 11:43:14 +03:00
av 72d8a9932e backlog: синхронизированы заголовки 10 задач в индексе
- Заголовки в README.md разошлись с H1 файлов задач; выровнено
  механически через `backlog.py check --fix`, тексты задач не менялись.
2026-07-25 11:42:59 +03:00
av 564432755d Ansible: точечные фиксы идемпотентности
- backup-targets собирается одной copy вместо lineinfile в цикле: теперь
  удаление цели из списка реально убирает строку из файла (7 плейбуков)
- netdata: getent вместо grep по /etc/group, ушёл бессмысленный changed_when
  и мёртвый фолбэк PGID
- исправлены копипастные имена play в wanderer и remove-user-and-app
2026-07-24 21:26:39 +03:00
av 4d976585ec Ansible: единственный инвентарь production.yml
- production.yml переписан на живой Timeweb-хост, timeweb.yml удалён,
  HOSTS_FILE в tasks.py и примеры в README поправлены
- host-vars application_dir и mount_external_storage не перенесены: это
  наследие YC-диска, а после переезда в group_vars инвентарь их перебивает
- ansible.cfg: inventory по умолчанию, чтобы забытый -i не уводил в никуда
2026-07-24 21:15:12 +03:00
av 9c156df0c7 Ansible: рестарт контейнеров переведён на handlers
- caddyproxy, netdata, authelia, bifrost, remembos: конфиг-задачи нотифаят
  handler "Restart application" вместо безусловного или условного рестарта
- ansible.cfg: force_handlers, иначе упавший прогон теряет notify и рестарт,
  применяющий правку конфига, не случится уже никогда
- authelia рестартит только authelia_app, чтобы не сбрасывать сессии в redis
2026-07-24 21:05:27 +03:00
av 1cf660b4fd Ansible: общие переменные перенесены в group_vars/all
- vars/vars.yml → group_vars/all/main.yml, vars/secrets.yml →
  group_vars/all/secrets.yml; boilerplate vars_files убран из всех плейбуков
- имя secrets.yml сохранено намеренно: pre-commit-хук и .crushignore ищут
  слово secret(s) в имени файла
- host_vars инвентаря теперь имеют приоритет над общими переменными
2026-07-24 20:44:51 +03:00
av 9b8cd5cab6 Backlog: уточнить SSH-задачу, завести очистку устаревшего инвентаря
Linting / Ansible Lint (push) Canceled after 0s
Linting / YAML Lint (push) Canceled after 0s
2026-07-13 19:52:01 +03:00
av b60e55ec5e Backlog: security-ревью (fable) — 13 находок по приоритетам 2026-07-13 19:47:51 +03:00
av f110cf7208 Backlog: перенести задачи из tududi (диск-алерты, logrotate, аудит безопасности) 2026-07-13 19:30:53 +03:00
av 30358de9d9 Docs: собрать беклог задач из drafts 2026-07-13 19:25:20 +03:00