Короткий ответ
Нет шага отката — нет допуска к прод-изменению. Rollback plan — конкретные действия: что вернуть, откуда, за сколько, кто жмёт, какой критерий «откат успешен». Не фраза «есть backup». Для конфигов — копия файла/экспорт до правки. Для VM — проверенная точка backup или снимок с пониманием риска. Для AD/GPO — штатный backup GPO, не надежда на память.
Владелец изменения (Иван Петров или исполнитель в заявке) подписывает откат в CHG до начала окна.
Симптомы и как отличить
Типичная картина:
- обновили Ubuntu, ядро не грузится, старого ядра в меню нет;
nftablesперезаписали, бэкапа ruleset нет;- GPO затёрли,
Backup-GPOне делали; - миграция VLAN, схема as-was не сохранена.
Отличия:
| Ситуация | Не «нет rollback» | Куда |
|---|---|---|
| Нет вообще заявок | регламент изменений | регламент |
| Backup прод не настроен | регламент backup | backup |
| DRP на площадку | катастрофа | DRP |
| Restore никогда не пробовали | тесты | restore-тесты |
Возможные причины
- Спешка: «правка на минуту».
- Не знают штатный способ отката патча.
- Снимок считают панацеей и применяют на DC.
- Конфиг правили в GUI, экспорт не сделали.
- Успешные изменения без отката приучили к безнаказанности.
- Редко: вендор заявил «отката нет» — тогда изменение нельзя делать без пилота.
Диагностика
Разберите последние неудачные работы. Вопросы к каждой:
- Была ли копия конфига с датой до изменения?
- Была ли точка backup проверенная, не «job зелёный»?
- Знали ли командор отката (не только исполнитель)?
- Сколько времени занял фактический возврат vs обещанное окно?
Проверьте, есть ли свежий backup узла, который собираетесь патчить:
# System Restore на Windows Server обычно не план отката. Смотрите штатный backup:
wbadmin get versions
# если целевой репозиторий известен:
wbadmin get versions -backupTarget:\\backup.contoso.example\Repo01Linux:
sudo etckeeper vcs log -1 # если etckeeper внедрён
sudo cp -a /etc/nftables.conf /root/nftables.conf.$(date +%F)
ls /boot/vmlinuz-*Если ls /boot показывает одно ядро — откат ядра уже почти невозможен.
GPO:
Get-GPO -All | Select-Object DisplayName, ModificationTime, Id
# Backup-GPO — до изменения, в каталог заявкиРешение
Шаблон rollback в заявке (обязательные поля)
- Триггер отката: например «SMB не открывается с двух ПК за 15 минут» / «пинг шлюза нет 5 минут».
- Действие: команды или GUI-путь, не «вернём как было».
- Источник: путь копии, имя restore point, номер правила firewall.
- Срок: уложиться в окно; если откат > окна — изменение не начинать.
- Кто: исполнитель + наблюдатель на P1-сервисах.
Сценарий A. Конфиг (nginx, nftables, sudoers)
sudo cp -a /etc/nginx/nginx.conf /root/chg-42/nginx.conf.pre
sudo nginx -t && sudo systemctl reload nginx
# откат:
sudo cp -a /root/chg-42/nginx.conf.pre /etc/nginx/nginx.conf
sudo nginx -t && sudo systemctl reload nginxСценарий B. Патч Windows Server
- Точка backup VM/bare-metal до окна, статус job успешен.
- Знать, uninstall какого KB или откат VM.
- Не патчить DC и FILE01 одним окном без поочерёдной проверки.
Сценарий C. Сеть/firewall
Экспорт правил до. Откат — импорт или обратное правило с тем же комментарием CHG-42. Не «вспомним ACL». Связь со схемой.
Сценарий D. AD/GPO
New-Item -ItemType Directory -Force C:\Temp\chg-42-gpo | Out-Null
Backup-GPO -Name 'Contoso-File-Servers' -Path 'C:\Temp\chg-42-gpo'
# после провала:
Import-GPO -BackupGpoName 'Contoso-File-Servers' -Path 'C:\Temp\chg-42-gpo' -TargetName 'Contoso-File-Servers'Не делайте Restore-GPO вслепую на весь домен. Одна GPO — один backup.
Когда отката нет
Пилот на копии, feature flag, dual-run. Если вендор не даёт downgrade — это должно быть сказано до окна, и owner сервиса принимает риск письменно.
Мини-каталог стандартных откатов
Заготовьте тексты на типовые правки, чтобы не выдумывать в 22:40. DNS A: удалить запись, Resolve-DnsName с клиента после TTL. Правило firewall с комментарием CHG-n: disable/удалить это правило, проверить тот же Test-NetConnection. Пароль svc-учётки: вернуть предыдущий из vault только если его не успели забыть сервисы — иначе это уже восстановление службы, не откат. Документируйте, какой вариант выбран до старта.
Для Ubuntu-пакета: apt-cache policy nginx до и после, возможность apt-get install nginx=<old> если репозиторий ещё отдаёт версию. Если зеркало сразу забывает старую — откат = restore VM/файлов из backup, и это должно быть сказано в CHG заранее.
Как проверить, что проблема устранена
- В 10 последних normal-CHG есть заполненный rollback.
- Выборочно: файл
.preили backup GPO реально существует, не «путь в заявке 404». - Учение: одно безвредное изменение с намеренным откатом (на тесте) прошло по тексту плана.
- Emergency тоже имеют «как вернуть», пусть краткий.
Запись факта отката — в журнале, иначе в следующий раз план снова выдумают.
Если не помогло
- Снимок VM «на час» оставили на месяцы: это уже риск диска, не rollback. Удаляйте после успеха окна по процедуре гипервизора.
- Backup job врал: это проблема тестов restore, откат на такой job запрещён.
- Изменение в SaaS без undo: готовьте ручной компенсирующий шаг (вернуть MX, вернуть TXT), не делайте вид, что rollback «не нужен».
Профилактика
- Чеклист CHG в тикет-системе: поле rollback обязательное, иначе нельзя перевести в «в работе».
- etckeeper / git на конфиги Linux.
- Запрет править прод с ноутбука без копии.
- Разбор неудачных окон: почему откат сработал медленно.
FAQ
Достаточно ли «есть Veeam» как rollback?
Нет. Нужны: имя job, точка до изменения, куда восстанавливать (не original overwrite по умолчанию), сколько это займёт vs окно.
Checkpoint Hyper-V для файлового сервера?
Кратко на время окна — обсуждаемо. Не забывать удалить. Для DC — не использовать как план.
Откат через «обратную правку в голове»?
Это не план. Пишите команды.
Что если откат опаснее, чем ехать вперёд?
Зафиксируйте в заявке: критерии «едем вперёд», кто решает (owner), эскалация. Молчаливое «ну поедем» в 23:40 — путь к двойной аварии.
Нужен ли rollback на добавление DNS A-записи?
Да, тривиальный: удалить запись. Именно такие стандартные откаты можно заготовить в каталоге standard changes.
Кто проверяет, что .pre не пустой?
Исполнитель до начала: Get-Item/ls -l в журнал. Второй человек на P1-сервисах.