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