Cisco IOx - Guestshell
Un nuevo post sobre el uso de programabilidad, pero desde la perspectiva de un equipo Cisco Router. En uno de los post anteriores (info Aquí) mencionábamos que era posible interactuar con los equipos IOS con programación con la opción Guesthell, activado bajo un contenedor IOx. Veamos qué es; como podemos interactuar con ella; un ejemplo de interacción con Discord y su código para que puedas probarlo.
1. ¿Qué es IOx?
IOx es la infraestructura de alojamiento de aplicaciones de Cisco para dispositivos Cisco IOS XE. IOx permite el alojamiento de aplicaciones y servicios desarrollados por Cisco, socios y desarrolladores externos en dispositivos de borde de red, sin problemas en plataformas de hardware diversadas.
IOx tiene como requisito cumplir con la opción "edge computing" o procesamiento al borde. Cisco lo llama "fog computing" y se refiere a extender la computación en la nube al borde una red. La idea es alojar las aplicaciones en el borde de la red en diferentes plataformas de hardware. Es uno de los pilares del modelo Cisco IoT.
Al final del post habrá un pequeño ejemplo, donde se activará IOx para poder alojar un contenedor Guestshell.
Sus aplicaciones son muchas, las redes deben adaptarse a las necesidades del entorno, por lo que un router, no es solo de comunicar de un lado a otro, pueden hacer mucho más.
Nota: Este tema es mucho más amplio de lo mencionado aquí. Quizás sea tomado a profundidad en otro post.
2. ¿Qué es Guestshell?
Guesthell es un entorno virtualizado basado en Linux, diseñado para ejecutar aplicaciones Linux personalizadas, que incluyen Python para el control y la gestión automatizados de dispositivos Cisco.
3. Guestshell - Funcionalidades
Guest Shell es soportado desde la versión IOS-XE 16.5 en los equipos físicos Cisco y desde la versión 16.7 en los equipos virtualizados CSR1000V. Entre sus ventajas tenemos:
- Un enfoque modular de los modelos de datos YANG para las funciones de Cisco IOS-XE (ISR, CSR, ASR)
- Soporte para Zero Touch Provisioning (ZTP) para la configuración de la infraestructura del día 0 (ISR)
- Nuevas capacidades de alojamiento de aplicaciones proporcionadas por Guestshell de Linux (ISR)
- Capacidad para desarrollar y ejecutar scripts de Python On-Box (ISR)
3. Python y GuestShell
La capacidad de ejecutar código Python directamente en un dispositivo final es parte de las capacidades de alojamiento por GuestShell.
Desde Guest Shell, las aplicaciones tienen acceso a las redes de la plataforma de host, el bootflash y la CLI de IOS. Guest Shell está aislado del software host subyacente (IOS) para evitar la interferencia de las funciones de red.
4. Demo
Veamos un ejemplo con IOx - Guestshell creando un programa que estará monitoreando la configuración de un Cisco IOS-XE y en caso de detectar algún cambio, enviar los cambios agregados y eliminados a través de un webhook a una cuenta de Discord. Por facilidad se creó el webhook de Discord previamente, pero si quieres saber qué es un webhook, puedes leerlo en nuestro post Aquí o en mi página Github).
Nota:
Discord es una aplicación freeware de VoIP diseñada para comunidades de videojuegos principalmente, pero por su gran capacidad de interacción por chat, audio y video entre personas, es ampliamente utilizado de la misma manera que Slack, MS Team y Cisco Webex Teams
Application: Python Script "sl_config_diff_to_discord.py" with EEM (Embedded Event Manager)
Linux: Guestshell
Cisco IOS: IOX-XE 17.03.01a
El código y los pasos a configurar te los comparto en mi siguiente enlace:
- Pero, aquí una referencia de configuración en IOS:
Nota: Se activó Linux shell para poder mostrar configuración en 1 línea. En otro post se puede hablar sobre ello, pero si tienes curiosidad, los comandos están al final en referencia.
- IOS-XE y Guestshell comparten directorios para que puedan interactuar. En este directorio colocamos el código Python.
- Listo. Cada vez que detecte un cambio, nos notificará a nuestra cuenta de Discord:
5. Conclusión
Como verán las posibilidades son muchas y es chévere tener tus cambios de red en tu plataforma de comunicación favorita.
Bueno eso sería todo, espero que les haya gustado este post que cree con la red Discord. Se tomó como base el código de Cisco Devnet:
¿Dudas, opinión o sugerencias? Déjame tus comentarios.
Si te interesa alguno de nuestros servicios o leer todos nuestros posts, puedes localizarlos por esta red social o en nuestro portal SYNCORP. Gracias por la lectura.
Referencias:
Comandos utilizados:
############################ # Activando Linux Shell #--------------------------- configure terminal shell processing full end ############################ # Creando variable SPACES #--------------------------- SPACES="----------------- " echo $SPACES ############################ # listando comandos relevantes en 1 sola línea #--------------------------- echo $SPACES; show run | sec interface GigabitEthernet1;echo $SPACES; show run | sec iox;echo $SPACES; show run | sec VirtualPortGroup;echo $SPACES; show run | sec guestshell;echo $SPACES; show run | sec event; echo $SPACES ;