Управление конфигурациями сетевого оборудования Eltex | Oxidized

Каждый системный / сетевой администратор в рано или поздно сталкивается с ситуацией: кто-то поправил конфиг, но не очень известно кто и когда. Дифференциальных бэкапов не было, сислог не снимался.

Как узнать что было изменено?

Долго искал подходящее решение. Нашел. 

Цели

  1. Найти бесплатное либо OpenSource решение для резервирования конфигураций сетевого оборудования. 

  2. Внедрить и использовать.

Технические подробности

Мы используем достаточно большой стэк оборудования от Eltex. Также есть и остатки Cisco, Nortel, Avaya, какое-то количество Mikrotik.

Назрела потребность реализовать управление конфигурациями этого зоопарка. Причем, регионально (по всей РФ), импортозамещенно и, конечно, бесплатно. 

Спросил у google gemini

вопрос — Системы оркестрации, совместимые с оборудованием Eltex

ответ Gemini — Отличный вопрос! Выбор системы оркестрации для оборудования Eltex напрямую зависит от масштаба вашей сети, специфических требований и целей автоматизации.

Встроенные инструменты Eltex

Прежде всего, стоит обратить внимание на встроенные инструменты управления самим оборудованием Eltex. Многие модели поддерживают:

SNMP: Стандартный протокол для мониторинга и управления сетевыми устройствами.

CLI: Командная строка для выполнения различных конфигурационных действий.

Web-интерфейс: Графический интерфейс для управления устройством через веб-браузер.

Эти инструменты позволяют осуществлять базовую оркестрацию и автоматизацию, особенно в небольших сетях или для выполнения рутинных задач.

Некоторые популярные системы оркестрации, совместимые с оборудованием Eltex:

Ansible: Сильно автоматизированная система управления конфигурацией, которая использует простой язык для описания желаемого состояния инфраструктуры.

Puppet: Система конфигурации с открытым исходным кодом, которая использует декларативный язык для управления инфраструктурой.

Chef: Еще одна популярная система конфигурации с открытым исходным кодом, которая использует инфраструктуру как код.

SaltStack: Система управления конфигурацией, которая использует мастер-агентскую архитектуру для управления удаленными системами.

CloudForms: Комплексная платформа для управления облачной инфраструктурой, которая включает в себя функции оркестрации.

Посмотрел предложенные варианты

Ansible —  мимо., успешных вариантов внедрения для коммутаторов Eltex — или нет, или я не нашел.

Eltex ECCM — всем хороша, но не бесплатна, плюс нельзя подключить оборудование других вендоров (вероятнее всего).

Oxidized — совместима, бесплатна (https://github.com/ytti/oxidized), пробуем. 

О решении 

Oxidized — это универсальное решение, поддерживающее более 130 видов устройств от различных вендоров, поэтому достаточно установить и настроить его один раз и использовать затем без оглядки на применяемое оборудование. Это значительно удобнее, чем решения, предназначенные для оборудования какого-либо отдельного производителя.

ПОЕХАЛИ НАСТРАИВАТЬСЯ

Для настройки мы будем использовать Ubuntu 22.04 LTS, коммутатор Eltex 2308B.

Oxidized написан на Ruby и поэтому его установка отличается от привычной пользователям Debian. Начнем с установки необходимых зависимостей:

apt install ruby ruby-dev libsqlite3-dev libssl-dev pkg-config cmake libssh2–1-dev libicu-dev zlib1g-dev g++ libyaml-dev

Устанавливаем Oxidized через RubyGems

gem install oxidized

gem install oxidized-script oxidized-web

gem install psych

Далее устанавливаем Git для хранения конфигураций и контроля изменений в них:

apt install git

Создаем пользователя для oxidized

useradd -s /bin/bash -m oxidized

Делаем тестовый вход 

su oxidized

oxidized

exit

Прежде всего зададим имя и пароль по умолчанию с которыми oxidized будет соединяться с сетевыми устройствами. Рекомендую использовать для этого отдельного пользователя с нестандартным именем, которого потом следует завести на всех сетевых устройствах.

В нашем случае 

0xidiZed // P@$$w0rD

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

username 0xidiZed password P@$$w0rD privilege 15

Правим файл конфигурации Oxidized по адресу 

~oxidized/.config/oxidized/config

f676e4136fe252fb35cd64a3170fc61f.png

исправляем username | password

изменяем model: eltex

меняем интервалы запроса (interval:86400) для сохранения конфигурации раз в сутки

input — изменяем с telnet на ssh, как более безопасный

c444e5a1761e551d369ccfc2e5f5d1d7.png

output отвечает за хранение собранной с устройств информации о конфигурации, мы будем использовать Git, поэтому конфигурация будет выглядеть следующим образом:

output:

   default: git

   git:

     user: oxidized

     email: oxidized@localhost.localdomain

     repo:»/home/oxidized/.config/oxidized/devices.git»

Сами ip адреса коммутаторов задаем файле базы данных роутеров (проще говоря файл csv с разделителем : ) расположенный по пути 

»/home/oxidized/.config/oxidized/router.db»

создаем необходимый файл

mcedit ~oxidized/.config/oxidized/router.db

В этом файле добавляем наш коммутатор

TstRouter:192.168.72.1

Если необходимо задать параметры авторизации отличающиеся от глобальных, задаем их 

TstRouter:192.168.72.1: User: Password

Далее, нам нужно создать юнит Systemd для работы в качестве службы, для этого копируем готовый шаблон:

cp /var/lib/gems/3.0.0/gems/oxidized-0.30.1/extra/oxidized.service /etc/systemd/system

Внимательно смотрим на номер версии, в нашем случае oxidized-0.30.1

Перечитаем содержимое systemd:

systemctl daemon-reload

Создадим директорию в /run:

mkdir /run/oxidized

И сделаем пользователя oxidized ее владельцем:

chown oxidized: oxidized /run/oxidized

Добавляем службу в автозагрузку:

systemctl enable oxidized

И запускаем ее:

systemctl start oxidized

Проверяем работу службы

systemctl status oxidized

dc4f1a527699b899040233b22d9570cf.png

Также проверяем, что служба работает на правильном порту

ss -tpln

1bdfed7dc1376444d14c8721fcb176a3.png

Настраиваем git:

git config --global user.name «oxidized»

git config --global user.email «oxidized@localhost.localdomain»

git init oxidized.git

Устанавливаем и настраиваем NGINX (oxidized не имеет своего веб сервера).

apt install nginx

перезаписываем конфигурацию по умолчанию

cat /var/lib/gems/3.0.0/gems/oxidized-0.30.1/extra/oxidized.nginx > /etc/nginx/sites-available/default

перезапускаем nginx

nginx -s reload

Заходим на страницу oxidized

281adb4c84ac1d09b73b9ef6c1c8b769.png

Если все настроили правильно — видим аналогичную картинку.

Проверяем работу (сохраняем конфигурацию роутера, изменяем конфигурацию, сохраняем конфигурацию повторно)

27c6dd559d26cd693cf8e362b993e4a8.png

Для начала — все. 

После необходимо будет добавить оборудование других вендоров, настроить шифрование, TLS, поделить оборудование на группы, и т.д. и т.п.

Продолжение следует.

© Habrahabr.ru