Инвентаризация хостов Esxi в NetBox

Версия 1.1 от Антон Волков на 2024/11/18 00:23

Иногда в организации есть хренова тьма хостов с еще большей хреновой тьмой виртуальных машин, а при отсутствии системы управления например Vcenter или VMM запутаеться где какая ВМ проще чем кажется на первый взгляд.

Так же NetBox можно использовать в качестве "Источника истины" для добавления хостов сети в системы мониторинга на подобии Zabbix через REST API.

Данный скрипт создает сайты, устройства, платформы, интерфейсы устройств и виртуальные машины, а так же привязывает ip адреса к интерфейсам.

Установка

Ставим необходимые пакеты, скачиваем скрипт с GitHub или здесь, проваливаемся в каталог со скриптом.

# pkg install libxml2 libxslt
--- Активируем виртуальное окружение для Python (Будем использовать venv Netbox)---
$ cd /usr/local/share/netbox-scripts/
$ python3.11 -m venv venv
$ . venv/bin/activate
(venv)$ git clone https://github.com/bb-Ricardo/netbox-sync.git
(venv)$ cd netbox-sync/
(venv)$ pip install --upgrade pip
(venv)$ pip install wheel
(venv)$ pip install -r requirements.txt

Тут уже при установке зависимостей у нас может выскочить проблема с разрешением зависимостей для модуля cython, есть два варианта решения:

1 вариант
(venv)$ echo "cython<3" > /tmp/constraint.txt
(venv)$ PIP_CONSTRAINT=/tmp/constraint.txt pip install -r requirements.txt
2 вариант
(venv)$ pip install "cython<3.0.0" wheel
(venv)$ pip install "pyyaml==5.4.1" --no-build-isolation
(venv)$ pip install -r requirements.txt

vsphere-automation-sdk должен быть так же установлен для синхронизации VCenter с Netbox.

Качам отсюда для локальной установки или с GitHub

(venv)$ pip install --upgrade git+https://github.com/vmware/vsphere-automation-sdk-python.git

 Получаем token

1727849741209-465.png

Редактируем settings.ini:

[netbox]
api_token = e34994b01df8ef81a57772336d2005d699118a02
host_fqdn = netbox.example.com
port = 443
validate_tls_certs = False
  

[source/Vcenter]
enabled = True
type = vmware
host_fqdn = 172.16.1.100
port = 443
username = netbox@example.com
password = P@ssw0rd
validate_tls_certs = False
permitted_subnets = 172.16.0.0/12, 10.0.0.0/8, 192.168.0.0/16, fd00::/8, !10.23.42.0/24

Указываем адрес сервера, token, порт и отключаем проверку сертификатов.

Данный скрипт работает как с Vcenter, так и с отдельными хостами ESXI.

Запускаем скрипт

(venv)$ python3.11 net-scan.py -c settings.ini

После выполнения скрипта можно удостовериться, что у нас все добавилось.

1727803773349-617.png1727803855005-821.png