La integración de Mikrotik y Ansible es una poderosa combinación para administrar redes. Al usar Ansible, los administradores de red pueden gestionar rápida y fácilmente sus dispositivos Mikrotik sin tener que iniciar sesión manualmente en cada dispositivo.
¿Qué es Ansible?
Ansible es una plataforma de automatización de código abierto que simplifica el proceso de desarrollo de software y las operaciones de TI. Permite automatizar todo el ciclo de vida de la infraestructura.
Instalación de Ansible en Ubuntu
$ sudo apt update
$ sudo apt install software-properties-common
$ sudo add-apt-repository --yes --update ppa:ansible/ansible
$ sudo apt install ansible¿Cómo funciona Ansible?
Ansible funciona utilizando módulos integrados y archivos en formato YAML para realizar las configuraciones, esto se llama PlayBooks. Tendremos que configurar 3 secciones: archivo de configuración general, inventario y playbooks.
Archivo de inventario
[mikrotik]
router ansible_host=10.100.1.254
[mikrotik:vars]
ansible_connection=ansible.netcommon.network_cli
ansible_network_os=community.routeros.routeros
ansible_user=admin
ansible_ssh_pass=contraseña¿Cómo se conecta Ansible a Routers Mikrotik?
Para integrar Ansible con routers Mikrotik es necesario instalar la colección community.routeros:
ansible-galaxy collection install community.routerosProbando la conexión con nuestro router
Ya hemos configurado el archivo de inventario e instalado la colección de RouterOS, probaremos si todo es correcto, vamos a ejecutar el siguiente comando:
ansible all -m pingDeberíamos recibir la respuesta PONG si todo es correcto.

Creando nuestro primer Playbook
---
- hosts: mikrotik
tasks:
- name: Añadir IP
routeros_command:
commands:
- ip/address/add address=10.10.1.2/24 interface=ether2Ejecutar: ansible-playbook mk.yaml

Ejemplos de Playbooks
Creando reglas de Firewall
---
- hosts: mikrotik
vars:
fw:
- name: port_80
dst_port: 80
src_address: 201.10.20.1
- name: port_3306
dst_port: 3306
src_address: 201.10.20.1
tasks:
- name: Configure FW
routeros_command:
commands:
- ip/firewall/filter/add chain=forward src-address="{{ item.src_address }}" protocol=tcp dst-address=10.200.1.1 dst-port="{{ item.dst_port }}"
loop: "{{ fw }}"Aplicando configuraciones de seguridad
- ip/service/set telnet,ftp,www,api,api-ssl disabled=yesCombinando bucles en Mikrotik
- name: Configure VLANs
routeros_command:
commands:
- :for e from 1 to 100 do={ /interface vlan add name="vlan-$e" interface=ether6 vlan-id=$e }Idempotencia en Ansible
El módulo Mikrotik en Ansible no cuenta actualmente con idempotencia nativa. La solución es eliminar antes de crear:
- name: Masquerade
routeros_command:
commands:
- /ip firewall nat remove [find where out-interface=ether2]
- /ip firewall nat add chain=srcnat action=masquerade out-interface=ether2Notas finales
Esperamos esta guía te haya sido de utilidad para comenzar la automatización de tu red Mikrotik con Ansible, a continuación te ofrecemos documentación adicional.
Como ya lo hemos comentado en entradas anteriores, Ansible se puede instalar vía contenedores en nuestro router, en la próxima entrada hablaremos de como hacerlo.
Documentación: Ansible | Módulo RouteOS | YAML
Módulo RouteOS en Ansible: https://galaxy.ansible.com/community/routeros
Lenguaje en YAML: https://yaml.org/spec/1.2.2/