Add legacy ADR
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
# Обновление ОС пересборкой на свежем сервере
|
||||
|
||||
- Дата: 2025-12-13
|
||||
|
||||
## Контекст
|
||||
|
||||
На сервере стояла Ubuntu 22.04, и к концу 2025 пора было обновляться.
|
||||
Обновлять живую боевую систему in-place (`do-release-upgrade`) не
|
||||
хотелось — это рискованно и тяжело откатывается, если что-то пойдёт не
|
||||
так на работающем сервере.
|
||||
|
||||
## Рассмотренные варианты
|
||||
|
||||
- **In-place обновление** (`do-release-upgrade` на живой системе).
|
||||
Отвергнуто: риск сломать рабочий сервер, нет простого отката.
|
||||
- **Пересборка на свежем сервере** (выбран). Поднять новый сервер с
|
||||
целевой ОС, накатать ansible, прицепить диск с данными, развернуть
|
||||
приложения — старый сервер остаётся нетронутым как точка отката.
|
||||
Заодно почистить мусор от прошлой рабоыт сервера.
|
||||
|
||||
## Решение
|
||||
|
||||
Обновляем ОС через пересборку на свежем сервере. Метод опирается на три
|
||||
предпосылки:
|
||||
|
||||
- **Деплой без запуска контейнеров.** Сводные плейбуки
|
||||
(`playbook-all-setup`, `playbook-all-applications`) и тег `run-app`
|
||||
позволяют раскатать пользователей, каталоги и конфиги, но НЕ запускать
|
||||
приложения (`--skip-tags run-app`) — данные переносятся в «тихую»
|
||||
систему (коммиты `5b53cb3`, `48bb8c9`, `67df03e`).
|
||||
- **Данные на отдельном диске**
|
||||
([ADR-2025-12-07](ADR-2025-12-07-app-data-on-separate-disk.md)) — диск
|
||||
с данными прицепляется к новому серверу.
|
||||
- **Фиксированные uid/gid.** Заранее закрепили uid/gid всех
|
||||
пользователей приложений (роль `owner`, коммит `c2ea2cd`). Это
|
||||
критично: иначе при пересоздании пользователей на новом сервере
|
||||
uid/gid могли бы сдвинуться, и данные приложений на отдельном диске
|
||||
оказались бы с чужим владельцем.
|
||||
|
||||
Порядок: сначала вся подготовка (отдельный диск, перенос данных на него,
|
||||
фиксация uid/gid), затем пересборка на новом обновлённом сервере. Перенос
|
||||
прошёл без проблем.
|
||||
|
||||
## Последствия
|
||||
|
||||
- `+` Обновление ОС без риска для живой системы; откат = вернуться на
|
||||
старый сервер.
|
||||
- `+` Получился воспроизводимый процесс миграции — позже переиспользован
|
||||
при переезде в Timeweb как «cold cutover»
|
||||
([ADR-2026-05-23](ADR-2026-05-23-migrate-to-timeweb.md)).
|
||||
- `+` Фиксация uid/gid стала постоянным инвариантом проекта.
|
||||
- `-` Метод требует заранее подготовленных предпосылок (фикс uid/gid +
|
||||
данные на отдельном диске); без них он не работает.
|
||||
Reference in New Issue
Block a user