diff --git a/Dockerfile-Plugins b/Dockerfile-Plugins index f7fd9ec..a84851e 100644 --- a/Dockerfile-Plugins +++ b/Dockerfile-Plugins @@ -1,4 +1,6 @@ -FROM netboxcommunity/netbox:latest +# Базовый тег зафиксирован (v4.6-5.0.2 = NetBox 4.6.10) вместо плавающего :latest, +# чтобы пересборки не уезжали на новую мажорную версию NetBox без явного решения. +FROM netboxcommunity/netbox:v4.6-5.0.2 COPY ./plugin_requirements.txt /opt/netbox/ RUN /usr/local/bin/uv pip install -r /opt/netbox/plugin_requirements.txt # Скопируйте конфигурацию, если она у вас есть diff --git a/README-NETBOX-MCP.md b/README-NETBOX-MCP.md index d32d8f7..336c83b 100644 --- a/README-NETBOX-MCP.md +++ b/README-NETBOX-MCP.md @@ -30,6 +30,7 @@ mcp_servers: ## Доступ к NetBox - NetBox работает в docker (контейнер `netbox-netbox-1`, порт `8080` на хосте). +- Версия NetBox: **4.6.10** (Community, netbox-docker `v4.6-5.0.2`), образ `netbox-kupazh:latest` (кастомный, с плагинами), базовый `netboxcommunity/netbox:v4.6-5.0.2`. - Внутри docker-сети `netbox_default` контейнер доступен по имени `netbox-netbox-1` (IP 172.19.0.5). - С хоста прямой доступ к API по `127.0.0.1:8080` даёт 403 (ALLOWED_HOSTS/прокси), поэтому MCP-сервер ходит по docker-IP. - Аутентификация: **v1 API токен** (`Authorization: Token <40-символов>`), т.к. v2-токены в этой кастомной модели имеют ограничение key ≤12 символов и HMAC-дигест — с ними были проблемы в CLI-тестах. @@ -73,10 +74,39 @@ cd /opt/netbox-mcp-server && echo '{"jsonrpc":"2.0","id":1,"method":"initialize" ## Замечания - Плагины NetBox (netbox-dns и др.) не включены в discovery (`ENABLE_PLUGIN_DISCOVERY=false`) — при необходимости включить отдельно; их запись управляется `PLUGIN_WRITE_RULES`. -- Многие плагины (netbox_secrets, netbox_qrcode, netbox_floorplan) не загружаются — требуют NetBox ≤4.5.99, а тут 6.0.4. +- Многие плагины (netbox_secrets, netbox_qrcode, netbox_floorplan) не загружались — требовали NetBox ≤4.5.99; **после обновления плагинов (2026-09-03) все 14 загружаются** (см. историю изменений). ## История изменений +### 2026-09-03 — Обновление плагинов + +Обновлены все 14 установленных плагинов до актуальных версий на PyPI (совместимых с NetBox 4.6), NetBox обновлён с 4.6.0 до 4.6.10 (базовый образ `netboxcommunity/netbox:latest` → зафиксирован `v4.6-5.0.2`). + +| Плагин | Было | Стало | +|---|---|---| +| netbox-plugin-prometheus-sd | 1.3.0 | 2.0.0 (устранены N+1 запросы) | +| netbox-lists | 4.0.4 | 4.0.4 (=) | +| netbox-inventory | 2.6.0 | 2.6.1 | +| netbox-interface-synchronization | 4.5.8 | 4.5.8 (=) | +| netbox-documents | 0.8.2 | 0.8.5 | +| netbox-contract | 2.4.5 | 2.4.7 | +| netbox-data-flows | 1.5.2 | 1.5.4 | +| netbox-config-diff | 2.14.2 | 2.15.2 | +| netbox-attachments | 11.2.1 | 11.3.1 | +| netbox-topology-views | 4.5.1 | 4.5.1 (=) | +| netbox-reorder-rack | 1.1.4 | 1.1.4 (=) | +| netbox-secrets | 3.0.2 | 3.1.1 | +| netbox-qrcode | 0.0.20 | 0.0.21 | +| netbox-floorplan-plugin | 0.9.1 | 0.9.2 | + +Ключевые результаты: + +1. **Исправлена скрытая поломка конфига config-diff**: ключ в `PLUGINS_CONFIG` был `"netbox-config-diff"` (с дефисом) вместо `"netbox_config_diff"` (с подчёркиванием). Новая версия 2.15.2 жёстко требует `USERNAME`/`PASSWORD` (required_settings) — из-за неправильного ключа сборка падала на collectstatic. Ключ исправлен, значения прописаны. +2. **Ожили 4 плагина**: netbox_config_diff, netbox_secrets, netbox_qrcode, netbox_floorplan раньше не загружались (требовали NetBox ≤4.5.99). Обновлённые версии поддерживают 4.6 — теперь **все 14 плагинов активны** (миграции накатаны). +3. **netbox-qrcode**: пропущен 1.0.0 (таргетит NetBox 4.7) — взят 0.0.21 (последний с поддержкой 4.6.x). +4. **Исправлен housekeeping**: в `docker-compose.override.yml` у сервиса не было `DB_HOST`/`DB_NAME`/`DB_USER`/`DB_PASSWORD` — контейнер падал с «connection refused» к postgres. Добавлены переменные (как у netbox). Теперь housekeeping успешно выполняется. +5. **plugin_requirements.txt** теперь с жёсткими пинами `==` (было без версий) — воспроизводимая сборка. Бэкап-тег образа: `netbox-kupazh:pre-upgrade-20260903`. + ### 2026-09-03 — Развёртывание и отладка Развёрнут MCP-сервер (read-only). Ключевые находки при отладке: @@ -90,6 +120,6 @@ cd /opt/netbox-mcp-server && echo '{"jsonrpc":"2.0","id":1,"method":"initialize" ## TODO (ожидающие задачи) - [ ] Включить write-режим: write-токен (`write_enabled=True`), ObjectPermission с actions `['view','add','change','delete']` на нужные типы, сменить `NETBOX_TOKEN` в конфиге Hermes, проверить на тестовых объектах (site/tag). -- [ ] **Обновление плагинов**: проверить, какие версии установленных плагинов (см. `/opt/netbox/plugin_requirements.txt`) устарели относительно PyPI, чтобы решить, стоит ли пересобирать образ `netbox-kupazh:latest` (базовый `netboxcommunity/netbox:4.6-5.0.1`). +- [x] **Обновление плагинов**: сверить версии с PyPI, пересобрать образ, проверить загрузку. Выполнено 2026-09-03: все 14 плагинов обновлены до свежих версий (совместимых с NetBox 4.6), NetBox 4.6.0 → 4.6.10. Детали в истории изменений. - [ ] (Опция) Включить plugin discovery (`ENABLE_PLUGIN_DISCOVERY=true`) и `PLUGIN_WRITE_RULES` для плагинов (netbox-dns и др.), после отладки core. - ~~(Отклонено) HTTP-транспорт для внешних клиентов~~ — не планируется, интеграция только через Hermes (stdio). \ No newline at end of file diff --git a/configuration/plugins.py b/configuration/plugins.py index 9c3e458..06f8d8b 100644 --- a/configuration/plugins.py +++ b/configuration/plugins.py @@ -153,9 +153,10 @@ PLUGINS_CONFIG = { "netbox-data-flows": { # https://github.com/Alef-Burzmali/netbox-data-flows/ }, - "netbox-config-diff": { + "netbox_config_diff": { # https://github.com/miaow2/netbox-config-diff #define credentials for devices connection: + # Новая версия (2.15+) требует эти поля обязательно — см. required_settings в __init__.py "USERNAME": "foo", "PASSWORD": "bar", "AUTH_SECONDARY": "foobar", # define here password for accessing Privileged EXEC mode, this variable is optional diff --git a/docker-compose.yml b/docker-compose.yml index 8a40ba5..078ca25 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,6 @@ services: netbox: &netbox - image: docker.io/netboxcommunity/netbox:${VERSION-v4.6-5.0.1} + image: docker.io/netboxcommunity/netbox:${VERSION-v4.6-5.0.2} depends_on: - postgres - redis diff --git a/plugin_requirements.txt b/plugin_requirements.txt index 5e63f4e..85112b0 100644 --- a/plugin_requirements.txt +++ b/plugin_requirements.txt @@ -1,14 +1,14 @@ -netbox-plugin-prometheus-sd -netbox-lists -netbox-inventory -netbox-interface-synchronization -netbox-documents -netbox-contract -netbox-data-flows -netbox-config-diff -netbox-attachments -netbox-topology-views -netbox-reorder-rack -netbox-secrets -netbox-qrcode -netbox-floorplan-plugin +netbox-plugin-prometheus-sd==2.0.0 +netbox-lists==4.0.4 +netbox-inventory==2.6.1 +netbox-interface-synchronization==4.5.8 +netbox-documents==0.8.5 +netbox-contract==2.4.7 +netbox-data-flows==1.5.4 +netbox-config-diff==2.15.2 +netbox-attachments==11.3.1 +netbox-topology-views==4.5.1 +netbox-reorder-rack==1.1.4 +netbox-secrets==3.1.1 +netbox-qrcode==0.0.21 +netbox-floorplan-plugin==0.9.2 \ No newline at end of file