jueves, 29 de julio de 2021

 Automatización de la red - Ansible
Ansible
Publicado el 28 de Julio del 2021

La automatización con Ansible es una opción bastante interesante y asequible para quienes estamos integrándonos en esta nueva tendencia de las redes, porque sin saber mucho de programación podemos configurar remotamente a un dispositivo, en particular a los routers de Cisco.

En la presentación anterior de Automatización de la red, desarrollé la práctica con Centos6 y tuve algunos inconvenientes, por ello, buscando la solución a los problemas que tuve, les presento una nueva alternativa práctica con Ansible y los routers de Cisco.

Bajé el OVA, para VmWare, de Centos8 versión 8.4.2 y lo actualicé satisfactoriamente:
        user: centos      password: centos


Comandos para actualización:

    yum update -y
    yum install epel-release -y             ambos comandos bajan información y se ejecutan simultáneamente

Instalamos Ansible, ( se debe pasar a modo root, para ello se debe ingresar a root con: sudo su - )
    yum install ansible -y

Nos pasamos al directorio de Ansible:
    cd /etc/ansible

Listamos los archivos de este directorio:
    ls                    (debe aparecer:   ansible.cfg   hosts    roles )

Editar el archivo ansible.cfg      (vi ansible.cfg       :w para guardar    :q! para salir)
    [paramiko_connection]
    host_key_checking = False

    [persistent_connection]
    connect_timeout = 60
    command_timeout = 60














Editar el archivo hosts 
Le debemos agregar al final del contenido del archivo:
    [routers]
    sandbox-iosxe-recomm-1.cisco.com
    sandbox-iosxe-latest-1.cisco.com

    [routers:vars]
    ansible_user=developer
    ansible_password=C1sco12345
    ansible_connection=network_cli
    ansible_network_os=ios
    ansible_port=22

Para la edición de los archivos, se hace muy fácil al usar WinSCP, con el cual podemos intercambiar los archivos entre la máquina real y la virtual, y podemos aprovechar para editar los archivos 

Puedes bajar el WinSCP portable desde aquí o lo buscas en Internet.


A la izquierda están los archivos en la máquina real y a la derecha vemos la carpeta de Ansible con sus archivos.

Si queremos editar el archivo host, simplemente con un doble clic ingresas a el y lo puedes editar como se ve a continuación.


Como vemos se ha podido agregar o pegar la configuración adicional indicado anteriormente.

Para hacer esto posible, es necesario ingresar al WinSCP con un usuario con características de root.

Para esto debes crear un usuario y password tipo root con los siguientes comandos:
    
sudo useradd -u 0 -o -g 0 admin
    sudo passwd admin
    12345
    12345
usuario     admin
password     12345


Las pruebas de administración remota de los routers, lo haremos con dos routers de devnet a los cuales, podemos acceder en cualquier momento:

- https://devnetsandbox.cisco.com/RM/Diagram/Index/27d9747a-db48-4565-8d44-df318fce37ad?diagramType=Topology
- https://devnetsandbox.cisco.com/RM/Diagram/Index/7b4d4209-a17c-4bc3-9b38-f15184e53a94?diagramType=Topology

Cuando intente ingresar le va a pedir que se autentique, si perteneces a Netacad, lo puedes hacer con tu correo y tu clave de Netacad. Allí podrás ver información de acceso de cada uno de ellos, como ejemplo veremos con el segundo enlace.


Podemos usar el Putty, desde Windows, para acceder a este router y lo hacemos especificando la dirección del Host, su numero de puerto 22 y  OPEN.
El usuario es developer y el password es C1sco12345 como lo indica el gráfico anterior.


Realizar pruebas para verificar que está operativo Ansible y su acceso a los router.
    
    ansible routers -m ping       (vemos a continuación la respuesta de los dos routers)


Verifique en el archivo hosts, la creación de un grupo  de routers llamado "routers" y que tiene como integrantes dos routers sandbox-iosxe-..

Podemos hacer la prueba a uno solo de ellos así:
    ansible sandbox-iosxe-recomm-1.cisco.com -m ping







La siguiente prueba con el comando: 
    ansible routers -m shell -a "echo 'hello world'"





    ansible sandbox-iosxe-recomm-1.cisco.com -m ios_command -a "commands=´show ip inter br´"












Con el comando anterior podemos conocer el estado de las interfaces.

Con estas pruebas realizadas, podemos suponer que los equipos ya están preparados para interactuar, para ello vamos a trabajar con el playbook llamado banner.yml

El playbook banner.yml usa el módulo ios_banner y este es su contenido:












Una vez cargado este archivo en la máquina virtual, mediante el WinSCP ejecutamos el siguiente comando:
    ansible-playbook banner.yml












El playbook user.yml usa el módulo ios_config y este es su contenido:








Aplicamos el comando ansible-playbook user.yml y obtenemos la siguiente respuesta.









El playbook show-run.yml usa el módulo ios_command y este es su contenido:











Antes de ejecutarlos debe crear la carpeta show dentro de la carpeta de Ansible, se lo puede hacer fácilmente con WinSCP.

Ejecutamos el comando ansible-playbook show-runn.yml y obtenemos la siguiente respuesta.










Podemos ver que se ha creado dos archivos de configuración









Si miramos el contenido de uno de los archivos, encontramos al usuario que creamos con el playbook user.yml







También encontramos los banner que se configuró remotamente usando Ansible, con el playbook banner.yml







miércoles, 28 de julio de 2021

 Protocolo de enrutamiento dinámico - RIP

Cisco 
Publicado el 28 de Julio del 2021

Los protocolos de enrutamiento se usan para facilitar el intercambio de información de enrutamiento entre los routers. Es un conjunto de procesos, algoritmos y mensajes que se usan para intercambiar información de rutas de las diferentes subredes y completar la tabla de enrutamiento con la elección de los mejores caminos que realiza el protocolo. 

El propósito de los protocolos de enrutamiento dinámico incluye lo siguiente:
- Detección de redes remotas
- Mantener la información de routing actualizada
- Escoger el mejor camino hacia las redes de destino
- Poder encontrar un mejor camino nuevo

Desventajas: Esta clase de routing requiere conocer comandos adicionales. Es menos seguro que el enrutamiento estático, ya que normalmente, el protocolo envía información de enrutamiento, por las interfaces del router, a otros routers de la red. Las rutas tomadas pueden variar entre paquetes del mismo archivo. Consume recursos del router, debido a que el algoritmo utiliza CPU, RAM y ancho de banda para su funcionamiento.

Si bien el protocolo RIP se utiliza con muy poca frecuencia en las redes modernas, es útil como base para comprender el enrutamiento básico en la red.

Para habilitar RIP, utilice el comando:
    router rip

y lo hace  con su versión predeterminada: RIPv1.

Para habilitar RIP para una red, utilice:
    network dirección de red 

(comando del modo de configuración del router) Introduzca la dirección de red con clase para cada red conectada directamente.


Este comando realiza lo siguiente:




- Habilitar RIP en las interfaces que pertenecen a una red específica, hace que las interfaces asociadas envíen y reciban actualizaciones RIP.
 Habilitar RIP en las interfaces, permite que se comparta la dirección de red de dichas  interfaces, las actualizaciones de enrutamiento RIP se envían a los otros routers cada 30 segundos.

El comando:
 show ip protocols 

muestra los parámetros del protocolo de enrutamiento IPv4 configurados actualmente en el router.













Utilice el comando del modo de configuración del router:
    version 2 

para habilitar RIPv2

Para modificar el comportamiento predeterminado de RIPv2 de sumarización automática, utilice el comando del modo de configuración del router:
    no auto-summary

Utilice el comando de configuración del router:
    passive-interface interface

para evitar que las actualizaciones de enrutamiento se transmitan a través de una interfaz del router.  Esto evita el desperdicio de ancho de banda, desperdicio de recursos y mejora la seguridad de la red.






Para propagar una ruta predeterminada en RIP, el router perimetral debe estar configurado con lo siguiente:
- Una ruta estática predeterminada, mediante el comando
    ip route 0.0.0.0  0.0.0.0 inter / ip salto

- El comando de configuración del router:
    default-information originate

Esto le ordena al router que produzca información predeterminada mediante la propagación de la ruta estática predeterminada en actualizaciones RIP.




Veamos una explicación mediante los siguientes videos, el primero va a explicar la configuración de RIP mediante una pequeña red. Para que puedas practicar la misma actividad te adjunto el PT, puedes bajar el archivo desde aquí.



El siguiente video es la segunda parte, seguimos explicando y configurando una pequeña red con RIPv2



La tercera parte del video es la configuración de una pequeña red usando RIP para IPv6.




Enrutamiento estático
Cisco 
Publicado el 28 de Julio del 2021

Un router puede descubrir redes remotas de dos maneras:

- Manualmente: las redes remotas se introducen de forma manual en la tabla de rutas por medio de rutas estáticas.
- Dinámicamente: las rutas remotas se descubren de forma automática mediante un protocolo de enrutamiento dinámico.

El enrutamiento estático tiene tres usos principales:
- Facilita el mantenimiento de la tabla de enrutamiento en redes pequeñas en las cuales no está previsto que crezcan significativamente.
- Proporciona enrutamiento hacia las redes de rutas internas y desde estas. Una red de rutas internas es aquella a la cual se accede a través un de una única ruta y cuyo router tiene solo un vecino.
- Utiliza una única ruta predeterminada para representar una ruta hacia cualquier red que no tenga una coincidencia más específica con otra ruta en la tabla de enrutamiento. Las rutas predeterminadas se utilizan para enviar tráfico a cualquier destino que esté más allá del próximo router ascendente.


Las rutas estáticas se configuran con el comando ip route de configuración global. La sintaxis básica del comando se muestra a continuación.


Se requieren los siguientes parámetros para configurar el routing estático:
- Dirección de red : dirección de red de destino de la red remota que se agrega a la tabla de enrutamiento, también llamada “prefijo”.
- Máscara-subred : máscara de subred, o simplemente máscara, de la red remota que se agrega a la tabla de enrutamiento. La máscara de subred puede cambiar al sumarizar o resumir un grupo de direcciones de red.

Además, se debe utilizar uno de los siguientes parámetros o ambos:
- ip-address : es la dirección IP del router conectado directamente, que se va a utilizar para enviarle el paquete a la red de destino. Se la suele denominar “siguiente salto”.
- exit-intf : es la interfaz de salida que se utiliza para reenviar el paquete al siguiente router.
- distancia: es un número que corresponde a la distancia administrativa, la cual se utiliza para crear una ruta estática flotante al establecer una distancia administrativa mayor que la de una ruta generada en forma dinámica o de otra ruta estática.

El modo en que se especifica el destino genera uno de los siguientes tres tipos de rutas:

- Ruta del siguiente salto: solo se especifica la dirección IP del siguiente salto
- Ruta estática conectada directamente: solo se especifica la interfaz de salida del router
- Ruta estática completamente especificada : se especifican la dirección IP del siguiente salto y la interfaz de salida

A continuación veremos ejemplos de configuración de una red usando enrutamiento estático.



Aprovechamos para mostrar la importancia del PT versión 8, el cual permite simular situaciones de trabajo con equipos muy parecido a cuando lo hacemos con equipos físicos. La versión anterior también lo permite, pero esta última versión da una mejor sensación del problema que enfrentamos cuando usamos muchos cables y varios equipos.






martes, 20 de julio de 2021

 Wi-Fi 6

Cisco 
Publicado el 20 de Julio del 2021

Wi-Fi 6 es un nuevo estándar inalámbrico. También llamado 802.11ax, está preparado para hacer mejorar la conectividad de la red y mejorar la experiencia de los usuarios.

Wi-Fi 6 abre nuevas posibilidades para la tecnología inalámbrica. La velocidad, la capacidad y el control mejorados no solo respaldarán las aplicaciones existentes con mayor rendimiento y experiencias mejoradas, sino que también impulsarán nuevas innovaciones que cambiarán la forma en que las personas trabajan.

Wi-Fi 6 comenzó su aceleración en 2019, y aunque el estándar se ratificó en septiembre de ese año, Samsung lanzó un dispositivo Wi-Fi 6 en febrero. Cisco trabajó con Samsung detrás de escena para validar que Wi-Fi 6 en realidad ofrece conexiones más rápidas, más capacidad y mayor duración de la batería.

Para aprovechar todos los beneficios de Wi-Fi 6, necesitará una red compatible con Wi-Fi 6. Esto incluye tanto los puntos de acceso como los clientes de Wi-Fi 6. Si aún no lo ha hecho, el mercado pronto comenzará a ver una gran cantidad de dispositivos móviles que admiten Wi-Fi 6. Por lo tanto, es importante preparar su red para el nuevo estándar para que esté listo para obtener todos los beneficios que Wi-Fi


Es una conexión de red más consistente y confiable que ofrecerá velocidades hasta cuatro veces más rápidas que 802.11ac Wave 2 con cuatro veces la capacidad. Este estándar proporciona una experiencia perfecta para los clientes y permite aplicaciones de próxima generación como transmisión HD 4K / 8K, video de realidad aumentada (AR) y realidad virtual (VR), y más dispositivos y capacidad de IoT para entornos de alta densidad como conferencias universitarias. pasillos, centros comerciales, estadios e instalaciones de fabricación.

Características:
- Mayor capacidad: Conecte hasta cuatro veces más dispositivos que con los estándares anteriores a través de funciones como el acceso múltiple por división de frecuencia ortogonal (OFDMA) y la salida múltiple de entrada múltiple multiusuario (MU-MIMO). Wi-Fi 6 se comunica en paralelo con los dispositivos, mientras que los estándares existentes se comunican con un solo dispositivo a la vez. El aumento de la capacidad es esencial porque se espera que el volumen de tráfico de datos móviles crezca hasta cuatro veces solo en los próximos cuatro años.

- Mayor eficiencia energética. los dispositivos cliente pueden consumir dos tercios menos de energía. Esto significa que las baterías de productos como teléfonos inteligentes, computadoras portátiles, tabletas, etc., pueden durar más, lo que lo convierte en el estándar ideal.

- Latencia de datos reducida al optimizar la programación de paquetes, que es ideal para aplicaciones de voz, video y juegos.

- Seguridad mejorada. El acceso protegido Wi-Fi (WPA3) está certificado con Wi-Fi 6 y proporciona una propuesta de mayor valor que WPA2 para redes Wi-Fi empresariales. Ofrece seguridad mejorada para redes Wi-Fi abiertas con cifrado de tráfico no autenticado, protección sólida con contraseña contra ataques de diccionario de fuerza bruta y confiabilidad de datos superior para información confidencial con cifrado de 192 bits.

OFDMA es un tipo de multiplexación por división de frecuencia que usa subportadoras de manera más eficiente cuando se trata de transportar datos. Anteriormente, cuando se utilizaba la multiplexación por división de frecuencia ortogonal (OFDM), cada usuario tenía un intervalo de tiempo o un canal de ancho de banda completo. Los usuarios debían esperar en la fila antes de poder entregar sus paquetes. A medida que se unían más clientes, los paquetes tardaban más en entregarse, lo que provocaba retrasos y gente esperando para transportar datos. OFDMA proporciona una entrega de paquetes más regular y consistente, y los usuarios no tienen que esperar tanto.

Con OFDM, cada vez que un usuario solicita un paquete de datos, esencialmente envía un camión para satisfacer cada solicitud de ese usuario, lo que no es muy eficiente. OFDMA es diferente, ya que se utiliza un camión para entregar el paquete a usuarios individuales en una ronda. De esta forma es mucho más eficiente y lleva menos tiempo. La figura ilustra la diferencia entre OFDM y OFDMA.


OFDM admite múltiples usuarios (acceso múltiple) solo a través de TDMA, mientras que OFDMA es compatible con TDMA o FDMA o ambos al mismo tiempo.
OFDMA admite la transmisión simultánea de baja velocidad de datos de varios usuarios, pero OFDM solo puede admitir un usuario en un momento dado.

Todos los productos Cisco Wi-Fi 6 utilizan OFDMA. Como resultado, su red será más rápida y, lo más importante, sus usuarios tendrán una mejor experiencia.

Cisco ofrece una solución completa que permite a su fuerza laboral realizar su trabajo de forma segura desde cualquier lugar. Estamos en un momento en el que gran parte del mundo empresarial trabaja de forma remota y muchas de esas personas harán lo mismo incluso cuando sea seguro regresar a la oficina.

Cisco Remote Workforce Network extiende las políticas corporativas y la seguridad a las oficinas en el hogar para brindar una experiencia corporativa perfecta que satisfaga las diversas necesidades de los empleados remotos y los administradores de TI. Con los puntos de acceso inalámbricos de Cisco plug-and-play, los empleados remotos pueden conectarse de forma segura a una red Wi-Fi o cableada corporativa con políticas basadas en identidad de clase empresarial e incorporar sin problemas sus dispositivos personales y corporativos cableados e inalámbricos. Obtienen una experiencia de aplicación en la nube optimizada a través de la visibilidad y el control de aplicaciones de Cisco (AVC), la calidad de servicio (QoS) y la seguridad de la capa de DNS de Cisco Umbrella® para protegerlos de las amenazas y detectar las conexiones comprometidas.

Inteligencia artificial, aprendizaje automático, razonamiento automático: Con las redes cada vez más grandes y complejas, es difícil mantenerse al día con su crecimiento. Cisco DNA Assurance le permite reducir las complejidades de su red con su red. Gracias a las tecnologías de inteligencia artificial (IA), aprendizaje automático (ML) y razonamiento automático (MR), su red podrá volverse más inteligente con algoritmos y aprendizaje profundo que comparan su red con decenas de miles en todo el mundo. Estos conocimientos utilizan MR para aplicar las experiencias acumuladas de miles para resolver sus problemas de red.

Cisco DNA Center utiliza las tecnologías AI / ML / MR de forma rápida y precisa para ayudar a sus equipos de TI con la solución correcta. Las capacidades de AI / ML de Cisco DNA Center buscan a través del suministro aparentemente interminable de datos para encontrar la información adecuada para responder a su pregunta sobre la red. Esto significa que con las soluciones sugeridas por Cisco DNA Center AI, los menos experimentados en su equipo de TI están arreglando la red mientras que los miembros de su equipo senior abordan las cosas realmente difíciles.

Los circuitos integrados de aplicaciones específicas de RF programables (ASIC) están integrados en puntos de acceso de misión crítica como Cisco Catalyst ® 9120, 9130 y 9124 y pueden realizar análisis de espectro de RF avanzados. Pueden ofrecer características importantes, como:
- Tecnología Cisco CleanAir ® para mitigar el impacto de la interferencia inalámbrica y proteger el rendimiento. 
Cisco Wireless Intrusion Prevention System (wIPS) para detectar, localizar, mitigar y contener amenazas y delincuentes cableados e inalámbricos en las capas 1 a 3.
Detección de selección de frecuencia dinámica (DFS) de doble filtro para evitar interferencias y lograr un rendimiento óptimo.

Asignación de radio flexible (FRA) es una innovación de Cisco diseñada para proporcionar una mejor experiencia de usuario móvil para redes de alta densidad al detectar automáticamente cuando la cobertura en la banda de 2,4 GHz está sobresaturada. Una vez realizada la detección, FRA determina de forma inteligente qué puntos de acceso deben cambiar sus radios de doble banda de 2,4 GHz a 5 GHz. Visto de forma simple, un único punto de acceso físico ahora actúa como dos puntos de acceso de 5 GHz, lo que resulta en una menor utilización del canal y una mejor experiencia de usuario. El punto de acceso realiza esta función mientras sigue monitoreando la red en busca de amenazas de seguridad e interferencias de RF que puedan afectar el rendimiento.
FRA tiene tres modos de funcionamiento diferentes:
Modo de funcionamiento predeterminado, que atiende a clientes en las bandas de 2,4 GHz y 5 GHz
Modo dual de 5 GHz, que sirve a clientes en ambas radios de 5 GHz
Monitoreo de seguridad inalámbrico, que escanea los modos de 2,4 GHz y 5 GHz en busca de amenazas de seguridad al mismo tiempo que atiende a clientes de 5 GHz


Qué es 5G?

Piense en 5G como el equivalente de Wi-Fi 6 en el mundo de la banda ancha móvil. Como Wi-Fi 6 está reemplazando a 802.11ac (Wi-Fi 5), 5G está reemplazando a 4G.


Tanto 5G como Wi-Fi 6 prometen mejorar drásticamente las experiencias inalámbricas para los trabajadores móviles y la empresa. Ambos proporcionarán velocidades de datos más altas para admitir nuevas aplicaciones y aumentos en la capacidad de la red, además de ofrecer la capacidad de conectar más dispositivos.


5G es una forma avanzada de conectar un dispositivo inalámbrico a una red, sin usar Wi-Fi osea, conectar dispositivos fuera de la red empresarial, como el caso de estar viajando en un tren bala a 200 millas por hora o viajar en un automóvil por la carretera, 5G es el método preferido para las redes al aire libre.

Wi-Fi 6 y 5G son adecuados para muchas industrias, ofrecen oportunidades interesantes para conectar más dispositivos de manera confiable a través de la tecnología inalámbrica. Esto es importante para los dispositivos IoT de misión crítica que se utilizan en la automatización de la fabricación, la atención médica, la energía y muchas otras industrias.

Wi-Fi 6 y 5G también ofrecerán banda ancha móvil mejorada para experiencias inmersivas a través de la realidad virtual y aumentada. Aunque muchas industrias se beneficiarán de la experiencia móvil mejorada, industrias como la hotelería, el comercio minorista y la educación impulsarán experiencias inmersivas para sus negocios.



Puntos de acceso inalámbricos de Cisco

Los puntos de acceso Cisco Catalyst ® 9100 : más allá del estándar Wi-Fi 6, brindan seguridad integrada, resistencia y flexibilidad operativa, así como una mayor inteligencia de red. Estos puntos de acceso amplían la red basada en intenciones de Cisco y se adaptan a las crecientes demandas de Internet de las cosas (IoT) al mismo tiempo que respaldan plenamente las últimas innovaciones y tecnologías más recientes, lo que las hace perfectas para organizaciones de todos los tamaños.

Cisco Catalyst 9130
●  Diseñado para grandes empresas
●  Con cuatro radios (2.4 GHz y 5 GHz), FRA, motor de RF unificado y listo para IOT (BLE y Zigbee) y optimizado para el estándar Wi-Fi 6
●  Equipado con Cisco RF ASIC para brindar detección de Cisco CleanAir ® , WIPS, DFS y admite hasta 200 clientes por radio * (El Catalyst 9130 tiene tres interfaces Wi-Fi en modo Tri-Radio)

Cisco Aironet 4800
● La  implementación de destino son las grandes organizaciones empresariales que requieren tráfico de misión crítica.
●  Equipado con cuatro radios (2,4 GHz y 5 GHz), BLE y FRA integrados, captura inteligente, hiper localización y es compatible con 802.11ac Wave 2
●  Admite hasta 400 clientes y se puede ejecutar sin un controlador a través de Mobility Express



Wireless Controller de Cisco

Los controladores inalámbricos Cisco Catalyst de la serie 9800 optimizan lo mejor de la excelencia de RF con los beneficios abiertos y programables de Cisco IOS ® XE, lo que significa que ya no tiene que administrar dos sistemas operativos. Estos controladores modulares, confiables y altamente seguros son lo suficientemente flexibles como para implementarse en cualquier lugar, incluida la nube que elija.

Cisco Catalyst 9800-80
●  Excelente para redes de proveedores de servicios y grandes empresas
●  Se adhiere al estándar Wi-Fi 6 con un rendimiento de 80 Gbps
●  Admite 6.000 puntos de acceso y 64.000 clientes



Cisco Digital Network Architecture (Cisco DNA)

La red basada en la intención, desarrollada en Cisco DNA, está continuamente cerrando la brecha entre los negocios y la TI

Las redes basadas en la intención (IBN) integradas en Cisco DNA adoptan un enfoque suministrado por software para automatizar y garantizar servicios en las redes del campus y las sucursales, y en todas las WAN. 

Cisco DNA puede ayudarlo a agilizar las operaciones, a analizar y resolver problemas con mayor rapidez y a aumentar la productividad del usuario al optimizar el rendimiento de las aplicaciones.


- Automatizar, analizar y optimizar: 
Traduce la intención del negocio en políticas de red y use la automatización y el análisis de AI/ML para poder lograr los resultados comerciales.
- Ofrece el mundo multinube: Ofrece una entrega de aplicaciones uniforme y segura en el actual entorno híbrido y multinube altamente distribuido para optimizar la experiencia del usuario.
- Detección, contención y mitigación de las amenazas: Obtenga visibilidad completa en la actividad, los dispositivos, las cosas y el tráfico del usuario para reforzar la seguridad de confianza cero.
- Centralizar diseño y administración: Tome el control de su red y coordine las funciones con controladores de red.



viernes, 16 de julio de 2021

 Automatización de la red

Cisco Network Academy
Publicado el 16 de Julio del 2021

La automatización está en todas partes, desde las cajas registradoras de autoservicio en las tiendas y los controles ambientales de los edificios automáticos hasta automóviles y vehículos autónomos. La automatización reduce y con el tiempo, elimina, la necesidad de intervención humana.

Algunas de las ventajas- Las máquinas pueden trabajar las 24 horas sin interrupciones y con resultados más uniformes. - La automatización permite la recolección de grandes cantidades de datos, los cuales pueden analizarse rápidamente y generar información, que guíe un evento o proceso. - Los robots se utilizan en condiciones peligrosas reduciendo el riesgo para las personas.

Cada vez que un dispositivo toma una decisión, en función de información externa, dicho dispositivo se conoce como dispositivo inteligente. En la actualidad muchos dispositivos con los que interactuamos se consideran inteligentesPara que un dispositivo inteligente pueda "pensar", debe ser programado utilizando herramientas de automatización de red. Estos dispositivos son pequeñas computadoras.

Para que un dispositivo inteligente, como un actuador, reaccione a condiciones cambiantes, debe ser capaz de recibir e interpretar la información enviada por otro dispositivo inteligente, como un sensor. Estos dos dispositivos inteligentes deben compartir un "lenguaje" en común, el cual es llamado formato de datos

Los formatos son simplemente una manera de almacenar e intercambiar datos de una manera estructurada. Uno de esos formatos es el Lenguaje HTML. HTML es un estándar que describe la estructura de las páginas web, como se aprecia en la imagen.


Existen algunos formatos de datos comunes que son usados en muchas aplicaciones incluidas automatización de la red y programación;
 - Notación de objeto de JavaScript (JavaScript Object Notation - JSON)
 - Lenguaje de marcado extensible (XML)
 - YAML no es un lenguaje de marcado (YAML Ain’t Markup Language - YAML)

El formato de datos seleccionado dependerá del formato que es usado por la aplicación, herramienta o las instrucciones que usted esté usando. Muchos sistemas pueden soportar más de un formato, lo que le permite al usuario elegir el preferido.

El formato de datos posee reglas y estructuras similares a los que tenemos en programación y lenguajes escritos. Cada formato va a tener características específicas:

 - La sintaxis, incluye diferentes tipos de símbolos, tales como [ ], ( ), { }, el uso de espacio o sangría, comillas, comas, y más.
 - ¿Cómo se representan los objetos?, como caracteres, una cadena de caracteres, una lista, y vectores.
 - ¿Cómo se representan los pares llave/valor (key/value)? La llave (key) usualmente se encuentra al lado izquierdo e identifica o describe los datos. El valor (value) que se encuentra al lado derecho, consiste en los datos, los cuales pueden ser caracteres, cadenas de caracteres, números, listas o cualquier otro tipo de información.

Estos tres formatos se ven así:

Formato JSON

Formato YAML

Formato XML

Formato Datos JSON

JSON es un formato legible para humanos, usado por aplicaciones para almacenar, transferir y leer información. JSON es relativamente popular y es usado por servicios web y API para brindar información pública. Esto se debe a que es fácil de analizar y puede ser usado con la mayoría de lenguajes de programación moderno, entre ellos Python.

El siguiente ejemplo muestra el resultado parcial de ejecutar el comando: 
 show interface GigabitEthernet0/0/0 en el router.





Esta misma información puede ser mostrada usando el formato JSON. Nótese que cada objeto (cada par de llave/valor) es una porción de información diferente acerca de las interfaces, incluyendo su nombre, una descripción, y si se encuentra habilitada.


Estas son algunas de las características de el formato JSON:

- JSON utiliza una estructura jerárquica y contiene valores anidados.
- Utiliza llaves { } para almacenar objetos y corchetes [ ] para almacenar vectores.
- Su información es escrita en pares llave/valor (key/value).

El objeto consiste en uno o mas pares de key/value contenidos dentro de llaves { }. La sintaxis de un objecto JSON incluye:

- Las llaves deben ser cadenas de caracteres contenidas dentro de comillas " ".
- Los valores deben ser un tipo de información válida (cadena de caracteres, números, vectores, valores booleanos, carácter nulo, u otro objecto).
- Los valores son separados por dos puntos ( :).
- Múltiples pares de llaves/valores dentro de un objeto se separan mediante comas.
- El espacio en blanco no tiene relevancia.


Un
vector en JSON es una lista ordenada de valores. Las características de un vector en JSON incluyen:
- La llave debe ser seguida por dos puntos (:) y una lista de valores contenidos dentro de corchetes  [ ].
- Un vector puede almacenar diferentes tipos de valores como caracteres, números, valores booleanos, objectos u otro vector.
- Cada valor dentro del vector es separado por una coma.

Lista JSON de direcciones IP




















Ejemplo, la lista de direcciones IPv4 podría verse de la siguiente manera. 
- La llave es “addresses”. Cada entrada de la lista es un objecto independiente, separado por llaves { }. 
Los objetos son dos pares de llaves/valores: una dirección IPv4 ("ip") y una máscara de red ("netmask") separados por una coma. El vector es una lista separa por una coma seguido de una llave de cierre



Formato YAML
YAML es otro tipo de formato usado por aplicaciones para almacenar, transferir y leer información, el cual es legible por humanos. Algunas de las características de YAML incluyen:

- Es considerado una versión mejorada de JSON.
- Tiene un formato minimalista, lo cual lo hace fácil de leer y escribir.
- Utiliza la sangría para definir su estructura, sin utilizar corchetes o comas .
Por ejemplo, observe la siguiente información en formato JSON, relacionada a la interfaz Gigabit Ethernet 2.

Formato JSON
   









 






Formato YAML













La misma información en formato YAML es más fácil de leer. Similar a JSON, un objeto en YAML se compone de uno o mas pares de llaves/valores. Las llaves y los valores, son separados por medio de dos puntos sin el uso de comillas. En YAML, un guión es usado para separar cada elemento de un lista


Formato XML

XML es un formato más que se utiliza para almacenar, transferir y leer información desde aplicaciones. Algunas de las características de XML incluyen:
- Es similar a HTML , el cual es el lenguaje de marcado generalizado para la creación de páginas y aplicaciones web.
- Es auto-descriptivo. Contiene información dentro de un conjunto de etiquetas: <tag>data</tag>
- A diferencia de HTML, XML no utiliza etiquetas predefinidas, ni una estructura de documento.

Los objetos XML se componen de uno o más pares de llave/valor (key/value), en los cuales la etiqueta inicial funciona como llave: <key>value</key>

El siguiente ejemplo muestra la misma información de GigabitEthernet2 en formato XML. Nótese como los valores están contenidos dentro de las etiquetas de objeto. En este ejemplo, cada par de llaves/valores esta en una línea separada y en algunas se utiliza sangría. Esto último no es requerido, pero se utiliza para mejorar la lectura.
La lista utiliza instancias repetitivas de las etiquetas <tag></tag> para cada elemento de la lista
Los elementos dentro de estas instancias representan uno o más pares de llaves/valores (key/value).















API - Application Programming Interface

APIs se encuentra prácticamente en todos los sistemas. Amazon Web Services, Facebook, y dispositivos de automatización como los termostatos, refrigeradores y sistemas inalámbricos de iluminación utilizan APIs. También se utilizan en la creación de redes automatizadas

API es un programa que permite a otras aplicaciones accesar a su información o sus servicios.
API es un conjunto de reglas que describe cómo una aplicación puede interactuar con otra, y las instrucciones para que esa interacción ocurra.
El usuario envía una solicitud API a un servidor solicitando información especifica y recibe una respuesta API desde el servidor con la información solicitada.

Una API es similar a un mesero en un restaurante, como se muestra en el siguiente ejemplo. Un cliente desea que le entreguen comida a su mesa. La comida está en la cocina donde es cocinada y preparada. El mesero es el mensajero, similar a una API. El mesero (la API) es una persona que toma la orden del cliente (la solicitud) y le dice a la cocina que hacer o que deben preparar. Cuando la comida esta lista, el mesero entrega la comida (la respuesta) al cliente.


La API actúa como una especie de mensajero entre la aplicación solicitante y la aplicación en el servidor que proporciona los datos o el servicio.
El mensaje de la aplicación solicitante al servidor donde residen los datos se conoce como una llamada a la API.

Las APIs pueden ser desarrolladas con tres tipos de acceso:


Tipos de APIs de servicios web

Un servicio web es un servicio que está disponible a través de Internet, utilizando la World Wide Web. Existen cuatro tipos de APIs de servicios web:

- Protocolo simple de acceso a objetos (SOAP, Simple Object Access Protocol)
- Transferencia de estado representacional (REST, Representational State Transfer)
- Llamada a procedimiento remoto de lenguaje de marcado extensible (XML-RPC, eXtensible Markup Language-Remote Procedure Call)
- Llamada a procedimiento remoto de notación de objetos JavaScript (JSON-RPC, JavaScript Object Notation-Remote Procedure Call)

Las API SOAP se consideran lentas de analizar, complejas y rígidas, esto llevó al desarrollo de un marco de API REST más simple que no requiere XML. REST utiliza HTTP, es menos detallado y es más fácil de usar y se ha vuelto popular debido a su rendimiento, escalabilidad, simplicidad y confiabilidad (80% de todos los tipos de API)

RPC es cuando un sistema solicita que otro sistema ejecute código y devuelva la información. XML-RPC es un protocolo desarrollado antes de SOAP y más tarde evolucionó en lo que se convirtió en SOAP. JSON-RPC es un protocolo muy simple y similar a XML-RPC.


REST
REST es actualmente la API más utilizada. En este tema se trata REST con más detalle.

API REST y RESTful
Los exploradores web utilizan HTTP o HTTPS para solicitar (GET) una página web. Si se solicita correctamente (código de estado HTTP 200), los servidores web responden a las solicitudes GET con una página web codificada HTML, como se muestra en la figura.

Una API REST es una API que funciona encima del protocolo HTTP. Define un conjunto de funciones que los desarrolladores pueden usar para realizar solicitudes y recibir respuestas a través del protocolo HTTP como GET y POST.

El cumplimiento de las restricciones de la arquitectura REST generalmente se conoce como "RESTful".

Una API puede considerarse "RESTful" si tiene las siguientes características:
- Cliente/servidor - El cliente maneja el front-end y el servidor maneja el back-end. Cualquiera de los dos puede ser reemplazado independientemente del otro.
- Sin estado - No se almacenan datos del cliente en el servidor entre solicitudes. El estado de la sesión se almacena en el cliente.
- Cacheable - los clientes pueden almacenar en caché las respuestas localmente para mejorar el rendimiento.


Implementación RESTful
Un servicio web RESTful se implementa mediante HTTP. Es una colección de recursos con cuatro aspectos definidos:

1- Identificador uniforme de recursos (URI) base para el servicio web, como http://example.com/resources.
2- El formato de datos admitido por el servicio web. A menudo es JSON, YAML o XML, pero podría ser cualquier otro formato de datos que sea un estándar de hipertexto válido.
3- El conjunto de operaciones admitidas por el servicio web mediante métodos HTTP.
4- La API debe estar controlada por hipertexto.

Las API RESTful utilizan métodos HTTP comunes, como POST (Crear), GET (Leer), PUT /PATCH (Actualizar y DELETE (Eliminar ).

En la figura, la solicitud HTTP solicita datos con formato JSON. Si la solicitud se construye correctamente de acuerdo con la documentación de la API, el servidor responderá con datos JSON. La aplicación web de un cliente puede utilizar estos datos JSON para mostrar los datos. 


Cómo puedo ejecutar una solicitud usando API REST?
- Con el navegador usando HTTP
- Con línea de comando usando CURL
- Con una aplicación usando POSTMAN
- Con un lenguaje de programación como PYTHON, JAVASCRIPT y otros.

Las APIs RESTful usa métodos HTTP de solicitud y respuesta cliente / servidor, estos métodos son:


Los recursos web y los servicios web, como las API RESTful, se identifican mediante un URI

Un URI es una cadena de caracteres que identifica un recurso de red específico. Como se muestra en la figura, un URI tiene dos especializaciones:

- Nombre uniforme de recurso (URN): -identifica solo el espacio de nombres del recurso (página web, documento, imagen, etc.) sin referencia al protocolo.

- Localizador uniforme de recursos (URL): - define la ubicación de red de un recurso específico en la red. Las URL HTTP o HTTPS se usan típicamente con los navegadores web. Otros protocolos como FTP, SFTP, SSH y otros pueden usar una dirección URL. Una URL que usa SFTP podría tener el siguiente aspecto: sftp: //sftp.example.com.

Partes de un URI:
- Protocolo / esquema: - HTTPS u otros protocolos como FTP, SFTP, mailto y NNTP
Nombre de host: www.example.com
Ruta y nombre de archivo : /author/book.html
Fragmento - # página155

En un servicio web RESTful, una solicitud realizada al URI de un recurso. La respuesta será una carga normalmente formateada en JSON, pero podría ser HTML, XML o algún otro formato. La figura muestra el URI de la API de direcciones de MapQuest. La solicitud de API es para indicaciones desde San José, California hasta Monterey, California y se muestra las partes de la solicitud API.

- Servidor API: - es la dirección URL del servidor que responde a las solicitudes REST. En este ejemplo es el servidor de la API de MapQuest.
- Recursos - especifica la API que se está solicitando. En este ejemplo es la API de direcciones de MapQuest.
- Consulta: - especifica el formato de datos y la información que el cliente solicita al servicio de API. Las consultas pueden incluir:

- Formato: - normalmente es JSON, pero puede ser YAML o XML. En este ejemplo se solicita JSON.
- Clave: - La clave es para autorización, si es necesario. MapQuest requiere una clave para su API de direcciones. En el URI anterior, deberá reemplazar "KEY" por una clave válida para enviar una solicitud válida.
Parámetros: - los parámetros se utilizan para enviar información relativa a la solicitud. En este ejemplo, los parámetros de consulta incluyen información acerca de las direcciones que necesita la API para que sepa qué direcciones devolver: "from-San + Jose, Ca" y "to-Monterey, Ca".




Aplicaciones de API RESTful

Muchos sitios web y aplicaciones utilizan las API para acceder a la información y proporcionar el servicio a sus clientes. Por ejemplo, cuando se utiliza un sitio web de servicio de viajes, el servicio de viajes utiliza la API de varias aerolíneas para proporcionar al usuario información de aerolíneas, hoteles y otra.

Algunas solicitudes de API RESTful se pueden realizar escribiendo el URI desde un explorador web. La API de direcciones de MapQuest es un ejemplo de esto. Una solicitud de API RESTful también se puede realizar de otras maneras.


A. Podemos hacer una llamada al API por HTTP
mediante el navegador ingresando:

        https://ipinfo.io/72.163.4.185/json
Esta es la respuesta





















Esta API nos dará la ubicación en base a la dirección IP. Si consultas cuál es tu IP y luego haces la consulta a la API, te debe dar tu ubicación.














B.- Ahora vamos a hacer una llamada desde línea de comandos del Windows, usando la herramienta CURL y obtendremos los datos JSON similares al caso anterior.
















C.- También se puede hacer mediante una aplicación en JavaScript



D.- También podemos usar Python para hacer la consulta, mediante el siguiente código:













Puedes practicar Python en https://trinket.io sin instalar la aplicación y además te van a enseñar de manera muy fácil.

Adjunto la consulta con Python a mi dirección IP:












Muchas API RESTful, incluidas las API públicas, requieren una clave. La clave se utiliza para identificar el origen de la solicitud a través de la autenticación. Estas son algunas razones por las que un proveedor de API puede requerir una clave:
- Para autenticar la fuente y asegurar de que esté autorizada para usar la API
- Para limitar el número de personas que usan la API
- Para limitar el número de solicitudes por usuario.
- Para capturar y rastrear mejor los datos que solicitan los usuarios
- Para recopilar información sobre las personas que usan la API

Nota : Si desea utilizar la API de MapQuest, la API requiere una clave. Busque en Internet la URL para obtener una clave MapQuest. Utilice los parámetros de búsqueda: developer.mapquest. También puede buscar en Internet la URL actual que describe la política de privacidad de MapQuest.

E.- Mediante protocolos como NETCONF (NET CONFiguration) y RESTCONF, los sistemas operativos de red están empezando a proporcionar un método alternativo para la configuración, la supervisión y la administración. Por ejemplo, la salida siguiente podría ser la respuesta de apertura de un router después de que el usuario haya establecido una sesión NETCONF en la línea de comandos. Sin embargo, trabajar en la línea de comandos no es automatizar la red. En su lugar, un administrador de red puede utilizar scripts de Python u otras herramientas de automatización, como Cisco DNA Center, para interactuar mediante programación con el router.


Herramientas de administración de configuración

Como se mencionó en la introducción a este módulo, la configuración de una red puede llevar mucho tiempo. Las herramientas de administración de configuración pueden ayudar a automatizar la configuración de routers, switches, firewalls y muchos otros aspectos de su red.

Los router, switches, y firewalls son tradicionalmente administrados usando el CLI, Cuando hay un cambio o una nueva característica, la configuración se deben hacer manualmente en todos los dispositivos apropiados,, esto no sólo consume mucho tiempo, sino que también puede ser propenso a errores. El problema es mayor si la red es más grande.

El protocolo simple de administración de redes (SNMP) se desarrolló para que se puedan administrar nodos como: servidores, estaciones de trabajo, routers, switches y dispositivos de seguridad en una red IP. Usando una estación de administración de red (NMS, network management station), SNMP permite a los administradores de red supervisar y administrar el rendimiento de la red, buscar y resolver problemas de red y realizar consultas para estadísticas.
SNMP funciona razonablemente bien para la supervisión de dispositivos. Sin embargo, no se utiliza normalmente para la configuración debido a problemas de seguridad y dificultad en la implementación. Aunque SNMP está ampliamente disponible, este no puede servir como una herramienta de automatización para las redes actuales.

También puede usar las API para automatizar la implementación y administración de recursos de red. En lugar de que el administrador de red configure manualmente los puertos, las listas de acceso, la calidad de servicio (QoS) y las directivas de equilibrio de carga, pueden usar herramientas para automatizar las configuraciones. Estas herramientas se enlazan a las APIs de red para automatizar las tareas rutinarias de aprovisionamiento de red, lo que permite al administrador seleccionar e implementar los servicios de red que necesitan. Esto puede reducir significativamente muchas tareas repetitivas y mundanas para liberar tiempo para que los administradores de red trabajen en cosas más importantes.



Automatización de la red

Nos estamos alejando rápidamente de un mundo en el que un administrador de red administra unas pocas docenas de dispositivos de red, a uno en el que están implementando y administrando cientos, miles e incluso decenas de miles de dispositivos de red complejos (tanto físicos como virtuales) con la ayuda de software

Esta transformación se está extendiendo rápidamente desde sus inicios en el centro de datos, a todos los lugares de la red. Existen métodos nuevos y diferentes para que los operadores de red supervisen, administren y configuren automáticamente la red. Como se muestra en la figura, estos incluyen protocolos y tecnologías como REST, Ansible, Puppet, Chef, Python, JSON, XML y más.


Herramientas de administración de configuración

Las herramientas de administración de configuración utilizan las solicitudes de API RESTful para automatizar tareas y pueden escalar en miles de dispositivos, mantienen las características de un sistema o red para la coherencia.
Características de la red que los administradores se benefician de la automatización:
- Control de versión de software’
- Atributos del dispositivo, como nombres, direccionamiento y seguridad
- Configuración de protocolos
- Configuraciones de ACL

Las herramientas de gestión de la configuración suelen incluir automatización y orquestación.
- La automatización realiza automáticamente una tarea en un sistema. Esto podría estar configurando una interfaz o implementando una VLAN.
- La orquestación es el proceso de cómo deben realizarse todas estas actividades automatizadas, como el orden en el que deben realizarse, lo que debe completarse antes de que se inicia otra tarea, etc. La orquestación es la organización de las tareas automatizadas que da como resultado un proceso de coordenadas o un flujo de trabajo.

Hay varias herramientas disponibles para facilitar la gestión de la configuración: (Ansible, Chef, Puppet y SaltStack)


Estas herramientas vienen con documentación de API para configurar solicitudes de API RESTful. Todos ellos admiten JSON y YAML, así como otros formatos de datos. En la tabla siguiente se muestra un resumen de una comparación de las principales características de las herramientas de administración de configuración de Ansible, Puppet, Chef y SaltStack

- Lenguaje de programación - Ansible y SaltStack están construidos en Python, mientras que Puppet y Chef están construidos en Ruby. Al igual que Python, Ruby es un lenguaje de programación de código abierto que es multiplataforma. Ruby generalmente se considera un lenguaje más difícil de aprender que Python.
- ¿Basado en agentes o sin agente? - La administración de configuración está basada en agentes o sin agente. La administración de configuración basada en agente se "basa en extracción", lo que significa que el agente del dispositivo administrado se conecta periódicamente con el maestro para obtener su información de configuración. 
La administración de configuración sin agente está "basada en inserción". Se ejecuta un script de configuración en el maestro. El maestro se conecta al dispositivo y ejecuta las tareas del script. 
- ¿Cómo se administran los dispositivos? - Esto radica en un dispositivo llamado El Master en Títeres, Chef y SaltStack. Sin embargo, debido a que Ansible no tiene agentes, cualquier equipo puede ser el controlador.
- ¿Qué crea la herramienta? - Los administradores de red utilizan herramientas de administración de configuración para crear un conjunto de instrucciones a ejecutar. Cada herramienta tiene su propio nombre para estas instrucciones: Libro de jugadas, Libro de cocina, Manifiesto y Pilar. Común a cada uno de estos es la especificación de una directiva o una configuración que se va a aplicar a los dispositivos. Cada tipo de dispositivo puede tener su propia directiva. Por ejemplo, todos los servidores Linux podrían obtener la misma configuración básica y la misma directiva de seguridad.


IBN y Cisco DNA Center

Intent-Based Networking (IBN) y Cisco Digital Network Architecture (DNA) Center pueden ayudar a reunir todo para crear una red automatizada.

IBN es el modelo de industria emergente para la próxima generación de redes. IBN se basa en las redes definidas por software (SDN), transformando un enfoque manual y centrado en el hardware para diseñar y operar redes en uno que esté centrado en el software y totalmente automatizado.

Los objetivos de negocio para la red se expresan como intención. IBN captura la intención del negocio y utiliza análisis, aprendizaje automático y automatización para alinear la red de forma continua y dinámica a medida que cambian las necesidades del negocio.

IBN captura y traduce la intención empresarial en políticas de red que se pueden automatizar y aplicar de forma coherente en toda la red.

Cisco considera que IBN tiene tres funciones esenciales: traducción, activación y seguridad. Estas funciones interactúan con la infraestructura física y virtual subyacente, como se muestra en la figura.

Fabric es un término utilizado para describir una superposición que representa la topología lógica utilizada para conectarse virtualmente a los dispositivos, como se muestra en la figura. La superposición limita el número de dispositivos que el administrador de red debe programar. También proporciona servicios y métodos de reenvío alternativos no controlados por los dispositivos físicos subyacentes. 
Mediante una solución IBN, el administrador de red puede especificar a través de directivas exactamente lo que sucede en el plano de control de superposición. Observe que cómo los switches están conectados físicamente no es una preocupación de la superposición.


Arquitectura de red digital (DNA, Digital Network Architecture)
Cisco implementa el fabric IBN utilizando Cisco DNA. Como se muestra en la figura, la intención comercial se implementa de forma segura en la infraestructura de red (la estructura). Cisco DNA recopila continuamente datos de una multitud de fuentes (dispositivos y aplicaciones) para proporcionar un rico contexto de información. Esta información puede analizarse para asegurarse de que la red se desempeña de manera segura en su nivel óptimo y de acuerdo con la intención comercial y las políticas de red.


Cisco DNA es un sistema que está constantemente aprendiendo, adaptándose para satisfacer las necesidades del negocio.

Algunos productos y soluciones de Cisco DNA:
- Acceso definido por software
- SD-WAN
- Cisco DNA Assurance
- Cisco DNA Center Security


Para iniciar en la programación de redes, debes primero ingresar a: 
        https://developer.cisco.com/

Dentro de esta página selecciona "Empezar ahora"

Ahora tienes la oportunidad de aprender diferentes habilidades que te ofrece DevNet, dentro de las cuales sería conveniente elegir a los dos primeros, Codificación y Redes


Cuando intentes acceder a algún tema te va a pedir que inicies sesión, usa el usuario de Netacad.




ANSIBLE Network Automation Lab básico

Una actividad práctica con Ansible a través de este video que lo ofrece gentilmente Sea CCNA , lo puedes ver desde aquí o desde su canal, donde vas a encontrar material muy importante.


Cuando nos preguntamos que es Ansible: encontramos que es un software que automatiza el aprovisionamiento de software, la gestión de configuraciones y el despliegue de aplicaciones, está categorizado como una herramienta de orquestación, muy útil para los administradores de sistemas.

Ansible trabaja, generalmente, ejecutando tareas sobre equipos remotos, dispositivos de red o APIs, en nuestro caso nos interesa ejecutar tareas sobre los routers y switches remotos de la red. Los inventarios, que pueden fijarse en formato Ansible JSON o YAML, permiten definir dichos equipos, agruparlos y especificar valores grupales o individuales de estos.

Ansible es un software muy fácil de instalar, para ello, solo se necesita un Ansible Controller ejecutando un sistema operativo basado en UNIX. En mi caso voy a usar Centos6.

Vamos a bajar el OVA de Centos6 la versión de solo CLI (Mínima instalación) para VmWare Player, desde:
   https://www.linuxvmimages.com/how-to-use/vm-image-password/

Una vez importada en VmWare, se inicia (Play) e ingresa usando:
    user =             centos
    password =     centos 

Para pasar a root, use: sudo su -


Para tener acceso a un router Cisco del sandbox, podemos usar el siguiente enlace, en el cual vas a poder experimentar, sin necesidad de hacer reservas y también sin necesidad de usar la conexión VPN.

 https://devnetsandbox.cisco.com/RM/Diagram/Index/27d9747a-db48-4565-8d44-df318fce37ad?diagramType=Topology

Por si no funciona el enlace aquí otra opción: Link al router

Debes iniciar sesión con el ID de Netacad, espera que cargue la página de devnetsandbox y vas a tener a la derecha un router en el cual vas a poder experimentar todos los comando que estamos acostumbrados en Cisco.
En la parte izquierda están los datos de la dirección y además, el usuario y password.

Lo más importante:
    Host CSR1000V: sandbox-iosxe-recomm-1.cisco.com
    Puerto SSH: 22
    Nombre de usuario: developer
    Contraseña: C1sco12345

Puedes usar el Putty para acceder: (Open)


Ingresas el usuario y password y ya podrás tener acceso al modo privilegiado del router.


 
Volvemos ahora a la máquina virtual con Centos6.

En la maquina virtual no hay acceso a Internet, no tiene IP, para solucionarlo se debe pasar a root: sudo su -

Ejecuta el comando: dhclient

Y ya puedes ver que aparece una IP con el comando ifconfig
y puedes hacer ping a 8.8.8.8
 
Para actualizar el Centos use el comando:
yum update -y

de manera automática se realizará todo el proceso.

Instalamos ahora Ansible
yum install ansible -y

también lo realizará de manera automática

Nos pasamos al directorio de Ansible
  cd /etc/ansible

Listamos los archivos de este directorio:

Se debe editar el archivo ansible.cfg
    vi ansible.cfg

Quitando el # y dejando la sentencia así:
    host_key_checking = False
    
Con i se inserta el texto
Con :wq + Enter  salvamos y salimos del editor.

Ahora hay que editar el archivo hosts igual que antes con vi
       vi hosts 

Le debemos agregar al final la lista de routers y los datos de acceso:
    [routers]
    sandbox-iosxe-recomm-1.cisco.com

    [routers:vars]
    ansible_user=developer
    ansible_password=C1sco12345
    ansible_connection=network_cli
    ansible_port=22

        


Ansible permite acceder a los hosts, en este caso a los routers.

usemos el siguiente comando:
   ansible routers -m ping

esta es una prueba de ansible aplicado al grupo [routers], usando el módulo "-m" ping
A continuación vemos que hay respuesta del router de Cisco en el SandBox.


Otra prueba, en la cual vamos a pedirle al router, mediante Ansible, que nos muestre que interfaces tiene, para ello deberá aplicar el comando: "show ip interface brief" remotamente:
    ansible routers -m ios_command -a "commands=´show ip inter br´"

Para verificar que la respuesta es correcta, vemos la respuesta del Putty y comprobamos que son iguales.
Nótese que estas pruebas lo estoy haciendo al grupo de routers, si en el archivo de hosts hubiese considerado 20 direcciones de router, me daría 20 respuestas.

Ahora vamos a agregar información a los routers, usaremos la siguiente plantilla en un block de notas y lo guardamos con la extensión .yml


Vamos a usar winSCP para intercambiar archivos entre la máquina real y la vitual.
Debemos ingresar la IP de la máquina virtual y el usuario y password
Para ver la ip de la máquina virtual usa el comando:
ip a


Para acceder a la máquina virtual, la de la derecha, te solicita que ingreses la IP = 192.168.11.128, el usuario = centos y el password = centos, el archivo banner.yml lo vamos a copiar en (lo arrastramos de izquierda a derecha) /home/centos/

Regresamos a la máquina virtual y lo copiamos al directorio de ansible:
cd /home/centos
cp banner.yml /etc/ansible
cd /etc/ansible
ansible-playbook banner.yml


Para comprobar que se ha producido cambios de configuración en el router usando Ansible, accedo con Putty y encuentro los siguientes cambios:


Para hacer las configuraciones remotas de los routers, necesitamos conocer los diferentes módulos que ofrece Ansible en su documentación, por ejemplo para el caso que hemos desarrollado, puedes encontrar mas información en este link: Doc del modulo Banner

Para que sea compatible con nuestra versión, cámbiale el nombre del módulo:
        de   cisco.ios.ios_banner:   a    ios_banner:

El playbook para el banner queda así:


Si quisiéramos remover el banner se debe usar el estado "absent":

        - name: Remove the motd banner
           ios_banner:
              banner: motd
              state: absent

Otros módulos:

        



Luego de crear el archivo user.yml se lo transfiere a la máquina virtual


En la máquina virtual usamos Ansible para mandar esta orden


Para verificar que se ha creado el usuario calo, accedemos al router con el Putty y notamos que se ha agregado dicho usuario.