Массовое резервное копирование MikroTik (Oxidized)

0

Расскажу о массовом резервном копировании RouterOS. Будем использоваться oxidized.

В интернете много способов можно найти. Начиная от скриптов, которые отправляют файл резервной копии на почту заканчивая какими-то нереальными программами, которые используются, видимо провайдерами.

Но мне ничего не нравилось и я отправился на поиски своего решения, которое бы меня устроило.  И так вот задача:

  1. Организовать автоматическое резервное копирование RouterOS в количество 70+ штук;
  2. Желательно чтобы была версионность. Чтобы посмотреть какие изменения были сделаны (что-то типа Git);

Все наши Mikrotik расположены кто где. Разные провайдеры, разные задачи, но суть одна, что конфигурация этих устройств для нас критичны и в случае выхода из строя их очень долго и муторно восстанавливать.

Немного мат.части

И вот оно чудо, которое я так искал oxidized! Данное решение позволяет копировать не только Mikrotik, но еще и огромный список всякого разного. Ознакомиться со списком можно вот здесь: https://github.com/ytti/oxidized/blob/master/docs/Supported-OS-Types.md

Рассказываю, как у меня это устроенно.

Небольшая схема для визуализации картины.

Есть VPS в дата-центре с серой сетью. На этой ВМ установлен Docker и два контейнера Nginx Proxy Manager и Oxidized.

NGN — контейнер будет выполнять роль обычного proxy для доступа к веб-странице через интернет с ALC, потому что штатной системы авторизации у Oxidized я не нашел.

Oxidized — контейнер, который будет осуществлять резервное копирование наших Mikrotik в локальный Git.

Кстати, все управление Docker я делаю через Portainer (если не знакомы с этой панель управления — посмотрите этот видос), поэтому запись будет заточена под это. Вы можете самостоятельно все запустить без него, но я слабак и не люблю CLI. :)

 

И это не готовая инструкция, которая позволит Вам копипастом развернуть Oxidized, но тут есть все необходимое для минимальной настройки и запуска этой системы. 

 

Установка Oxidized

Запуск контейнера в Docker

Я для себя решил Oxidized засунуть в Docker Compose. Прикладываю свой Docker Compose файлик для запуска.

После успешного запуска не спишите пытаться зайти в веб-интерфейс. Он пока что не работает.

И не будет работать до тех пор, пока мы не добавим в него хотя бы одно устройств и не внесем некоторые изменения в конфигурацию.

Редактирование конфигурации Oxidized

Для редактирования конфигурации необходимо перейти в папку, где он лежит. Выполняем команду:

Открываем файл config для редактирования:

И приводим его примерно к такому виду. Делайте под себя. Я лишь приведу свой пример с комментариями. Если комментария нет — значит я это не использовал и не могу пояснить за строчку. Почитайте документацию. :)

Весь конфиг (нажмите, чтобы развернуть)

Сохраняем файл и выходим из режима редактирования. Игра «Выйти из Vim» объявляется открытой! :)

Создание базы данных с устройствами

Теперь нам необходимо создать файлик «базу данных» с нашими устройствами. В секции source, в разделе file мы указали его название и путь.

Создаем файл router.db по пути /home/oxidized/.config/oxidized/

Создаем первую нашу строчку.

Давайте это будет Mikrotik в офисе, в той же сети, что и сам Oxidized, с ip-адересом 192.168.88.1, отдельный пользователь oxidized с паролем P@$$w0Rd.

Это пока что не боевая запись, а тестовая, чтобы запустить Oxidized. Чуть дальше по этой записи я покажу подготовить и бекапить Mikrotik’и за пределами локальной сети.

И так, маску нашей базы мы задали в секции source, в разделе map, в качестве разделителя у нас выступает символ «:».

Пара замечаний:

  1. Регистр в логине важен, Oxidized != oxidized
  2. Исключите из паролей символ «:», он может считаться разделителем и запись будет не работать

 

Получается, что маска нашей записи в «базе данных» должна быть вот такая:

name:model:ip:port:username:password

Расшифровка маски:
Имя устройства:модель устройства (для Mikrotik routeros):ip-адрес устройства:порт на котором ssh:логин:пароль
Вот так выглядит наш пример:
Mirkotik_office:routeros:192.168.88.1:22:oxidized:P@$$w0Rd
Для удобства я сделал себе excel табличку для автоматического формирования строчек. Она мне помогла быстренько добавить все свои устройства. Можете ее скачать с Яндекс.Диска.
И так… мы добавили в файл router.db строчку
Завершаем редактирование, сохраняем файл. Вы же уже научились выходить из Vim? :)

Теперь нам осталось дождаться пока конфигурация обновиться и нода добавиться в Oxidized, либо перезапустить контейнер с Oxidized.

 

Подготовка Mikrotik для резервного копирования

Я не уверен, что есть смысл описывать процесс подготовки к резервному копированию. Поскольку, если Вы дошли до Oxidized, то Вам хватит и просто текстового описания в виде списка действий.

  1. Проверить, что в сервисах запущен SSH;
  2. Открыть порт 22\tcp наружу для доступа из интернета по белому списку;
  3. Создать отдельного пользователя с правами на чтение;
  4. Закинуть все в Oxidized;

Траблшут


Один из микротиков не хотел копироваться. В Oxidized внутри статусы ноды:

А в логах самого устройства такое:

Ошибка «Corrupt host’s key, regenerating it! Reboot required!»

Согласно источнику из интернета: для решения проблемы с подключением к SSH после обновления прошивки до 6.42.1 можно использовать команду

На ввести команду, нажать Y и подождать. Выглядит, словно ничего не происходит.