Skip to content

Using Netbox Plugins

Ryan Merolle edited this page Jul 27, 2022 · 28 revisions

To utilise plugins that have been created by users within the NetBox Community a custom image must be used.

Lets start with a fresh install of netbox-docker.

  • git clone -b release https://github.com/netbox-community/netbox-docker.git
  • Change /env/netbox.env to your required settings.
  • Create a few files these are (plugin_requirements.txt, Dockerfile-Plugins, docker-compose.override.yml)

Python Requirements

The plugin_requirements.txt file needs to contain all the plugins that are required.

ntc-netbox-plugin-onboarding

NOTE: These must be on PyPi to work.

NetBox Configuration

To get plugins to work within NetBox you need to add some configuration to configuration.py.

PLUGINS = ["netbox_onboarding"]

# PLUGINS_CONFIG = {
#   "netbox_onboarding": {
#     ADD YOUR SETTINGS HERE
#   }
# }

NOTE: This can differ for every plugin. To learn more about this see the NetBox documentation.

Custom Docker File

The new Dockerfile-Plugins will enable us to build a new image with the required plugins installed.

FROM netboxcommunity/netbox:latest

COPY ./plugin_requirements.txt /
RUN /opt/netbox/venv/bin/pip install  --no-warn-script-location -r /plugin_requirements.txt

# These lines are only required if your plugin has its own static files.
COPY configuration/configuration.py /etc/netbox/config/configuration.py
RUN SECRET_KEY="dummy" /opt/netbox/venv/bin/python /opt/netbox/netbox/manage.py collectstatic --no-input

NOTE: You can swap the image out to use any of the images that the Netbox-Docker community publishes to Docker Hub. For example if LDAP is required, swap out netboxcommunity/netbox:latest for netboxcommunity/netbox:latest-ldap.

Docker Compose Override

docker-compose.override.yml, as its name implies, can contain configuration overrides for existing services or entirely new services.

version: '3.4'
services:
  netbox:
    ports:
      - 8000:8080
    build:
      context: .
      dockerfile: Dockerfile-Plugins
    image: netbox:latest-plugins
  netbox-worker:
    image: netbox:latest-plugins
  netbox-housekeeping:
    image: netbox:latest-plugin

This configuration will change the ports netbox will use. It will also select the build file created in previous steps and tell the netbox-worker service to now use the new image (netbox:latest-plugins) that has been created.

Build and Deploy

To build and deploy this in docker two commands are required.

docker-compose build --no-cache
docker-compose up -d

Troubleshooting

Plugin does not load

The error is something like django.core.exceptions.ImproperlyConfigured: Unable to import plugin nextbox-plugin: Module not found.

Note that the plugin name for pip can be different from the name used to load the plugin. I.e. netbox-plugin for pip and netbox_plugin (note the underscore) for the config file.

Clone this wiki locally