fase 3 (operacion): backups automaticos por instancia con descubrimiento dinamico, verificacion de integridad, retencion GFS 14/8/6, prueba de restauracion semanal, timers systemd y logrotate; panel CLI multi-instancia (admin_instancias.py) + doc de operacion y restauracion
This commit is contained in:
64
infra/ops/README.md
Normal file
64
infra/ops/README.md
Normal file
@@ -0,0 +1,64 @@
|
||||
# infra/ops — backups automáticos y panel multi-instancia
|
||||
|
||||
Operación comercial de la VPS: backups verificados por instancia y un panel/CLI
|
||||
para administrar todas las instancias SKEEN. Guía completa:
|
||||
[`../../docs/producto/operacion-instancia.md`](../../docs/producto/operacion-instancia.md).
|
||||
|
||||
Las instancias **no se hardcodean**: se descubren desde las unidades
|
||||
`odoo-*.service` (leyendo de cada una su `-c <conf>`). Una instancia nueva creada
|
||||
con `infra/provision/` entra sola.
|
||||
|
||||
## Comandos rápidos
|
||||
|
||||
```bash
|
||||
cd /root/skeen-proyecto/infra/ops
|
||||
|
||||
# ---- Backups ----
|
||||
./backup_instancias.sh # todas las instancias (dump + config + rotación)
|
||||
./backup_instancias.sh --instancia skeen # solo una
|
||||
./backup_instancias.sh --verificar # + prueba de restauración real
|
||||
./backup_instancias.sh --solo-db # sin respaldar configuración
|
||||
./backup_instancias.sh --dry-run # simular (incluye plan de rotación)
|
||||
|
||||
# ---- Panel ----
|
||||
./admin_instancias.py listar # tabla de instancias (por defecto)
|
||||
./admin_instancias.py estado skeen
|
||||
./admin_instancias.py version
|
||||
./admin_instancias.py uso
|
||||
./admin_instancias.py instalacion clinica2
|
||||
./admin_instancias.py logs clinica2 -n 30
|
||||
./admin_instancias.py credenciales skeen # solo la ruta
|
||||
./admin_instancias.py credenciales skeen --mostrar # incluye passwords
|
||||
./admin_instancias.py backup skeen --yes # acción que cambia estado
|
||||
./admin_instancias.py --json listar # salida JSON
|
||||
|
||||
# ---- Estado de los timers ----
|
||||
systemctl list-timers | grep skeen
|
||||
journalctl -u skeen-backup.service -n 50
|
||||
tail -f /var/log/skeen-backup.log
|
||||
```
|
||||
|
||||
## Retención (en `backup.env`)
|
||||
|
||||
Por defecto **14 diarios / 8 semanales / 6 mensuales** (esquema abuelo-padre-hijo
|
||||
con buckets exclusivos). El backup más reciente y el representante mensual nunca
|
||||
se borran. Cambiar `RETAIN_*` en `backup.env` para ajustar.
|
||||
|
||||
## Instalación de las unidades
|
||||
|
||||
```bash
|
||||
cp systemd/*.service systemd/*.timer /etc/systemd/system/
|
||||
cp logrotate/skeen-backup /etc/logrotate.d/skeen-backup
|
||||
systemctl daemon-reload
|
||||
systemctl enable --now skeen-backup.timer skeen-backup-verify.timer
|
||||
```
|
||||
|
||||
## Estructura
|
||||
|
||||
| Archivo | Para qué |
|
||||
|---|---|
|
||||
| `backup_instancias.sh` | Backup por instancia (dump + config, integridad, rotación, `--verificar`). |
|
||||
| `backup.env` | Destinos, credenciales de DB, retención, log. |
|
||||
| `admin_instancias.py` | Panel/CLI multi-instancia (stdlib, read-only por defecto). |
|
||||
| `systemd/` | `skeen-backup*` (diario + verificación semanal) y `backup-instancia@` (por instancia). |
|
||||
| `logrotate/skeen-backup` | Rotación de `/var/log/skeen-backup.log`. |
|
||||
Reference in New Issue
Block a user