NetBox SLM

Software lifecycle and license management for NetBox: software products, versions, installations and licenses — with expiry notifications and optional tenant assignment.

Plugin name netbox_slm
Package netbox-slm
NetBox 4.6.5
Python >=3.11
Repository https://git.mrblake.cc/MrBlake/NetBox-SLM

Features

  • Manage software products and manufacturers
  • Track versions, release types and support periods
  • Assign installations to devices, virtual machines or clusters
  • Manage software licenses including term, scope and storage location
  • Lifetime licenses or renewal intervals in days, months or years
  • Store license files, license keys and links to the vendor portal
  • Expiry warnings one month and one week before license end by default
  • Additional custom warning period in days, weeks or months
  • NetBox notifications and optional e-mail via NetBox's SMTP configuration
  • Assign licenses to tenant groups and tenants
  • Full NetBox UI and REST API
  • Filters, bulk import and bulk edit
  • UI available in English and German (follows the user's NetBox language)

Note: License keys are stored in the NetBox database and license files in NetBox's media directory. Protect and back up the database, REST API and media directory accordingly.

Compatibility

  • NetBox 4.6.5
  • Python >=3.11

Installation

All paths assume a standard installation under /opt/netbox.

1. Install the package

/opt/netbox/venv/bin/pip install --upgrade --force-reinstall \
  "git+https://git.mrblake.cc/MrBlake/NetBox-SLM.git@master"

For reproducible production installs, replace master with a release tag or a full commit ID.

2. Add the plugin to local_requirements.txt

This makes upgrade.sh reinstall the plugin automatically on every NetBox upgrade:

grep -qxF "git+https://git.mrblake.cc/MrBlake/NetBox-SLM.git@master" /opt/netbox/local_requirements.txt \
  || echo "git+https://git.mrblake.cc/MrBlake/NetBox-SLM.git@master" | sudo tee -a /opt/netbox/local_requirements.txt

If the repository is private, the NetBox server needs a read-only deploy token or an SSH key. Do not store credentials in local_requirements.txt.

3. Enable the plugin

In /opt/netbox/netbox/netbox/configuration.py:

PLUGINS = [
    "netbox_slm",
]

If other plugins are already configured, add netbox_slm to the existing list. No PLUGINS_CONFIG is required for standard operation.

4. Apply migrations, collect static files, restart

cd /opt/netbox/netbox
/opt/netbox/venv/bin/python manage.py migrate netbox_slm
/opt/netbox/venv/bin/python manage.py collectstatic --no-input
sudo systemctl restart netbox netbox-rq

Check the installed version:

/opt/netbox/venv/bin/pip show netbox-slm

Update

/opt/netbox/venv/bin/pip install --upgrade --force-reinstall \
  "git+https://git.mrblake.cc/MrBlake/NetBox-SLM.git@master"

cd /opt/netbox/netbox
/opt/netbox/venv/bin/python manage.py migrate netbox_slm
/opt/netbox/venv/bin/python manage.py collectstatic --no-input
sudo systemctl restart netbox netbox-rq

--force-reinstall makes pip pick up branch changes even if the package version has not been bumped.

When NetBox itself is upgraded, upgrade.sh reinstalls the plugin from local_requirements.txt and runs migrations and collectstatic:

sudo /opt/netbox/upgrade.sh
sudo systemctl restart netbox netbox-rq

Uninstall

  1. Remove "netbox_slm" from PLUGINS.
  2. Remove the line from /opt/netbox/local_requirements.txt.
  3. Uninstall the package and restart NetBox:
/opt/netbox/venv/bin/pip uninstall netbox-slm
sudo systemctl restart netbox netbox-rq

The plugin's database tables are not dropped automatically.

Usage

Expiry notifications

Notifications are enabled by default for licenses with an expiry date. The default reminders are one month and one week before expiry. Per license, an additional custom warning period can be set or the defaults can be disabled.

Recipients decide themselves whether they are notified: sales, the responsible technician or other users open the license and click the NetBox Subscribe action (Unsubscribe stops it). Without subscribers no message is sent.

A NetBox notification is always created. If E-mail notifications is enabled on the license, the plugin also sends an e-mail to the address stored in the user account; NetBox SMTP must be configured for this.

Enabling e-mail delivery can only be changed by administrators or users with the permission netbox_slm.manage_softwarelicense_email_notifications. SMTP credentials are maintained only in the NetBox server configuration and are not visible in the plugin.

The check runs once a day as a NetBox system job. Once the first configured reminder date is reached, subscribers are notified on every job run up to and including the expiry date. The NetBox RQ worker must run with scheduler support, which is the default for a standard NetBox installation with rqworker.

Origin and license

This repository is based on the original project ICTU/netbox_slm. ICTU is the original author and publisher; Mart Visser is named as the contact in the original project.

The changes in this fork are maintained at git.mrblake.cc/MrBlake/NetBox-SLM.

Licensed under the Apache License 2.0. Notices of the original authors are retained.

S
Description
Netbox Software Lifecycle Management Extension
Readme Apache-2.0
474 KiB
Languages
Python 88.3%
HTML 11.7%