Introducción
Los equipos de red suelen preguntarse si los agentes de IA son una amenaza para sus habilidades técnicas actuales o si, por el contrario, representan una oportunidad para optimizar flujos de trabajo manuales. La realidad es que los agentes de IA no eliminan la necesidad de entender Python, YAML o herramientas de infraestructura, pero sí permiten delegar tareas repetitivas y riesgosas.
En esta guía te mostramos cómo integrar agentes de IA en tu estrategia de automatización de red usando Python y la plataforma FlowAI de Itential, sin caer en promesas vacías de «automatización mágica». Vas a aprender a:
- Identificar qué tareas de red pueden externalizarse a un agente de IA
- Implementar un agente con Python y FlowAI que interactúe con equipos de red reales
- Medir el impacto en tiempo de ejecución (runtime) vs. tiempo de desarrollo (build time)
- Escalar estos agentes en entornos de producción con controles de seguridad básicos
Qué es y para qué sirve
Un agente de IA en automatización de red es un componente autónomo que recibe un objetivo (ej.: «diagnosticar caída de enlace en el router R1») y ejecuta pasos predefinidos para cumplirlo, usando herramientas de red (CLI, APIs, SDKs) y lógica basada en modelos de lenguaje. No es un reemplazo de herramientas como Ansible, Terraform o Python puro, sino un multiplicador de productividad cuando:
| Caso de uso | Ejemplo concreto | Herramienta que complementa |
|---|---|---|
| Diagnóstico de red | «¿Por qué falla el túnel VPN entre NY y SJ?» | Script existente + agente que filtra logs y sugiere comandos |
| Generación de configs | «Crear configuración de VLAN para 50 switches» | Plantillas Jinja2 + agente que valida sintaxis |
| Documentación dinámica | «Explicar por qué se aplicó la ACL 100» | Repositorio de Git + agente que genera markdown |
- Recibir una solicitud en lenguaje natural
- Descomponerla en sub-tareas técnicas
- Ejecutar comandos en equipos de red (Cisco IOS, Arista EOS, Juniper JunOS)
- Generar un informe o alerta con los resultados
Prerequisitos
Antes de empezar, asegurate de tener:
| Componente | Versión mínima | Notas |
|---|---|---|
| **Python** | 3.9+ | Usaremos BLOCK18 , BLOCK19 y BLOCK20 |
| **FlowAI** | 2.12+ | Requiere licencia (versión *Community* disponible para pruebas) |
| **Equipos de red** | Cualquier dispositivo con SSH | Recomendado: Cisco IOS-XE 17.x, Arista EOS 4.28+ |
| **Permisos** | Clave SSH con nivel 15 (enable) | El agente necesita ejecutar comandos de diagnóstico |
| **Entorno** | Linux (Ubuntu 22.04 LTS) | Opcional: Docker para aislamiento |
- Credenciales de FlowAI (API key)
- IP/host de al menos un equipo de red accesible por SSH
- Token de GitHub/GitLab si querés integrar con repositorios (opcional)
> ⚠️ Error común: No validar los permisos del usuario SSH en los equipos. Si el agente intenta ejecutar show ip interface brief pero el usuario solo tiene permisos de lectura, fallará con Permission denied. Verificá con:
>
> ssh usuario@router1 "enable; show privilege"
> > El resultado debe ser 15.
Guía paso a paso
Paso 1: Instalar dependencias y configurar entorno
Crea un virtualenv y instala las librerías necesarias:
python -m venv ~/venv/flowai-agent
source ~/venv/flowai-agent/bin/activate
pip install --upgrade pip setuptools
pip install requests pydantic netmiko python-dotenvResultado esperado:(flowai-agent) user@host:~$ pip list | grep netmiko
netmiko 4.3.0
(flowai-agent) user@host:~$ which python
/home/user/venv/flowai-agent/bin/pythonPaso 2: Autenticar con FlowAI y obtener el endpoint de workflows
- Generá una API key en el portal de FlowAI (Admin → API Keys).
- Crea un archivo
.envcon:
FLOWAI_API_KEY="tu_api_key_aqui"
FLOWAI_BASE_URL="https://api.flowai.itential.com/v2"- Verificá la autenticación con un script mínimo:
# auth_flowai.py
import os
import requests
from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv("FLOWAI_API_KEY")
base_url = os.getenv("FLOWAI_BASE_URL")
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
response = requests.get(f"{base_url}/workflows", headers=headers)
print(response.status_code, response.json())Ejecución:python auth_flowai.pyResultado esperado:200 {
"data": {
"workflows": [
{"id": "wf-123", "name": "diagnostico_red", "description": "Workflow para diagnóstico de red"},
{"id": "wf-456", "name": "generacion_config", "description": "Genera configs de VLANs"}
]
}
}> 🔍 Nota: Si recibís 401 Unauthorized, verifica que la API key no haya expirado o que el endpoint sea correcto.
Paso 3: Crear un agente simple en Python para interactuar con equipos de red
Vamos a crear un agente que:
- Reciba un hostname y un comando
- Ejecute el comando en el equipo
- Devuelva el output
Crea agent_network.py:
from netmiko import ConnectHandler
from pydantic import BaseModel, Field
class NetworkCommandRequest(BaseModel):
hostname: str = Field(..., description="Hostname o IP del equipo")
command: str = Field(..., description="Comando a ejecutar")
username: str = "admin"
password: str = "tu_password_ssh"
device_type: str = "cisco_ios"
def execute_network_command(request: NetworkCommandRequest):
device = {
"device_type": request.device_type,
"host": request.hostname,
"username": request.username,
"password": request.password,
}
try:
with ConnectHandler(**device) as ssh:
ssh.enable()
output = ssh.send_command(request.command)
return {"status": "success", "output": output}
except Exception as e:
return {"status": "error", "message": str(e)}
# Ejemplo de uso
if __name__ == "__main__":
req = NetworkCommandRequest(
hostname="192.168.1.1",
command="show ip interface brief"
)
result = execute_network_command(req)
print(result)Ejecución:python agent_network.pyResultado esperado:{
"status": "success",
"output": "Interface IP-Address OK? Method Status Protocol\nVlan1 192.168.1.1 YES unset up up \n"
}> ⚠️ Error común: Si el equipo usa SSH con claves en lugar de contraseña, modifica agent_network.py para usar ConnectHandler con ssh_config_file:
>
> device = {
> "device_type": "cisco_ios",
> "host": "192.168.1.1",
> "username": "admin",
> "use_keys": True,
> "key_file": "~/.ssh/id_rsa_itential"
> }
> Paso 4: Integrar el agente con FlowAI
- En el portal de FlowAI, ve a Workflows → Create Workflow.
- Selecciona Start from scratch y ponle nombre:
diagnostico_red_via_ai. - Añade un Trigger de tipo HTTP (para recibir solicitudes desde tu script).
- Añade un Step de tipo Python y pega el contenido de
agent_network.py(sin el bloqueif __name__). - Configura las Variables de entrada del step con:
hostname (tipo: string)– command (tipo: string)
- Guarda el workflow y obtené su
workflow_id(ej.:wf-12345).
- Modifica
auth_flowai.pypara invocar el workflow:
# invoke_flowai_workflow.py
import os
import requests
from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv("FLOWAI_API_KEY")
base_url = os.getenv("FLOWAI_BASE_URL")
workflow_id = "wf-12345" # Reemplazá con tu ID
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
payload = {
"inputs": {
"hostname": "192.168.1.1",
"command": "show ip route"
}
}
response = requests.post(
f"{base_url}/workflows/{workflow_id}/execute",
headers=headers,
json=payload
)
print(response.status_code, response.json())Ejecución:python invoke_flowai_workflow.pyResultado esperado:200 {
"status": "completed",
"output": "C 192.168.1.0/24 is directly connected, Vlan1\nS* 0.0.0.0/0 [1/0] via 192.168.1.254"
}> ✅ Verificación: Si el workflow falla, revisá los logs en FlowAI (Admin → Workflows → Logs) para ver si el error es en la ejecución de Python o en la conexión al equipo.
Paso 5: Escalar el agente con control de errores y logging
Para producción, añade manejo de errores y logging en agent_network.py:
import logging
from datetime import datetime
logging.basicConfig(
filename=f"agent_network_{datetime.now().strftime('%Y%m%d')}.log",
level=logging.INFO,
format="%(asctime)s - %(levelname)s - %(message)s"
)
try:
with ConnectHandler(**device) as ssh:
ssh.enable()
output = ssh.send_command(request.command)
logging.info(f"Comando ejecutado: {request.command} en {request.hostname}")
return {"status": "success", "output": output}
except Exception as e:
logging.error(f"Error en {request.hostname}: {str(e)}", exc_info=True)
return {"status": "error", "message": str(e)}Resultado esperado:- Se crea un archivo
agent_network_YYYYMMDD.logcon registros como:
> 2024-03-15 14:22:10,123 - INFO - Comando ejecutado: show ip route en 192.168.1.1
> Paso 6: Medir impacto (build time vs. runtime)
| Métrica | Antes (manual) | Después (agente) |
|---|---|---|
| Tiempo para diagnosticar caída de enlace | 15-30 min | 2-5 min |
| Tiempo para generar 10 configs de VLAN | 4 horas | 15 min (agente + revisión humana) |
| Riesgo de error humano | Alto (copiar/pegar) | Bajo (validación automática) |
- Cronometra cuánto tarda un operador en ejecutar
show ip interface briefmanualmente. - Compara con el tiempo de ejecución del agente:
time python invoke_flowai_workflow.py- Documenta los resultados en una tabla como la anterior para justificar la adopción.
Paso 7: Seguridad básica para agentes en producción
- Restringí el acceso SSH:
show commands).– Configura en el equipo:
username ai-agent privilege 1 view "show"
- Cifrá las credenciales:
python-keyring o HashiCorp Vault en lugar de .env para producción.- Limita los workflows:
– Ve a Admin → Workflows → Security → Allowed Origins y añade http://tu-servidor:5000.
Consideraciones y buenas prácticas
Limitaciones conocidas
| Limitación | Impacto | Mitigación |
|---|---|---|
| Modelos de lenguaje pueden inventar comandos | Riesgo de ejecución no válida | Validar output con BLOCK45 ’s BLOCK46 o usar BLOCK47 en el prompt |
| Latencia en equipos remotos | Aumenta runtime | Cachear resultados por 5-10 min o usar equipos locales para pruebas |
| Coste de licencias | FlowAI Community es gratuita, Enterprise tiene costo | Evaluar ROI con métricas de tickets resueltos |
| Herramienta | Ventaja | Desventaja |
|---|---|---|
| **Nornir** (Python) | Código abierto, integración nativa con Python | Requiere más configuración manual |
| **RAG (Retrieval-Augmented Generation) con LangChain** | Personalizable para tu infraestructura | Complejidad inicial alta |
| **Ansible con módulo BLOCK48 experimental** | Integración con playbooks existentes | Documentación limitada |
- Documentá cada workflow en FlowAI con:
– Lista de comandos ejecutados
– Requisitos previos (ej.: «Necesita usuario con permisos de show«)
- Hacé revisiones de seguridad antes de ejecutar workflows en producción:
configure terminal o reload– Usá herramientas como bandit para escanear el código Python del agente
- Entrená a tu equipo en:
– Cómo responder ante un agente que «alucina» (genera comandos inválidos)
Conclusión
Los agentes de IA no son una revolución, sino una evolución de tus herramientas de automatización de red existentes. En esta guía:
- Aprendiste a integrar un agente de IA con Python y FlowAI para ejecutar comandos en equipos de red.
- Validaste que el agente reduce el tiempo de respuesta sin sacrificar seguridad.
- Escalaste el agente con logging, manejo de errores y restricciones de permisos.
- Identificá 3 flujos manuales en tu entorno que puedan externalizarse a un agente.
- Implementá un prototipo con FlowAI Community y medí el tiempo ahorrado.
- Documentá el workflow y compartilo con tu equipo para feedback.
Recuerda: los agentes de IA son una herramienta más en tu caja de herramientas, no un reemplazo de tus habilidades técnicas. Su valor real está en automatizar lo repetitivo para que vos te enfoques en lo estratégico.
FIN
