#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
}

и установите статус Включён

Выглядеть должно вот так: