#1692: Интеграция Swarmica с Netbox
Отредактирована: 77 дней назадВ данной статье описана поддержка управления активами CMDB через интеграцию Swarmica с Netbox. Интеграция реализована 2 скриптами:
- Скрипт, получающий объекты Netbox(Устройства, виртуальные машины и т.д.) и создающий/обновляющий активы в Swarmica. Этот скрипт запускается с заданной периодичностью.
- Скрипт, добавляющий комментарий в объект Netbox, когда соответствующий актив добавлен/удален в заявке в Swarmica.
Инструкция
1. Создайте скрипт в Swarmica - Настройки - Скрипты и загрузите в него этот скрипт
2. Создайте Событие по расписанию в Swarmica - Настройки и прикрепите к нему скрипт, созданный в п.1
3. Добавьте контекст с содержимым вида:
{
"since": "<Дата начала>",
"object_map": [
{
"fields": ["поле1", "поле2",...],
"endpoint": "<API эндпойнт>",
"display_name": {"en": "<Отображаемое название для en локали>", "ru": "<Отображаемое название для ru локали>"},
"asset_type_name": "<Название>"
},
...
],
"netbox_host": "<NETBOX_HOST>",
"netbox_token": "<NETBOX_TOKEN>",
"verify_ssl": true|false
}
<Дата начала> - дата обновления объектов в Netbox. В Swarmica попадут и будут синхронизироваться только объекты, последнее обновление которых было после этой даты.
<NETBOX_HOST> - URL Netbox'а
<NETBOX_TOKEN> - API токен Netbox'а
"verify_ssl" - флаг о проверке SSL сертификата(по умолчанию true). Значение может быть true или false
"object_map" - маппинг объекта Netbox. В Swarmica попадут и будут синхронизироваться только объекты, удовлетворяющие указанному маппингу. В поле "fields" добавляются необходимые параметры, которые будут отображаться для актива в Swarmica.
Пример рабочего контекста:
{
"since": "2020-01-01T00:00:00Z",
"object_map": [
{
"fields": ["status", "primary_ip"],
"endpoint": "dcim.devices",
"display_name": {"en": "NetBox Device", "ru": "Устройство NetBox"},
"asset_type_name": "Устройство"
},
{
"fields": ["status", "primary_ip"],
"endpoint": "virtualization.virtual-machines",
"display_name": {"en": "NetBox VM", "ru": "Виртуальная машина NetBox"},
"asset_type_name": "Виртуальная машина"
}
],
"netbox_host": "https://netbox.host.tld",
"netbox_token": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"verify_ssl": true
}
в данном примере в Swarmica будут добавляться и синхронизироваться объекты полученные из эндпоинтов Netbox'а dcim.devices и virtualization.virtual-machines. Для каждого из объектов будут отображаться значения status и primary_ip.
Узнать endpoint объекта можно с помощью URL соответствующей страницы в панели Netbox. Например, необходимо добавить устройства. URL страницы https://netbox.host.tld/dcim/devices/. Тогда нужный endpoint - dcim.modules.
Для того, чтобы узнать название полей, откройте страницу любого устройства в Netbox в режиме API. Допустим если в обычном режиме страница устройства https://netbox.host.tld/dcim/devices/{device_id}, то в режиме API это будет https://netbox.host.tld/api/dcim/devices/{device_id}. На этой странице вы увидите данные об устройстве в JSON формате. И любой из параметров устройства можно использовать в маппинге полей.
Больше информации об объектах и их параметрах, получаемых с помощью API, можно найти в веб-интерфейсе вашей Netbox установки:
https://<NETBOX_HOST>/api/schema/swagger-ui/#/
4. Установите расписание. Например, 1 раз каждые 10 минут, т.е. */10 * * * * и установите статус Включен.
Выглядеть должно вот так:

5. Создайте Действие по событию в Swarmica - Настройки
6. Добавьте в него этот скрипт, установите Тип события Событие заявки и добавьте условие Тип события = Актив добавлен, Актив удалён
7. Добавьте контекст вида:
{
"netbox_host": "<NETBOX_HOST>",
"netbox_token": "<NETBOX_TOKEN>",
"verify_ssl": true|false
}
и установите статус Включён
Выглядеть должно вот так:
