В мире сетевой (и не только) автоматизации нужно где-то хранить данные об устройствах: модель, количество интерфейсов, VLAN’ы, учетные данные (да, не все пользуются RADIUS’ом и ему подобными). Самый простой способ — Excel файлик: быстро, легко, удобно. Так же быстро, легко и удобно он превращается в неактуальную помойку. Ещё есть разные системы инвентаризации, GLPI например.
DigitalOcean подошел к этой задаче со своей стороны и подарил сообществу открытую модульную DCIM/IPAM систему NetBox.
DCIM — DataCenter Infrastructure Management — система, описывающая инфраструктуру: оборудование, виртуальные машины, параметры устройств
IPAM — IP Addresses Management — система управления IP адресами. Представляет удобный интерфейс для менеджмента IP: префиксы, подсети, VRF, свободные адреса
Что же дают нам эти DCIM/IPAM? Кроме, собственно базы данных оборудования и адресов. У NetBox’a есть API, который позволяет интегрировать его с другими системами.
Система мониторинга опрашивает сетевые устройства по SNMP. Инженеры ставят новый коммутатор, записывают данные в Excel файлик. Служба мониторинга обрабатывает эксельку раз в день. Коммутатор начинает тупить через час после установки, на мониторинге это не отражается, клиенты недовольны. Знакомая ситуация?
Ещё пример:
Поставили железку. Инвентарник надо записать в бухгалтерскую систему, завести в мониторинг, отчитаться об адресе установки в какой-то системе отчетности, описать назначение портов в карте сети. А каждая система — это ручная работа и вероятность ошибки. А через неделю к железке подключают новое устройство и данные во всех системах нужно изменить. Руками.
Ну что, убедил?
Что же даёт нам NetBox? Это реляционная база данных, все элементы которой связаны друг с другом. К префиксам (подсетям) привязаны IP адреса, которые привязаны к конкретным интерфейсам/VLAN’ам оборудования, которое привязано к месту в стойке, которая привязана к географическому адресу филиала. В системе также есть сущность “кабель”, которая соединяет между собой девайсы. Ещё есть:
- описание провайдеров
- автономных систем
- VRF
- секреты (пароли/токены и т.д., хранящиесе в шифрованном виде)
- PDU (Power Distribution Unit) и силовые кабели
- виртуальные машины
- ноды
- кластеры
- сервисы и их типы
- всё, что вам может пригодиться. Сомневаюсь, что ваши требования масштабнее требований разработчика — DigitalOcean
И самая мяготка — REST API и библиотека для Python pynetbox и серия статей по её использованию. API позволяет интегрировать NetBox с любой системой: мониторинг, Configuration Management, логи, бэкапы, один-простигосподи-эс, всё, что придет в голову. Есть сторонние модули, которые могут нарисовать карту сети исходя из данных NetBox’a, никто не запрещает написать свой модуль.
Интегрируем с Proxmox, создаем в системе вирутуальную машину с нужными характерстиками и — вжух! — виртуалка с нужными параметрами создана. Без необходимости давать доступ к гипервизору юзерам.
Есть уже готовые проекты для интеграции с Ansible, Prometheus, NAPALM, Proxmox, ещё Ansible. Антон Карнелюк написал целую серию постов об автоматизации сети с помощью NetBox.
Шаблоны
На основании данных из системы можем создавать различные шаблоны. Например, для генерации конфигов сетевого оборудования. Шаблоны очень похожи на Jinja2
Отчеты
Удобочитаемые отчеты о состоянии инфраструктуры. Например:
- Все ToR свитчи имеют консольное подключение
- На всех роутерах есть лупбэк с IP адресом
- Есть валидный комментарий на всех интерфейсах
- Каждый филиал обладает нужным количеством VLAN’ов
Webhooks
Можно дергать запросы к другим системам при изменениях в NetBox’е. Создал новый объект — получи уведомление с его параметрами на почту и в Telegram. Изменил VRF на устройстве —примени его с помощью Ansible или NAPALM и увидь изменения в реальном времени.
Point of Truth
И, пожалуй, самое важное. Работа с NetBox должна идти по философии Network Point of Truth. То есть NetBox является единственной точкой доверия в сети. Всё, что происходит в сети должно быть немедленно зафиксировано в нетбоксе. Всё, что изменилось в нетбоксе должно немедленно примениться в инфраструктуре.
И это уже нетехническая задача. Нужны изменения в культуре и процессах, чтобы это работало. И когда это заработает, инфраструктурщики получат счастье, коммунизм, дзен и оргазм разом. Потому что автоматизация — наше всё!
Это мой первый пост на Medium
У меня есть блог на blogger, куда я перестал писать из-за неудобства этой платформы. Blogger безнадежно устарел: нет подсветки кода, удобного форматирования. Так что я тестирую разные варианты. Но на старом движке у меня остались интересные посты, например:
- OSPF в Mikrotik
- Бэкапы в Git с Oxidized
- Автоопределение прокси в домене Windows
- IPSec over L2TP между RouterOS и Apple iOS 10
Есть ещё пара постов в Telegraph:
Возможно, я останусь на медиуме. Но самая свежая информация появляется в моем Telegram канале Mikrotik Ninja. Канал начинался в качестве распространения инфы о Mikrotik и том, что мне интересно. Постепенно я ухожу в автоматизацию, но название канала менять не буду, ведь с Mikrotik я в очень близких отношениях.
Присоединяйтесь, чтобы не пропустить новую информацию. Да пребудет с вами АДСМ