From 600a30ec11bb0e128e92369e5c78decaafc5e907 Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Fri, 22 May 2026 20:11:23 +0300 Subject: [PATCH] Migration: add migration log --- docs/drafts/timeweb-migration-log.md | 66 ++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 docs/drafts/timeweb-migration-log.md diff --git a/docs/drafts/timeweb-migration-log.md b/docs/drafts/timeweb-migration-log.md new file mode 100644 index 0000000..a7a4b1a --- /dev/null +++ b/docs/drafts/timeweb-migration-log.md @@ -0,0 +1,66 @@ +# Журнал миграции в Timeweb + +Хронология фактического переезда. План и архитектурные решения — +в [timeweb.md](timeweb.md). Здесь только то, что реально сделано, +с датами. + +Новые записи — сверху. + +--- + +## Шаг 3 — переключение auth на cr.yandex (2026-05-22, выполнено) + +Заменена аутентификация в Yandex Container Registry с YC-metadata +service на OAuth-token из vault. + +Изменения: + +- `files/yandex-docker-registry-auth.sh` — **удалён**. +- `playbook-homepage.yml` — задача `ansible.builtin.script: + yandex-docker-registry-auth.sh` заменена на + `community.docker.docker_login` с `username: oauth`, `password: + "{{ yc_oauth_token }}"`. +- `playbook-transcriber.yml` — то же самое. + +Локальные push-плейбуки (`playbook-homepage-registry.yml`, +`playbook-transcriber-registry.yml`) не трогал — там нет auth-задачи +в принципе, локальный docker аутентифицируется вручную +(`yc container registry configure-docker` или `docker login`). +Если позже захочется унифицировать — можно добавить тот же +`docker_login` с `delegate_to: 127.0.0.1`. + +Проверено прогоном `inv pl -- homepage` и `inv pl -- transcriber` на +текущем сервере (Yandex Cloud) — ошибок нет, контейнеры работают. +Значит и на Timeweb заработает (единственная разница — исходящий IP, +а OAuth-токен в YC принимается извне). + +--- + +## Шаг 2 — OAuth-token для cr.yandex (2026-05-22, выполнено) + +В `vars/secrets.yml` добавлена (или обновлена) переменная +`yc_oauth_token` со свежим OAuth-токеном Яндекса. Токен будет +использоваться для логина в `cr.yandex` с новой машины Timeweb +(вместо текущего скрипта `files/yandex-docker-registry-auth.sh`, +который завязан на YC metadata service `169.254.169.254` и +работает только внутри YC). + +Сам код переключения на `community.docker.docker_login` пока не +вносится — это следующая итерация. Сейчас токен просто положен в +vault, чтобы не делать этого в день cutover'а под прессом. + +--- + +## Шаг 1 — снижение TTL DNS (2026-05-22, выполнено) + +В админке Yandex 360 для зоны `vakhrushev.me` уменьшен TTL +A-записей с **21 600 с (6 ч)** до **1 200 с (20 мин)**. Это даёт +запас по времени на распространение изменений после смены IP в +день cutover'а — старые кэширующие резолверы перестанут отдавать +старый адрес максимум через 20 минут (вместо 6 часов). + +Делается **заранее**, потому что само снижение TTL тоже +распространяется по кэшам по правилам старого TTL — то есть после +правки нужно подождать ≥ 6 часов, чтобы новое значение TTL само +успело прижиться. Раньше cutover'а нужно сделать с большим +запасом — день в день не сработает.