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:
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.
El usuario es developer y el password es C1sco12345 como lo indica el gráfico anterior.
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