diff --git a/docs/drafts/timeweb-migration-log.md b/docs/drafts/timeweb-migration-log.md index 1833d7c..b1765bf 100644 --- a/docs/drafts/timeweb-migration-log.md +++ b/docs/drafts/timeweb-migration-log.md @@ -8,6 +8,60 @@ --- +## Шаг 7 — `run-app` тег + унификация registry (2026-05-22, выполнено) + +По итогам аудита подготовительных задач выявлены и закрыты две +несостыковки: + +### 7a. Пропущенный `run-app` тег в remembos + +В `playbook-remembos.yml:73` была задача +`Restart docker compose services if config changed but not +docker-compose.yml` (условный рестарт через `state: restarted`, +триггер — изменение `config.toml` без изменения `docker-compose.yml`), +у неё не было тега `run-app`. На cutover'е при +`--skip-tags run-app` основной запуск пропустился бы (правильно), а +эта условная задача всё равно сработала бы (потому что её `when:` +истинно при первом деплое — конфиг создаётся), попыталась бы +рестартануть несуществующий compose-стек и упала. Тег добавлен. + +### 7b. Унификация `registry_url` в docker_login + +`playbook-homepage.yml` и `playbook-transcriber.yml` использовали +хардкод `registry_url: "cr.yandex"`, а `playbook-remembos.yml` — +`'{{ yc_container_registry }}'` из vault. Привёл к одному виду: +теперь во всех трёх — `"{{ yc_container_registry }}"` из vault. + +`docker_registry_prefix` в `vars/homepage.yml` и `vars/transcriber.yml` +не трогал — там полный image-prefix вида `cr.yandex/`, +это отдельная концепция (есть отдельный vault-var +`yc_container_registry_repository`, используемый в +`files/remembos/docker-compose.template.yml`). Если позже захочется +унифицировать целиком — это отдельная итерация. + +### Аудит бэкапов: gap'ы по `caddyproxy`, `remembos`, `transcriber` + +Эти три приложения имеют состояние в `data_dir`, но не имеют ни +`backup.template.sh`, ни ansible-генерируемого `backup-targets`. +Для миграции это закрывается через **rsync** на cutover'е — данные +переносятся напрямую, без зависимости от restic-снапшотов: + +- `caddyproxy/data/` — TLS-сертификаты Let's Encrypt (важно, чтобы + не упереться в rate-limit LE при перевыпуске ~17 сертов). +- `remembos/data/` — user data (memos-токен, telegram tokens). +- `transcriber/data/` — пользовательские транскрипции. + +Это означает: на этапе rsync (шаг 4 cutover'а в плане) **нельзя** +полагаться только на restic-restore — для этих трёх апов rsync — +единственный канал. Для остальных приложений (которые имеют +`backup.sh` или `backup-targets`) можно при необходимости использовать +restic как фолбэк, но rsync всё равно остаётся основным методом. + +Долгосрочно — добавить им backup-механизм отдельной итерацией после +миграции. Сейчас это сверх сферы. + +--- + ## Шаг 6 — `vars/vars.yml` загружается во всех плейбуках (2026-05-22, выполнено) Сегодняшний коммит `8378f0e` («Migration: expose some public vars») diff --git a/playbook-homepage.yml b/playbook-homepage.yml index fd5215e..6a2040c 100644 --- a/playbook-homepage.yml +++ b/playbook-homepage.yml @@ -29,7 +29,7 @@ - name: "Login to Yandex Container Registry" community.docker.docker_login: - registry_url: "cr.yandex" + registry_url: "{{ yc_container_registry }}" username: "oauth" password: "{{ yc_oauth_token }}" diff --git a/playbook-remembos.yml b/playbook-remembos.yml index dad3b87..2b46c90 100644 --- a/playbook-remembos.yml +++ b/playbook-remembos.yml @@ -77,3 +77,5 @@ when: - config_file_result.changed - not docker_compose_file_result.changed + tags: + - run-app diff --git a/playbook-transcriber.yml b/playbook-transcriber.yml index 42d4e0d..68f694a 100644 --- a/playbook-transcriber.yml +++ b/playbook-transcriber.yml @@ -41,7 +41,7 @@ - name: "Login to Yandex Container Registry" community.docker.docker_login: - registry_url: "cr.yandex" + registry_url: "{{ yc_container_registry }}" username: "oauth" password: "{{ yc_oauth_token }}"