Automatización de red Cisco NX-OS mediante Python
Automatización de red
- Proceso de uso de software para automatizar el aprovisionamiento, las pruebas, la implementación y la gestión de la red
- Para ayudar a maximizar la eficiencia y la funcionalidad de la red
- Las redes son complejas y voluminosas por naturaleza.
- Operaciones manuales: más retrasos
- La automatización hace que las redes sean más ágiles y receptivas a los cambios
- Beneficios:
- Eficiencia operativa mejorada
- Errores reducidos
Arquitectura de automatización de red
Programabilidad de red
- Es un conjunto de herramientas para implementar, administrar y solucionar problemas de un dispositivo de red.
- Perspectiva del ingeniero de redes: interacción con un dispositivo o grupo de dispositivos
- Perspectiva del desarrollador de software: abstracción de la red. Ver toda la red como un solo dispositivo y manipularla con software
Beneficios de la programabilidad de la red
- OPEX reducido
- Personalización
- Error humano reducido
- Flexibilidad operativa
- Mayor oportunidad de innovación
Interfaz de programación de aplicaciones (API)
- Las API son mecanismos utilizados para comunicarse con aplicaciones y otro software.
- Una API puede realizar diferentes funciones según su ubicación en el flujo
- Se utiliza para comunicarse con varios componentes de la red a través del software.
- Las API suelen ser API RESTful
API de transferencia de estado representacional (REST)
- Una API que usa REST a menudo se denomina API RESTful
- Las API RESTful utilizan métodos de Protocolo de transferencia de hipertexto (HTTP) para recopilar y manipular datos.
Función HTTP | Acción |
CONSEGUIR | Leer |
CORREO | Crear |
PARCHE | Actualizar / Modificar |
PONER | Actualizar / Reemplazar |
BORRAR | Borrar |
Códigos de estado HTTP
ESTADO HTTP CÓDIGO | RESULTADO | SENTIDO COMÚN |
200 | Ok | Usar GET o POST para intercambiar datos con una API |
201 | Creado | Creación de recursos mediante una llamada de API REST |
400 | Solicitud incorrecta | La solicitud falló debido a un problema del lado del cliente |
401 | No autorizado | Cliente no autenticado para acceder al sitio o Llamada API |
403 | Prohibido | Acceso no concedido basado en proporcionado cartas credenciales |
404 | Extraviado | Página en HTTP URL la ubicación no existe o esta escondido |
Netmiko encimaview
- Netmiko: biblioteca de Python utilizada ampliamente para interactuar con dispositivos de red
- Biblioteca de múltiples proveedores
- Cisco IOS/IOS-XE, NX-OS, cortafuegos, etc.
- Soporte extendido de la funcionalidad SSH de la biblioteca Paramiko
- Entrar en los modos de configuración
- Enviar comandos
- Recuperando salidas
- Cuidar las indicaciones de sí/no
NAPALM terminadoview
- NAPALM: capa de abstracción de programabilidad y automatización de red con soporte de múltiples proveedores
- Proporciona funciones que permiten:
- Operaciones de configuración (commit o rollback)
- Recuperar datos de estado de dispositivos de red
- Contiene métodos para establecer conexión a dispositivos de red.
- Puede trabajar en conjunto con herramientas de automatización – Ansible
- Tiene soporte para varios sistemas operativos de red:
- IOS, IOS-XR, NX-OS, JunOS, EOS, etc.
Operaciones NAPALM
- Reemplazar: permite a los usuarios reemplazar la configuración en ejecución existente con una configuración completamente nueva.
- Fusionar: permite a los usuarios fusionar los cambios de configuración de un file a la configuración en ejecución en el dispositivo.
- Comparar: compare la nueva configuración propuesta con la existente. Solo se aplica a la operación de reemplazo y no a la operación de fusión.
- Descartar: restablece la configuración de fusión file A un vacío file. Por lo tanto, no permite aplicar la nueva configuración en el dispositivo.
- Confirmar: confirma la configuración propuesta en el dispositivo de red. En otras palabras, se utiliza para implementar comotagconfiguración ed.
- Revertir: revertir (revertir) la configuración en ejecución a la configuración guardada antes de la última confirmación.
Plantillas con Jinja2
- Jinja es un lenguaje de plantillas moderno para Python: modelado a partir de las plantillas de Django.
- Permite al usuario interactuar fácilmente con el programa Python
- Use datos para generar rápidamente contenido dinámico
- Beneficios:
- Herencia de plantilla
- Compilación óptima justo a tiempo
- Fácil depuración
- Sintaxis configurable
- Usado comúnmente con web marcos como Flask
- Herramientas de gestión de configuración: Ansible, Nornir, etc.
Delimitadores
Nornir encimaview
- Marco de automatización basado en Python
- Administre el inventario de red y host y proporcione un marco común para escribir plugins para los dispositivos de red y hosts
- Requiere la versión mínima de Python 3.6.2
- Subprocesos múltiples: el valor predeterminado es 20 subprocesos de trabajo
- Inicializado usando config file – referencias pareja otro files
- Inventario de hosts file
- Grupo file
- Todos estos files están escritos en formato YAML
Nornir Advantages
- Pitón o Golang (Gornir)
- Reutilizar bibliotecas existentes: napalm, netmiko
- Filtrado rápido de hosts basado en cualquier atributo o combinación de atributos
- Muy rápido debido al uso de hilos.
- Se puede usar para construir herramientas de automatización altamente flexibles y extensibles usando Flask, Django, etc.
- Realiza automáticamente el almacenamiento en caché y cierra las conexiones abiertas
Recursos adicionales y referencias
Noticias de prensa de Cisco
Fundamentos de programación y automatización de redes [Más información] CCNP y CCIE Security Core SCOR 350-701 Official Cert Guide
https://www.ciscopress.com/store/ccnp-and-ccie-security-core-scor-350-701-official-cert-9780135971970
Guía de estudio de Cisco DevNet Professional DEVCOR 350-901
https://www.ciscopress.com/store/cisco-devnet-professional-devcor-350-901-study-guide-9780137500048
Otros recursos útiles:
Enterrarview con Vinit Jain, principal colaborador de eventos de Cisco
https://community.cisco.com/t5/networking-documents/interview-with-vinit-jain-cisco-s-top-events-contributor/ta-p/3156059
Publicaciones de Vinit
http://www.ciscopress.com/authors/bio/255ee209-1418-4938-9a42-d3bece2b46c6
Documentos / Recursos
![]() | Automatización de red Cisco NX-OS mediante Python [pdf] Manual del usuario Automatización de red NX-OS usando Python, Automatización de red usando Python, usando Python |