# Интеграция Swarmica с Netbox
В данной статье описана поддержка управления активами CMDB через интеграцию Swarmica с Netbox. Интеграция реализована 2 скриптами:

*   Скрипт, получающий объекты Netbox(Устройства, виртуальные машины и т.д.) и создающий/обновляющий активы в Swarmica. Этот скрипт запускается с заданной периодичностью.
*   Скрипт, добавляющий комментарий в объект Netbox, когда соответствующий актив добавлен/удален в заявке в Swarmica.&#x20;

# Инструкция

1\. Создайте скрипт в **Swarmica - Настройки - Скрипты** и загрузите в него этот [скрипт](/attachments/Q/9/Q92Qw7uSr2fXI1cv_a/netbox_recurring_sync.py)&#x20;

2\. Создайте Событие по расписанию в **Swarmica - Настройки** и прикрепите к нему скрипт, созданный в п.1

3\. Добавьте контекст с содержимым вида:

```json
{
  "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
}
```

&#x20;\<Дата начала> - дата обновления объектов в Netbox. В Swarmica попадут и будут синхронизироваться только объекты, последнее обновление которых было после этой даты.
\<NETBOX\_HOST> - URL Netbox'а
\<NETBOX\_TOKEN> - API токен Netbox'а
"verify\_ssl" - флаг о проверке SSL сертификата(по умолчанию true). Значение может быть `true` или `false`
"object\_map" - маппинг объекта Netbox. В Swarmica попадут и будут синхронизироваться только объекты, удовлетворяющие указанному маппингу. В поле "fields" добавляются необходимые параметры, которые будут отображаться для актива в Swarmica.

Пример рабочего контекста:

```json
{
  "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 \* \* \* \* и установите статус Включен.

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

![](https://support.swarmica.com/attachments/9/-/9-2skFY3UC1yeSKM_a/изображение.png)

5\. Создайте **Действие по событию** в **Swarmica - Настройки**

6\. Добавьте в него этот [скрипт](/attachments/4/4/44ShPi2Zqivo0yJ2_a/netbox_add_comment.py), установите **Тип события** `Событие заявки` и добавьте условие `Тип события = Актив добавлен, Актив удалён`

7\. Добавьте контекст вида:

```txt
{
  "netbox_host": "<NETBOX_HOST>",
  "netbox_token": "<NETBOX_TOKEN>",
  "verify_ssl": true|false
}
```

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

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

![](https://support.swarmica.com/attachments/c/A/cASqspE-Y0XmEdHy_a/изображение.png)