В документации NetBox указано, что инструмент предназначен для того, чтобы выступать в качестве “Источника истины”. Автоматический импорт настоятельно не рекомендуется.

Есть решение для тех, кто хочет получить функциональность автоматического импорта ВМ, сетей и прочих сущностей из VmWare в NetBox в автоматическом режиме: netbox-sync

Требования

На момент написания статьи


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

  • python >= 3.6
  • NetBox >= 2.9
  • VMWare vCenter >= 6.0

Пакеты Python:

  • packaging
  • requests==2.24.0
  • wheel
  • pyvmomi==6.7.3
  • aiodns==2.0.0

Установка


В примере устанавливаем на Debian 11

Установим пакет для создания окружения:

1apt-get update && apt-get install python3-venv

Склонируем репозиторий и создадим вирутальное окружение:

 1cd /opt
 2
 3git clone https://github.com/bb-Ricardo/netbox-sync.git
 4
 5cd netbox-sync
 6
 7python3 -m venv .venv
 8
 9. .venv/bin/activate
10
11pip3 install -r requirements.txt || pip install -r requirements.tx

Настройка


Скопируем файл settings-example.ini в settings.ini

Добавим пользователя VM-WARE и API Token пользователя NetBox, так же укажем их адреса.

Пример минимальных настроек (заметье, валидация TLS выключена):

 1[common]
 2
 3[netbox]
 4api_token = TOKEN_FROM_NETBOX
 5host_fqdn = netbox.0xbbeer.ru
 6validate_tls_certs = false
 7
 8[source/NSGC-VC]
 9type = vmware
10host_fqdn = vc.0xbbeer.ru
11validate_tls_certs = false
12username = USER_FROM_VMWARE@vc.local
13password = STONG_PASSWORD_USER_FROM_VMWARE
14permitted_subnets = 172.16.0.0/12, 10.0.0.0/8, 192.168.0.0/16, fd00::/8

Запуск синхронизации

Доступные параметры:

 1usage: netbox-sync.py [-h] [-c settings.ini]
 2                      [-l {DEBUG3,DEBUG2,DEBUG,INFO,WARNING,ERROR}] [-n] [-p]
 3
 4Sync objects from various sources to NetBox
 5
 6Version: 1.2.3 (2022-04-09)
 7Project URL: https://github.com/bb-ricardo/netbox-sync
 8
 9optional arguments:
10  -h, --help            show this help message and exit
11  -c settings.ini, --config settings.ini
12                        points to the config file to read config data from
13                        which is not installed under the default path
14                        './settings.ini'
15  -l {DEBUG3,DEBUG2,DEBUG,INFO,WARNING,ERROR}, --log_level {DEBUG3,DEBUG2,DEBUG,INFO,WARNING,ERROR}
16                        set log level (overrides config)
17  -n, --dry_run         Operate as usual but don't change anything in NetBox.
18                        Great if you want to test and see what would be
19                        changed.
20  -p, --purge           Remove (almost) all synced objects which were create
21                        by this script. This is helpful if you want to start
22                        fresh or stop using this script.

Синхронизация:

1/opt/netbox-sync/.venv/bin/python3 /opt/netbox-sync/netbox-sync.py

Cron

Для регулярного обновления добавьте задание в Cron:

1 # NetBox Sync
2 23 */2 * * *  /opt/netbox-sync/.venv/bin/python3 /opt/netbox-sync/netbox-sync.py >/dev/null 2>&1