Contenido

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.routeros

Probando 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 ping

Deberíamos recibir la respuesta PONG si todo es correcto.

SCR-20260323-jehf.png

Creando nuestro primer Playbook

---
- hosts: mikrotik
  tasks:
    - name: Añadir IP
      routeros_command:
        commands:
        - ip/address/add address=10.10.1.2/24 interface=ether2

Ejecutar: ansible-playbook mk.yaml

ansible

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=yes

Combinando 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=ether2

Notas 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/

Compartir en Facebook Compartir en X Compartir en LinkedIn
Volver al blog
Ver todos los artículos