fc644ecd6e
Reemplaza el scaffold del echobot por la plataforma completa de bots traida desde ~/DataProyects/Github/agents_and_robots tras la operacion Matrix-out: los bots ya no hablan por Matrix sino por el bus unibus (modelo todo-rooms + E2E via shell/transportunibus sobre github.com/enmanuel/unibus/pkg/client). - go.mod: replace de unibus -> ../unibus y de fn-registry -> ../../../.. (paths relativos reajustados a la nueva ubicacion dentro de fn_registry). - app.md: bump a 0.2.0, descripcion + arquitectura + comandos + gotchas reales. - modulo Go conservado como github.com/enmanuel/agents (sin reescribir imports). agents_and_robots queda archivado como museo de la era Matrix.
2.6 KiB
2.6 KiB
name, description
| name | description |
|---|---|
| deploy-service | Deploy de un servicio via SSH a un servidor remoto. Verifica que el servicio este corriendo, hace backup de la version anterior, actualiza el binario, reinicia el servicio y valida que responda correctamente. |
Deploy Service Skill
Esta skill guia el proceso completo de deploy de un servicio a produccion via SSH.
Prerequisitos
- Acceso SSH al servidor de destino
- El servicio debe estar configurado como systemd unit
- El binario compilado debe estar disponible localmente o via URL
Proceso de deploy
1. Verificar estado del servicio
Usa ssh_command para verificar el estado actual del servicio:
systemctl status <service-name>
Si el servicio no existe, pregunta al usuario si debe crearlo.
2. Crear backup de la version anterior
cp /path/to/service /path/to/service.backup.$(date +%Y%m%d-%H%M%S)
3. Detener el servicio
systemctl stop <service-name>
4. Actualizar el binario
Opciones:
- Si el binario esta local: usa
scpossh_commandcon heredoc - Si el binario esta en URL: usa
ssh_commandconwgetocurl
# Ejemplo con URL
wget -O /path/to/service <binary-url>
chmod +x /path/to/service
5. Reiniciar el servicio
systemctl start <service-name>
6. Verificar que el servicio responde
Espera 5 segundos y verifica:
systemctl is-active <service-name>
Si el servicio expone un endpoint HTTP, usa http_get para verificar que responde:
curl -f http://localhost:<port>/health
7. Rollback en caso de error
Si el servicio no arranca o no responde:
- Detener el servicio
- Restaurar el backup
- Reiniciar con la version anterior
- Notificar al usuario del error
Parametros requeridos
El usuario debe proporcionar:
host: servidor de destino (ej: "prod-server-01")service_name: nombre del systemd unit (ej: "myapp.service")service_path: ruta al binario en el servidor (ej: "/usr/local/bin/myapp")binary_source: "local" o URL del binario
Parametros opcionales:
health_endpoint: endpoint HTTP para verificar salud (ej: "http://localhost:8080/health")post_deploy_command: comando adicional a ejecutar despues del deploy
Seguridad
- Valida que el host este en la allowlist de SSH del agente
- Valida que el binario tenga checksum correcto (si se proporciona)
- Nunca ejecutes comandos arbitrarios sin validar
Ejemplo de uso
Usuario: "Haz deploy de myapp a prod-server-01"
Agente:
- skill_search("deploy service")
- skill_load("deploy-service")
- Preguntar parametros faltantes
- Ejecutar el proceso paso a paso
- Reportar resultado