MikroTik – Część 24: GitOps, Ansible i REST API – nowoczesne zarządzanie konfiguracją MikroTik
Sieci komputerowe

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.

MikroTik – Część 24: GitOps, Ansible i REST API – nowoczesne zarządzanie konfiguracją MikroTik
MikroTik – Część 24: GitOps, Ansible i REST API – nowoczesne zarządzanie konfiguracją MikroTik

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

Czytaj  BGP4+ – Opis oraz Konfiguracja

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

 

Polecane wpisy
Konfiguracja MikroTik – Część 44: Integracja MikroTik z systemem monitoringu Grafana i Prometheus
Konfiguracja MikroTik – Część 44: Integracja MikroTik z systemem monitoringu Grafana i Prometheus

Konfiguracja MikroTik – Część 44: Integracja MikroTik z systemem monitoringu Grafana i Prometheus W czterdziestej czwartej części serii o konfiguracji Czytaj dalej

IPv6 – Co to jest, dlaczego jest potrzebne i jak działa?
IPv6 – Co to jest, dlaczego jest potrzebne i jak działa?

🌐 IPv6 – Co to jest, dlaczego jest potrzebne i jak działa? 📘 Wprowadzenie IPv6 (Internet Protocol version 6) to Czytaj dalej