Saltar a contenido

Configuración de agente remoto

Opciones de configuración para personalizar el comportamiento del agente.

Variables de entorno

Variable Descripción Requerido Default
NEXUS_TOKEN Token de registro -
AGENT_NAME Nombre del agente No hostname
LOG_LEVEL Nivel de logging No info
NEXUS_API_URL URL de la API No api.nexus.app
HEARTBEAT_INTERVAL Intervalo de heartbeat No 30s
MAX_CONCURRENT_JOBS Trabajos simultáneos No 5

Archivo de configuración

Alternativamente, usa un archivo config.yaml:

# /etc/nexus-agent/config.yaml

agent:
  name: "prod-agent-1"
  token: "${NEXUS_TOKEN}"  # Referencia a variable de entorno

connection:
  api_url: "https://api.nexus.app"
  heartbeat_interval: 30s
  reconnect_delay: 5s
  max_reconnect_attempts: 10

execution:
  max_concurrent_jobs: 5
  job_timeout: 30m
  work_directory: "/data/jobs"

logging:
  level: info
  format: json
  output: stdout
  file: /var/log/nexus-agent/agent.log

resources:
  # Limitar recursos del agente
  max_memory: "4Gi"
  max_cpu: "2"

security:
  # Redes permitidas para conexiones locales
  allowed_networks:
    - "10.0.0.0/8"
    - "172.16.0.0/12"
    - "192.168.0.0/16"

  # Comandos bloqueados
  blocked_commands:
    - "rm -rf /"
    - "shutdown"
    - "reboot"

Configuración en Nexus

Además de la configuración local, configura opciones desde Nexus:

┌─────────────────────────────────────────────────────────────────┐
│ Configuración - prod-agent-1                                    │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│ General                                                         │
│ ─────────────────────────────────────────────────────────────── │
│                                                                 │
│ Nombre                                                          │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ prod-agent-1                                                │ │
│ └─────────────────────────────────────────────────────────────┘ │
│                                                                 │
│ Descripción                                                     │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ Agente de producción - Servidor principal                   │ │
│ └─────────────────────────────────────────────────────────────┘ │
│                                                                 │
│ Etiquetas                                                       │
│ [producción] [principal] [europa] [+]                           │
│                                                                 │
│ Capacidades                                                     │
│ ─────────────────────────────────────────────────────────────── │
│                                                                 │
│ ☑️ Ejecutar comandos shell                                      │
│ ☑️ Acceso a base de datos                                       │
│ ☑️ Acceso a sistema de archivos                                 │
│ ☐ Acceso a Docker                                               │
│ ☑️ Acceso a APIs internas                                       │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Asignar agente a tareas

Para que una tarea use un agente remoto específico:

  1. Edita la tarea
  2. En Ejecución, selecciona Agente remoto
  3. Elige el agente
┌─────────────────────────────────────────────────────────────────┐
│ Configuración de ejecución                                      │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│ Ejecutar en:                                                    │
│ ○ Cloud (por defecto)                                           │
│ ● Agente remoto                                                 │
│                                                                 │
│ Seleccionar agente:                                             │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ prod-agent-1 (online)                                  ▼    │ │
│ └─────────────────────────────────────────────────────────────┘ │
│                                                                 │
│ ☐ Fallback a cloud si el agente no está disponible             │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Selección automática por etiquetas

Configura reglas para selección automática:

# En la tarea
execution:
  target: remote
  selector:
    labels:
      - producción
      - europa
    strategy: round-robin  # o: random, least-loaded

El sistema elegirá automáticamente un agente que cumpla los criterios.

Capacidades personalizadas

Define capacidades específicas de tu agente:

# En config.yaml del agente
capabilities:
  databases:
    - type: postgresql
      host: db.internal
      port: 5432
    - type: mysql
      host: mysql.internal
      port: 3306

  apis:
    - name: internal-api
      base_url: https://api.internal
    - name: legacy-system
      base_url: http://legacy.internal:8080

  filesystems:
    - path: /data/shared
      access: read-write
    - path: /data/reports
      access: read-only

Estas capacidades aparecen en Nexus y los agentes IA pueden usarlas.

Monitoreo

Métricas

El agente expone métricas en /metrics:

# Prometheus format
nexus_agent_jobs_total{status="success"} 1234
nexus_agent_jobs_total{status="failed"} 12
nexus_agent_job_duration_seconds{quantile="0.5"} 15.2
nexus_agent_connection_status 1

Logs

Configura destino de logs:

logging:
  level: info
  output:
    - stdout
    - file:/var/log/nexus-agent/agent.log
    - syslog:localhost:514

Siguiente: Seguridad - Buenas prácticas de seguridad.