NetBox. Плагины
2024-07-22
·
3 мин. для прочтения
Плагины NetBox.
Содержание
1 Общая информация
- Основные плагины: https://netboxlabs.com/netbox-plugins/
- Плагины NetBox являются приложениями Django.
- Плагины могут добавлять свои собственные модели и представления, но не могут вмешиваться в работу существующих компонентов.
- Архитектура плагинов NetBox позволяет следующее:- добавлять новые модели данных;
- добавлять новые URL-адреса и представления.- могут регистрировать URL-адреса /pluginsдля предоставления пользователям возможности просмотра;
 
- могут регистрировать URL-адреса 
- добавлять контент в существующие шаблоны моделей;
- добавлять пункты в меню навигации;
- добавлять собственное промежуточное программное обеспечение;
- объявлять параметры конфигурации;- параметры конфигурации определяются пользователем в разделе PLUGINS_CONFIGвconfiguration.py.
 
- параметры конфигурации определяются пользователем в разделе 
 
2 Установка плагинов
2.1 Установите пакет Python
- Загрузите и установите пакет Python плагина, следуя инструкциям по установке.
- Плагины, публикуемые через PyPI, обычно устанавливаются с помощью утилиты pipкомандной строки.
- Обязательно установите плагин в виртуальной среде NetBox.source /opt/netbox/venv/bin/activate (venv) $ pip install <package>
- Альтернативно, можно установить плагин вручную:python setup.py install
2.2 Включите плагин
- В configuration.pyдобавьте имя плагина в списокPLUGINS:PLUGINS = [ # ... 'plugin_name', ]
2.3 Настройте плагин
- Если плагин требует какой-либо настройки, задайте её в /opt/netbox/netbox/netbox/configuration.pyв параметреPLUGINS_CONFIG:PLUGINS_CONFIG = { 'plugin_name': { 'foo': 'bar', 'buzz': 'bazz' } }
2.4 Запустите миграцию базы данных
- Если плагин вводит новые модели базы данных, выполните миграцию схемы:(venv) $ cd /opt/netbox/netbox/ (venv) $ python3 manage.py migrate
2.5 Статические файлы
- Плагины могут упаковывать статические ресурсы, такие как изображения или скрипты, для непосредственного обслуживания HTTP-интерфейсом.
- Убедитесь, что они скопированы в статический корневой каталог с именем collectstatic:(venv) $ cd /opt/netbox/netbox/ (venv) $ python3 manage.py collectstatic
2.6 Перезапустите службу WSGI
- Перезапустите службу WSGI:systemctl restart netbox netbox-rq
3 Удаление плагинов
3.1 Отключите плагин
- Отключите плагин, удалив его из списка PLUGINSсписок вconfiguration.py.
3.2 Удалите конфигурацию
- Удалите запись о плагине в словаре PLUGINS_CONFIGвconfiguration.py.
3.3 Переиндексируйте записи поиска
- Запустите команду reindexдля переиндексации глобальной поисковой системы.
- Это удалит все устаревшие записи, относящиеся к объектам, предоставляемым плагином:cd /opt/netbox/netbox/ source /opt/netbox/venv/bin/activate (venv) $ python3 manage.py reindex
3.4 Удалите пакет Python
- Используйте pip, чтобы удалить установленный плагин:source /opt/netbox/venv/bin/activate (venv) $ pip uninstall <package>
3.5 Перезапустите службу WSGI
- Перезапустите службу WSGI:systemctl restart netbox
3.6 Удалите таблицы базы данных
- Этот шаг необходим только для плагинов, которые создали одну или несколько таблиц базы данных.
- Войдите в оболочку базы данных PostgreSQL (manage.py dbshell), чтобы определить, создал ли плагин какие-либо таблицы SQL.
- Можно запустить командe \dtбез шаблона для вывода списка всех таблиц.netbox=> \dt pluginname_*
- Удалите каждую из перечисленных таблиц:netbox=> DROP TABLE pluginname_foo; netbox=> DROP TABLE pluginname_bar;
3.7 Удалите записи миграции Django
- После удаления таблиц, созданных плагином, миграции, создавшие эти таблицы, также необходимо удалить из истории миграции Django.
- Это необходимо для того, чтобы иметь возможность переустановить плагин позже.
- Если бы история миграции осталась на месте, Django пропустил бы все миграции, которые были выполнены в ходе предыдущей установки, что привело бы к сбою плагина после переустановки.netbox=> SELECT * FROM django_migrations WHERE app='pluginname'; netbox=> DELETE FROM django_migrations WHERE app='pluginname';
