mirror of
https://github.com/andrey271192/safe-monthly-maintenance.git
synced 2026-09-21 12:01:57 +00:00
83 lines
3.9 KiB
Markdown
83 lines
3.9 KiB
Markdown
# Модель безопасности
|
||
|
||
Цель проекта — выполнять повторяемое обслуживание Ubuntu/Debian с минимальным
|
||
риском. «Безопасно» не означает «невозможно сломать»: любое системное обновление
|
||
может содержать ошибку пакета, несовместимость приложения или service restart.
|
||
|
||
## Принципы
|
||
|
||
### Без удаления пакетов
|
||
|
||
Основное обновление использует `apt-get upgrade --no-remove`.
|
||
`dist-upgrade` и `full-upgrade` не используются.
|
||
|
||
`autoremove` выключен. Причина: пакет, нужный локальному приложению, иногда
|
||
ошибочно остается помеченным как автоматически установленный.
|
||
|
||
### Без автоматического reboot
|
||
|
||
Новое ядро устанавливается, но активируется только после решения администратора.
|
||
Это предотвращает незапланированный разрыв VPN, базы данных, SSH или другого
|
||
сервиса.
|
||
|
||
### Без опасной очистки файлов
|
||
|
||
Очистка временных данных делегируется `systemd-tmpfiles`, `logrotate`,
|
||
`journalctl` и APT. Проект не содержит рекурсивного удаления широких каталогов.
|
||
|
||
### Без очистки Docker по умолчанию
|
||
|
||
Stopped containers, tagged images, volumes и networks могут содержать нужное
|
||
состояние. Поэтому Docker cleanup выключен. Опция удаляет только dangling images.
|
||
|
||
### Сохранение конфигов
|
||
|
||
`Dpkg::Options::=--force-confold` сохраняет установленную локальную конфигурацию.
|
||
Новая версия файла пакета обычно остается рядом как `.dpkg-dist`; ее нужно
|
||
сравнить вручную.
|
||
|
||
### Проверки до изменения
|
||
|
||
APT upgrade не запускается при:
|
||
|
||
- поврежденном/незавершенном состоянии `dpkg`;
|
||
- критически малом свободном месте;
|
||
- ошибке `apt-get update`.
|
||
|
||
### Один процесс
|
||
|
||
`flock` предотвращает параллельные maintenance-запуски. APT-lock ожидается до
|
||
10 минут, что уменьшает конфликт с `apt-daily`.
|
||
|
||
## Рекомендуемая эксплуатация
|
||
|
||
1. Создайте snapshot VM перед первым запуском.
|
||
2. Проверьте installer и checksum.
|
||
3. Запустите на тестовой VM.
|
||
4. Проверьте journal, failed units и приложение.
|
||
5. Только потом развертывайте на остальные серверы.
|
||
6. Перезагружайте сервер в согласованное maintenance window.
|
||
|
||
## Что проверить после запуска
|
||
|
||
```bash
|
||
systemctl --failed
|
||
dpkg --audit
|
||
apt list --upgradable
|
||
journalctl -u safe-monthly-maintenance.service -n 200
|
||
test -e /var/run/reboot-required && echo "reboot required"
|
||
```
|
||
|
||
Для VPN, reverse proxy, базы данных и других сервисов добавьте собственные
|
||
health checks после системного обслуживания.
|
||
|
||
## Rollback
|
||
|
||
Проект сохраняет список пакетов, но не создает полноценный rollback.
|
||
|
||
Для надежного возврата нужны:
|
||
|
||
- snapshot гипервизора/VPS-провайдера;
|
||
- резервная копия `/etc` и данных приложений;
|
||
- отдельно проверенная процедура восстановления.
|