Mi Blog
👉 Cómo conectar Ansible con MikroTik y RouterOS

Cómo conectar Ansible con MikroTik y RouterOS

 
(2 votos)

Ansible es capaz de conectar y desplegar configuraciones también en equipos con RouterOS de MikroTik. Gestionar la configuración de los equipos remotos es sumamente sencillo con Ansible. Gracias a ello, se pueden generar playbooks de configuración por parte de gente técnica y luego aplicar dichos cambios en un momento determinado por personas con menos conocimiento técnico sin miedo a "romper" nada.

Seguid leyendo y os enseñaré a automatizar tareas con Ansible y equipos clientes RouterOS de MikroTik...

⬇️ Compra en Amazon el hardware que utilizo ⬇️

🔥 ¡DESCÚBRELOS! 🔥

 

 

¿QUÉ ES ANSIBLE?

Ansible es una plataforma de software libre para configurar y administrar ordenadores. Combina instalación multi-nodo (es decir: permite desplegar configuraciones de servidores y servicios por lotes), ejecuciones de tareas ad hoc y administración de configuraciones. Adicionalmente, Ansible es categorizado como una herramienta de orquestación. Gestiona nodos a través de SSH y no requiere ningún software remoto adicional (excepto Python 2.4 o posterior​ para instalarlo). Dispone de módulos que trabajan sobre JSON y la salida estándar puede ser escrita en cualquier lenguaje. Nativamente utiliza YAML para describir configuraciones reusables de los sistemas.

Ventajas:

  • No necesita instalar agentes
  • Sólo se necesita tener instalado Python en los equipos administrados
  • Gran biblioteca pública de módulos para aumentar su funcionalidad

 

Web: https://www.ansible.com/

 

 

Gracias a la Comunidad, Ansible también es compatible con MikroTik y RouterOS

 

 

1.- ELEMENTOS NECESARIOS PARA ESTE TUTORIAL

  • Un PC con GNU/Linux Debian (o similar) y Ansible 2.9+ instalado
  • Un equipo con RouterOS

 

 

2.- PAQUETES NECESARIOS A INSTALAR

Antes de comenzar a configurar Ansible para MikroTik y RouterOS, es necesario instalar algunos paquetes adicionales en el sistema. Ejecutaremos los siguientes comandos para instalar los paquetes necesarios de python3-pip y paramiko

raul@debian:~$ sudo apt install python3-pip
raul@debian:~$ sudo pip install paramiko

 

 

 

 

3.- CREACIÓN DE USUARIOS PARA ANSIBLE

A continuación, crearemos un usuario llamado "ansible" con contraseña "ansible" tanto en el equipo GNU/Linux como en el/los equipos con RouterOS de MikroTik. Para crear el usuario en GNU/Linux es tan sencillo como ejecutar el siguiente comando y seguir el pequeño asistente:

raul@debian:~$ sudo adduser ansible
Añadiendo el usuario `ansible' ...
Añadiendo el nuevo grupo `ansible' (1009) ...
Añadiendo el nuevo usuario `ansible' (1007) con grupo `ansible' ...
Creando el directorio personal `/home/ansible' ...
Copiando los ficheros desde `/etc/skel' ...
Nueva contraseña:
Vuelva a escribir la nueva contraseña:
passwd: contraseña actualizada correctamente
Cambiando la información de usuario para ansible
Introduzca el nuevo valor, o pulse INTRO para usar el valor predeterminado
Nombre completo []:
Número de habitación []:
Teléfono del trabajo []:
Teléfono de casa []:
Otro []:
¿Es correcta la información? [S/n] S

 

 

Para crear el usuario en los equipos MikroTik, iremos desde el menú principal System->Users y crearemos el usuario con los permisos que necesitamos para este ejemplo (full). Añadiremos el usuario haciendo click en +:

Conectar Ansible con Mikrotik y RouterosListado de usuarios

 

 

Completaremos los campos necesarios y haremos click en OK:

Conectar Ansible con Mikrotik y RouterosAñadir usuario ansible

 

 

En el listado de usuario veremos el nuevo usuario con permisos de admin (full):

Conectar Ansible con Mikrotik y RouterosListado de usuarios

 

 

Si queremos añadir el usuario desde la línea de comandos ejecutaremos:

[admin@MikroTik] > /user add name=ansible2 password=ansible2 group=full disabled=no

 

 

4.- CONFIGURACIÓN DE ANSIBLE

A continuación, configuramos los ficheros de Ansible necesarios para la correcta comunicación con los equipos RouterOS y MikroTik. 

En el fichero /etc/ansible/ansible.cfg añadiremos la siguiente línea dentro de la sección [defaults] para ocultar algunos errores em la ejecución del playbook de Ansible:

[defaults]
deprecation_warnings=False

 

 

En el fichero /etc/ansible/hosts añadiremos los equipos RouterOS y Mikrotik que queremos gestionar. En este ejemplo añadiremos solamente un equipo. Para añadir mas equipos hay que añadir cada uno de ellos en una línea nueva:

[mikrotiks]
192.168.1.77

[mikrotiks:vars]
ansible_user = ansible
ansible_network_os = routeros
ansible_connection = network_cli

 

 

5.- PLAYBOOK PARA ROUTEROS Y MIKROTIK

Antes de crear el Playbook, nos cambiaremos al usuario que vamos a utilizar con Ansible e instalaremos un paquete necesario para que Ansible funciona con RouterOS y MikroTik. Con el siguiente comando nos cambiaremos al usuario ansible:

raul@debian:~$ sudo su - ansible

 

 

Una vez estemos con el usuario ansible, instalaremos el paquete community.routeros utilizando ansible-galaxy:

ansible@debian:~$ ansible-galaxy collection install community.routeros 

 

 

Una vez instalado el paquete community.routeros, desde un usuario con permisos de sudoer o con el usuario root, crearemos el fichero /home/ansible/routeros-playbook.yml con el siguiente contenido:

---
- hosts: mikrotiks

tasks:
- name: Change Interfaces Name
routeros_command:
commands:
- /interface set ether1 name="WAN" disabled=no
- /interface set ether2 name="LAN" disabled=yes

- name: Add Admins Users
routeros_command:
commands:
- /user add name=admin1 password=admin1 group=read disabled=no
- /user add name=admin2 password=admin2 group=read disabled=no
- /user add name=admin3 password=admin3 group=read disabled=no
- /user add name=admin4 password=admin4 group=read disabled=no

- name: Enable Graphs
routeros_command:
commands:
- /tool graphing interface add interface=all store-on-disk=yes disabled=no
...

 

 

6.- CONFIGURACIÓN DE SSH

Para que Ansible funciona de forma automática, es necesario configurar el acceso al equipo MikroTik con llaves SSH. Lo primero que debemos hacer es generar una llave SSH (si no tenemos) para el usuario "ansible". Para generar la llave, ejecutaremos el siguiente comando desde el usuario Ansible:

ansible@debian:~$ ssh-keygen -t rsa -b 2048 -m PEM
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ansible/.ssh/id_rsa):
Created directory '/home/ansible/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/ansible/.ssh/id_rsa
Your public key has been saved in /home/ansible/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:5ivg0IDlw6c9CHyn6vNH03MpjzsBnIfKJXUscsndrRU ansible@debian
The key's randomart image is:
+---[RSA 2048]----+
| . + . .E. |
| .. * + . o |
|.= = = o |
|o.=o.B . . |
| .oO* + S . |
| ++=o B o |
| .o.o. O |
| o ...o o |
|..o.. o+ |
+----[SHA256]-----+

 

 

Una vez generada la llave, copiaremos la llave con scp (ya que ssh-copy-id no funciona) al servidor remoto de la siguiente forma:

ansible@debian:~$ scp .ssh/id_rsa.pub 192.168.1.77:
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.'s password:
id_rsa.pub ....................................... 100% 396 268.1KB/s 00:00

 

 

De forma gráfica desde WinBox, añadiremos la llave SSH desde el menú System-Users:

Conectar Ansible con Mikrotik y RouterosImportar llave SSH

 

 

En la siguiente pantalla introduciremos el nombre del usuario y seleccionaremos la llave que hemos copiado por scp:

Conectar Ansible con Mikrotik y RouterosSeleccionar fichero id_ras.pub

 

 

Una vez importada la llave, en el listado de Llaves SSH saldrá la nueva llave para el usuario ansible:

Conectar Ansible con Mikrotik y RouterosLista de llaves SSH

 

 

Para comprobar que la llave SSH está funcionando correctamente, nos conectaremos con el usuario ansible al equipo remoto y deberemos entrar sin introducir ninguna contraseña:

ansible@debian:~$ ssh 192.168.1.77

MMM MMM KKK TTTTTTTTTTT KKK
MMMM MMMM KKK TTTTTTTTTTT KKK
MMM MMMM MMM III KKK KKK RRRRRR OOOOOO TTT III KKK KKK
MMM MM MMM III KKKKK RRR RRR OOO OOO TTT III KKKKK
MMM MMM III KKK KKK RRRRRR OOO OOO TTT III KKK KKK
MMM MMM III KKK KKK RRR RRR OOOOOO TTT III KKK KKK

MikroTik RouterOS 6.45.9 (c) 1999-2020 http://www.mikrotik.com/

[ansible@MikroTik] >

 

 

7.- EJECUCION DEL PLAYBOOK DE ANSIBLE

Para ejecutar el playbook, previamente deberemos instalar desde el usuario ansible el paquete community.routeros:

ansible@debian:~$ ansible-galaxy collection install community.routeros

 

 

Una vez instalado el paquete community.routeros, ejecutaremos el playbook de la siguiente forma. Podremos ir viendo como los pasos van avanzando poco a poco. Si queremos mas detalles de la ejecución, hay que añadir -vvv a la línea de comandos:

ansible@debian:~$ ansible-playbook routeros-playbook.yml 

PLAY [mikrotiks] ***************************************

TASK [Gathering Facts] *********************************
ok: [192.168.1.77]

TASK [Change Interfaces Name] **************************
ok: [192.168.1.77]

TASK [Add Admins Users] ********************************
ok: [192.168.1.77]

TASK [Enable Graphs] ***********************************
ok: [192.168.1.77]

PLAY RECAP *********************************************
192.168.1.77 : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

 

 

8.- VERIFICACIÓN DE LOS RESULTADOS

A continuación se muestra el estado previo y el estado en el que queda el equipo MikroTik tras configurarlo a través del Playbook con Ansible:

Conectar Ansible con Mikrotik y RouterosEstado previo

 

 

Una vez aplicada la configuración detallada en el Playbook, veremos como la configuración se aplica de forma totalmente transparente para el usuario:

Conectar Ansible con Mikrotik y RouterosCambios aplicados con Ansible

 

 

ENJOY!


Acerca de Mi

RPF

Soy Ingeniero Téc. Industrial Mecánico, Administrador de Sistemas Informáticos, Desarrollador de Aplicaciones Informaticas Web, Técnico Superior en PRL, Experto en Energías Renovables... y trabajo actualmente como Senior DevOPS en HP SCDS.

Contactar conmigo

Dirección: León, España

E-Mail: Contactar

Web: https://www.raulprietofernandez.net

Skype: raul.lnx

APÚNTATE GRATIS

VIP RPF
Entra en la Comunidad VIP y consigue acceso a las descargas en PDF, Trucos y Videotutoriales ocultos y mucho más... ¡Muy Pronto!
AVISO DE COOKIES

Esta página web utiliza cookies propias y de terceros para fines funcionales (permitir la navegación web), para optimizar la navegación y personalizarla según tus preferencias asícomo para mostrarte publicidad en base a tu perfil de navegación (p.e páginas visitadas).

Privacidad