feat(ops): offsite-бэкапы и проверки профилей
- deploy/backup.sh: BACKUP_OFFSITE_TARGET (rsync или rclone:remote:path) выгружает готовый архив после локальной ротации; неудача выгрузки только предупреждает. Ротация на приёмнике — опционально (BACKUP_OFFSITE_KEEP_DAYS, rclone delete --min-age). Имя архива получает суффикс, если бэкап запущен дважды в одну секунду. - deploy/install.sh: offsite-настройки в .env (BACKUP_OFFSITE_TARGET, BACKUP_OFFSITE_KEEP_DAYS) отдельным разделом; детектор незаполненных плейсхолдеров учитывает цифры в именах (FAIL2BAN_ENABLED); dry-run больше не требует прав на /opt/glchat — явность GLCHAT_ETC_DIR фиксируется до подключения common.sh, иначе ветка временного каталога была недостижима. - scripts/test-profiles.sh: сверка таблицы профилей 10.10 и одинакового набора PROFILE_* (46 проверок), make profiles-test / ops-test. - scripts/test-backup.sh: бэкап и offsite на синтетическом инстансе — локальный rsync-приёмник, шим rclone, недоступный хост, нечисловой срок (12 проверок), make backup-test. - scripts/test-install.sh: проверка offsite-ключей в .env после установки.
This commit is contained in:
@@ -99,6 +99,17 @@ if [ "$secrets_before" != "$secrets_after" ]; then
|
||||
fi
|
||||
echo "секреты сохранены при повторной установке: ok"
|
||||
|
||||
# Offsite-бэкапы: ключи должны присутствовать в .env сразу после установки
|
||||
# (пустыми — цель задаёт владелец), иначе backup.sh не увидит настройку.
|
||||
log "offsite-настройки в .env"
|
||||
docker exec "$CONTAINER" bash -lc '
|
||||
set -e
|
||||
for key in BACKUP_KEEP_DAYS BACKUP_OFFSITE_TARGET BACKUP_OFFSITE_KEEP_DAYS AGE_RECIPIENT; do
|
||||
grep -q "^${key}=" /opt/glchat/.env || { echo "нет ${key} в .env" >&2; exit 1; }
|
||||
echo "${key}: ok"
|
||||
done
|
||||
'
|
||||
|
||||
# Сборка образа внутри DinD невозможна (overlay поверх overlay), поэтому образ
|
||||
# собирается и проверяется отдельно на хосте (make docker-build + docker compose).
|
||||
log "проверки состояния установки"
|
||||
|
||||
Reference in New Issue
Block a user