3.5 KiB
3.5 KiB
Обновление ОС пересборкой на свежем сервере
- Дата: 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) — диск с данными прицепляется к новому серверу.
- Фиксированные uid/gid. Заранее закрепили uid/gid всех
пользователей приложений (роль
owner, коммитc2ea2cd). Это критично: иначе при пересоздании пользователей на новом сервере uid/gid могли бы сдвинуться, и данные приложений на отдельном диске оказались бы с чужим владельцем.
Порядок: сначала вся подготовка (отдельный диск, перенос данных на него, фиксация uid/gid), затем пересборка на новом обновлённом сервере. Перенос прошёл без проблем.
Последствия
+Обновление ОС без риска для живой системы; откат = вернуться на старый сервер.+Получился воспроизводимый процесс миграции — позже переиспользован при переезде в Timeweb как «cold cutover» (ADR-2026-05-23).+Фиксация uid/gid стала постоянным инвариантом проекта.-Метод требует заранее подготовленных предпосылок (фикс uid/gid + данные на отдельном диске); без них он не работает.