В документации 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