NetBox. Плагины

Плагины NetBox.

Содержание

1 Общая информация

  • Основные плагины: https://netboxlabs.com/netbox-plugins/
  • Плагины NetBox являются приложениями Django.
  • Плагины могут добавлять свои собственные модели и представления, но не могут вмешиваться в работу существующих компонентов.
  • Архитектура плагинов NetBox позволяет следующее:
    • добавлять новые модели данных;
    • добавлять новые URL-адреса и представления.
      • могут регистрировать URL-адреса /plugins для предоставления пользователям возможности просмотра;
    • добавлять контент в существующие шаблоны моделей;
    • добавлять пункты в меню навигации;
    • добавлять собственное промежуточное программное обеспечение;
    • объявлять параметры конфигурации;
      • параметры конфигурации определяются пользователем в разделе 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 Настройте плагин

  • Если плагин требует какой-либо настройки, задайте её в 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';
    

Дмитрий Сергеевич Кулябов
Дмитрий Сергеевич Кулябов
Профессор кафедры теории вероятностей и кибербезопасности

Мои научные интересы включают физику, администрирование Unix и сетей.

Похожие