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
|
||||
`apps-registry` → `docs/arquitectura/agente-monitoreo.md`.
|
||||
|
||||
**Estado (2026-08-26): script y prueba end-to-end validados en vivo**
|
||||
contra el cluster real (deployment canario desechable, ciclo completo
|
||||
DRY_RUN → ejecución real → rate limit/bloqueo → limpieza). El timer de
|
||||
systemd (Paso 4) **todavía no está activo** — pendiente de tu
|
||||
confirmación explícita.
|
||||
**Estado (2026-08-26): timer de systemd ACTIVO** (`lab-agent.timer`,
|
||||
usuario `devops`, cada 15 min entre 06:00–23:00 hora local). Validado
|
||||
en vivo contra el cluster real: DRY_RUN → ejecución real → rate
|
||||
limit/bloqueo → recuperación con hilo en Telegram → limpieza, y
|
||||
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)
|
||||
|
||||
@@ -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
|
||||
respeta el bloqueo (`notify_only`, sin reintento). Dos bugs reales se
|
||||
encontraron y corrigieron en esa prueba — ver el detalle en
|
||||
`docs/arquitectura/agente-monitoreo.md`. La notificación real se
|
||||
validó con ntfy.sh en esa prueba; el cambio a Telegram debe repetir
|
||||
al menos la validación de entrega antes de habilitar el timer.
|
||||
`docs/arquitectura/agente-monitoreo.md`. Telegram (silencioso para
|
||||
`info`, hilo de respuestas al recuperarse) también se validó en vivo
|
||||
con el mismo canario.
|
||||
|
||||
**No actives el timer de systemd todavía** — requiere tu confirmación
|
||||
explícita por separado, después de ver el costo mensual estimado.
|
||||
## Instalar el timer de systemd
|
||||
|
||||
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]
|
||||
Type=oneshot
|
||||
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
|
||||
TimeoutStartSec=300
|
||||
|
||||
|
||||
Reference in new issue
Block a user