MikroTik – Część 24: GitOps, Ansible i REST API – nowoczesne zarządzanie konfiguracją MikroTik
MikroTik – kompleksowa konfiguracja sieci od podstaw do zaawansowanych rozwiązań
Część 24: GitOps, Ansible i REST API – nowoczesne zarządzanie konfiguracją MikroTik
W tradycyjnym modelu administracji infrastruktura sieciowa była konfigurowana ręcznie, co niosło za sobą ryzyko błędów, brak spójności, problemy ze skalowaniem i trudności w utrzymaniu audytowalności. W nowoczesnych środowiskach IT, zwłaszcza tych opartych o podejście DevSecOps i Zero Trust, pojawiła się potrzeba traktowania konfiguracji jako kodu (Infrastructure as Code – IaC).
W tym artykule pokażemy, jak połączyć MikroTik z procesem GitOps, używać Ansible do zarządzania urządzeniami i budować automatyczne pipeline’y z wykorzystaniem REST API RouterOS.

Czym jest GitOps?
GitOps to podejście, w którym repozytorium Git pełni rolę „źródła prawdy” dla konfiguracji infrastruktury. Zmiany w repozytorium automatycznie wywołują mechanizmy synchronizujące stan rzeczywisty infrastruktury z zapisanym kodem.
Dlaczego warto wdrożyć GitOps dla MikroTik?
- Spójność i audytowalność zmian
- Historia commitów i rollback
- Automatyzacja konfiguracji
- Integracja z CI/CD i systemami kontroli dostępu
Krok 1: Przygotowanie repozytorium Git
Struktura katalogów:
mikrotik-configs/
├── production/
│ └── core-router.rsc
├── staging/
│ └── test-router.rsc
├── roles/
│ ├── nat.yaml
│ ├── firewall.yaml
│ └── vpn.yaml
└── templates/
└── base_config.j2
Każdy plik .rsc zawiera komendy RouterOS CLI, które mogą zostać zaaplikowane do konkretnego routera. YAML-owe role zawierają dane wejściowe dla szablonów Jinja2 używanych przez Ansible.
Krok 2: Automatyzacja z Ansible
Instalacja wymaganych modułów:
pip install ansible
pip install routeros-api
inventory.ini
[mikrotik]
router1 ansible_host=192.168.88.1 ansible_user=admin ansible_password=sekret
playbook.yaml
- hosts: mikrotik
gather_facts: no
tasks:
- name: Wczytaj konfigurację bazową
routeros_command:
commands:
- /import file-name=core-router.rsc
Wgrywanie pliku konfiguracyjnego (zdalnie przez API):
- name: Skopiuj plik konfiguracyjny
ansible.builtin.copy:
src: production/core-router.rsc
dest: /root/core-router.rsc
Krok 3: REST API MikroTik (v7+)
Od RouterOS v7 dostępne jest REST API, które można wykorzystać do dynamicznego pobierania/wgrywania konfiguracji i automatyzacji działań.
Przykład: pobranie listy interfejsów
curl -k -u admin:sekret https://192.168.88.1/rest/interface
Przykład: zmiana adresu IP
curl -k -u admin:sekret -X PATCH https://192.168.88.1/rest/ip/address/0 \
-H 'Content-Type: application/json' \
-d '{"address": "192.168.1.1/24"}'
Zalety REST API:
- Bezpieczne (HTTPS)
- Możliwość integracji z dowolnym językiem (Python, Go, Bash)
- Działa niezależnie od WinBoxa
Krok 4: Integracja z CI/CD (GitLab CI, GitHub Actions)
Przykład .gitlab-ci.yml
stages:
- deploy
deploy_mikrotik:
stage: deploy
image: python:3.11
script:
- pip install routeros-api
- python deploy_config.py
deploy_config.py
from routeros_api import RouterOsApiPool
config_lines = open("production/core-router.rsc").read().splitlines()
api = RouterOsApiPool('192.168.88.1', username='admin', password='sekret', plaintext_login=True)
conn = api.get_api()
for cmd in config_lines:
conn.get_binary_resource('/').call('cli', {'command': cmd})
Krok 5: Monitorowanie i audyt
Zintegrowany system powinien rejestrować:
- kto wykonał zmianę (Git user),
- kiedy zmiana była zaaplikowana,
- różnice między wersjami,
- sukces/niepowodzenie komend,
- logi z SIEM (logowanie przez syslog i REST).
Dodatkowo można skonfigurować webhooki do Slacka/Discorda lub SIEM/SOAR informujące o każdej zmianie.
Korzyści z wdrożenia GitOps dla MikroTik
✅ Zautomatyzowana infrastruktura
✅ Wersjonowanie i rollback konfiguracji
✅ Integracja z DevSecOps
✅ Redukcja błędów manualnych
✅ Zgodność z politykami bezpieczeństwa (np. NIS2, ISO 27001)
✅ Skalowalność w środowiskach z wieloma routerami
Co dalej?
W kolejnej części (Część 25) przyjrzymy się tworzeniu dynamicznego systemu zarządzania ACL i regułami firewall w MikroTik z użyciem API, GitOps i integracji z Threat Intelligence (np. AbuseIPDB, MISP, AlienVault OTX).






