Что за коробка такая — NetBox

Posted by bubnovd on Saturday, January 14, 2023

Пост перенесен с платформы Medium. Оригинальный пост датирован 2019 годом. Поэтому часть информации могла устареть, но суть не изменилась

Обложка: В кафе “Шеф”, Алма-Ата 14.09.2022

В мире сетевой (и не только) автоматизации нужно где-то хранить данные об устройствах: модель, количество интерфейсов, VLAN’ы, учетные данные (да, не все пользуются RADIUS’ом и ему подобными). Самый простой способ — Excel файлик: быстро, легко, удобно. Так же быстро, легко и удобно он превращается в неактуальную помойку. Ещё есть разные системы инвентаризации, GLPI например.

DigitalOcean подошел к этой задаче со своей стороны и подарил сообществу открытую модульную DCIM/IPAM систему NetBox.

DCIM — DataCenter Infrastructure Management — система, описывающая инфраструктуру: оборудование, виртуальные машины, параметры устройств

IPAM — IP Addresses Management — система управления IP адресами. Представляет удобный интерфейс для менеджмента IP: префиксы, подсети, VRF, свободные адреса

1.png

Что же дают нам эти DCIM/IPAM? Кроме, собственно базы данных оборудования и адресов. У NetBox’a есть API, который позволяет интегрировать его с другими системами.

Система мониторинга опрашивает сетевые устройства по SNMP. Инженеры ставят новый коммутатор, записывают данные в Excel файлик. Служба мониторинга обрабатывает эксельку раз в день. Коммутатор начинает тупить через час после установки, на мониторинге это не отражается, клиенты недовольны. Знакомая ситуация?

Ещё пример:

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

free-addresses.png

Ну что, убедил?

Что же даёт нам NetBox? Это реляционная база данных, все элементы которой связаны друг с другом. К префиксам (подсетям) привязаны IP адреса, которые привязаны к конкретным интерфейсам/VLAN’ам оборудования, которое привязано к месту в стойке, которая привязана к географическому адресу филиала. В системе также есть сущность “кабель”, которая соединяет между собой девайсы. Ещё есть:

  • описание провайдеров
  • автономных систем
  • VRF
  • секреты (пароли/токены и т.д., хранящиесе в шифрованном виде)
  • PDU (Power Distribution Unit) и силовые кабели
  • виртуальные машины
  • ноды
  • кластеры
  • сервисы и их типы
  • всё, что вам может пригодиться. Сомневаюсь, что ваши требования масштабнее требований разработчика — DigitalOcean

device-list.png

И самая мяготка — REST API и библиотека для Python pynetbox и серия статей по её использованию. API позволяет интегрировать NetBox с любой системой: мониторинг, Configuration Management, логи, бэкапы, один-простигосподи-эс, всё, что придет в голову. Есть сторонние модули, которые могут нарисовать карту сети исходя из данных NetBox’a, никто не запрещает написать свой модуль.

Интегрируем с Proxmox, создаем в системе вирутуальную машину с нужными характерстиками и — вжух! — виртуалка с нужными параметрами создана. Без необходимости давать доступ к гипервизору юзерам.

Есть уже готовые проекты для интеграции с Ansible, Prometheus, NAPALM, Proxmox, ещё Ansible. Антон Карнелюк написал целую серию постов об автоматизации сети с помощью NetBox.

switch.png

Шаблоны

На основании данных из системы можем создавать различные шаблоны. Например, для генерации конфигов сетевого оборудования. Шаблоны очень похожи на Jinja2

Отчеты

Удобочитаемые отчеты о состоянии инфраструктуры. Например:

  • Все ToR свитчи имеют консольное подключение
  • На всех роутерах есть лупбэк с IP адресом
  • Есть валидный комментарий на всех интерфейсах
  • Каждый филиал обладает нужным количеством VLAN’ов

Webhooks

Можно дергать запросы к другим системам при изменениях в NetBox’е. Создал новый объект — получи уведомление с его параметрами на почту и в Telegram. Изменил VRF на устройстве —примени его с помощью Ansible или NAPALM и увидь изменения в реальном времени.

Point of Truth

И, пожалуй, самое важное. Работа с NetBox должна идти по философии Network Point of Truth. То есть NetBox является единственной точкой доверия в сети. Всё, что происходит в сети должно быть немедленно зафиксировано в нетбоксе. Всё, что изменилось в нетбоксе должно немедленно примениться в инфраструктуре.

И это уже нетехническая задача. Нужны изменения в культуре и процессах, чтобы это работало. И когда это заработает, инфраструктурщики получат счастье, коммунизм, дзен и оргазм разом. Потому что автоматизация — наше всё!


comments powered by Disqus