Files
unibots/skills/devops/deploy-service/SKILL.md
T
agent fc644ecd6e feat: import agents_and_robots platform as unibots (Matrix-out, unibus transport)
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.
2026-06-07 11:50:13 +02:00

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 scp o ssh_command con heredoc
  • Si el binario esta en URL: usa ssh_command con wget o curl
# 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:

  1. Detener el servicio
  2. Restaurar el backup
  3. Reiniciar con la version anterior
  4. 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:

  1. skill_search("deploy service")
  2. skill_load("deploy-service")
  3. Preguntar parametros faltantes
  4. Ejecutar el proceso paso a paso
  5. Reportar resultado