Activar timer: fix HOME= en la unidad, instrucciones de instalación
El manager de systemd --user de devops arranca con HOME=/DATA (el de /etc/passwd), no /DATA/AppData/home-devops -- ese override solo se aplica en una shell interactiva vía /etc/profile.d/zz-devops-home.sh, que el manager de systemd nunca carga. Sin Environment=HOME=... en lab-agent.service, claude -p habría buscado las credenciales en /DATA/.claude/ (no existe) y fallado en cada corrida. Detectado y corregido en vivo corriendo el servicio manualmente vía systemctl --user start antes de habilitar el timer. README documenta la instalación real: unidades en /DATA/.config/systemd/user/ (no ~/.config/... de una shell interactiva), loginctl enable-linger devops como único paso con sudo. Timer activo desde 2026-08-26 (lab-agent.timer, cada 15 min, 06:00-23:00 hora local), tras confirmación explícita y ver el costo mensual estimado.
This commit is contained in:
1 parent
cd163e6b7c
commit
a2717e922a
2 files changed
+41
-10
No files matched your search
+34
-10
@@ -7,11 +7,13 @@ acción correctiva de bajo riesgo. Ver la lista blanca completa, la
|
|||||||
justificación de gobernanza y la evidencia de la prueba end-to-end en
|
justificación de gobernanza y la evidencia de la prueba end-to-end en
|
||||||
`apps-registry` → `docs/arquitectura/agente-monitoreo.md`.
|
`apps-registry` → `docs/arquitectura/agente-monitoreo.md`.
|
||||||
|
|
||||||
**Estado (2026-08-26): script y prueba end-to-end validados en vivo**
|
**Estado (2026-08-26): timer de systemd ACTIVO** (`lab-agent.timer`,
|
||||||
contra el cluster real (deployment canario desechable, ciclo completo
|
usuario `devops`, cada 15 min entre 06:00–23:00 hora local). Validado
|
||||||
DRY_RUN → ejecución real → rate limit/bloqueo → limpieza). El timer de
|
en vivo contra el cluster real: DRY_RUN → ejecución real → rate
|
||||||
systemd (Paso 4) **todavía no está activo** — pendiente de tu
|
limit/bloqueo → recuperación con hilo en Telegram → limpieza, y
|
||||||
confirmación explícita.
|
corrida manual vía `systemctl --user start` con el entorno real del
|
||||||
|
timer antes de habilitarlo. Ver `docs/arquitectura/agente-monitoreo.md`
|
||||||
|
para la evidencia completa y el costo mensual estimado.
|
||||||
|
|
||||||
## Diseño de seguridad (por qué Claude no ejecuta comandos directamente)
|
## Diseño de seguridad (por qué Claude no ejecuta comandos directamente)
|
||||||
|
|
||||||
@@ -156,9 +158,31 @@ ejecuta de verdad (confirmado con `kubectl get events` y la anotación
|
|||||||
`restartedAt`), y una segunda corrida sobre el mismo recurso caído
|
`restartedAt`), y una segunda corrida sobre el mismo recurso caído
|
||||||
respeta el bloqueo (`notify_only`, sin reintento). Dos bugs reales se
|
respeta el bloqueo (`notify_only`, sin reintento). Dos bugs reales se
|
||||||
encontraron y corrigieron en esa prueba — ver el detalle en
|
encontraron y corrigieron en esa prueba — ver el detalle en
|
||||||
`docs/arquitectura/agente-monitoreo.md`. La notificación real se
|
`docs/arquitectura/agente-monitoreo.md`. Telegram (silencioso para
|
||||||
validó con ntfy.sh en esa prueba; el cambio a Telegram debe repetir
|
`info`, hilo de respuestas al recuperarse) también se validó en vivo
|
||||||
al menos la validación de entrega antes de habilitar el timer.
|
con el mismo canario.
|
||||||
|
|
||||||
**No actives el timer de systemd todavía** — requiere tu confirmación
|
## Instalar el timer de systemd
|
||||||
explícita por separado, después de ver el costo mensual estimado.
|
|
||||||
|
Unidades de **usuario** (`systemctl --user`), corren como `devops` —
|
||||||
|
necesario porque `claude -p` usa su login de suscripción. Ojo: el
|
||||||
|
manager de `systemd --user` de `devops` arranca con `HOME=/DATA` (el
|
||||||
|
de `/etc/passwd`), no `/DATA/AppData/home-devops` — por eso
|
||||||
|
`lab-agent.service` fija `Environment=HOME=...` explícitamente; sin
|
||||||
|
eso, `claude -p` no encuentra las credenciales. Los archivos van en
|
||||||
|
`/DATA/.config/systemd/user/`, no en el `~/.config/...` de una shell
|
||||||
|
interactiva (que resuelve a otra ruta por el mismo motivo).
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir -p /DATA/.config/systemd/user
|
||||||
|
cp systemd/lab-agent.service systemd/lab-agent.timer /DATA/.config/systemd/user/
|
||||||
|
sudo loginctl enable-linger devops # una vez — si no, systemctl --user ni conecta
|
||||||
|
export XDG_RUNTIME_DIR=/run/user/$(id -u devops)
|
||||||
|
systemctl --user daemon-reload
|
||||||
|
systemctl --user start lab-agent.service # probar una corrida manual primero
|
||||||
|
systemctl --user enable --now lab-agent.timer
|
||||||
|
systemctl --user list-timers lab-agent.timer
|
||||||
|
```
|
||||||
|
|
||||||
|
Activo desde 2026-08-26. Ver el costo mensual estimado y el detalle
|
||||||
|
completo en `docs/arquitectura/agente-monitoreo.md`.
|
||||||
@@ -6,6 +6,13 @@ Wants=network-online.target
|
|||||||
[Service]
|
[Service]
|
||||||
Type=oneshot
|
Type=oneshot
|
||||||
WorkingDirectory=/media/HDD-Storage/AppData/k3d-lab-v3/lab-cruzcloud/scripts/lab-agent
|
WorkingDirectory=/media/HDD-Storage/AppData/k3d-lab-v3/lab-cruzcloud/scripts/lab-agent
|
||||||
|
# El manager de systemd --user de devops arranca con HOME=/DATA (el de
|
||||||
|
# /etc/passwd), no /DATA/AppData/home-devops -- ese override solo se
|
||||||
|
# aplica al abrir una shell interactiva via /etc/profile.d/zz-devops-home.sh,
|
||||||
|
# que el manager de systemd nunca carga. Sin esto, claude -p buscaria
|
||||||
|
# ~/.claude/.credentials.json en /DATA/.claude/ (no existe) y fallaria
|
||||||
|
# la autenticacion. Confirmado en vivo 2026-08-26.
|
||||||
|
Environment=HOME=/DATA/AppData/home-devops
|
||||||
ExecStart=/media/HDD-Storage/AppData/k3d-lab-v3/lab-cruzcloud/scripts/lab-agent/lab-agent.sh --live
|
ExecStart=/media/HDD-Storage/AppData/k3d-lab-v3/lab-cruzcloud/scripts/lab-agent/lab-agent.sh --live
|
||||||
TimeoutStartSec=300
|
TimeoutStartSec=300
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user