Software Lifecycle Management Netbox Plugin
Project description
NetBox SLM
NetBox SLM is a plugin for lifecycle management of software components, including versions and installations.
Known Issues
- WARNING: This plugin is only tested with a single NetBox version at this time.
- CSV/Bulk imports for SoftwareProduct, Version and Installation are currently broken (WIP)
Installation Guide
When using the Docker version of NetBox, first follow the netbox-docker quickstart instructions to clone the netbox-docker repo and set up the docker-compose.override.yml
.
Next, follow these instructions (based on the NetBox docker variant instructions) to install the NetBox SLM plugin:
-
Add
netbox_slm
to thePLUGINS
list inconfiguration/plugins.py
. -
Create a
plugin_requirements.txt
withnetbox-slm
as contents. -
Create a
Dockerfile-SLM
with contents:FROM netboxcommunity/netbox:vX.Y.Z COPY ./plugin_requirements.txt / RUN /opt/netbox/venv/bin/pip install --no-warn-script-location -r /plugin_requirements.txt
-
Create a
docker-compose.override.yml
with contents:version: '3.7' services: netbox: ports: - 8000:8080 build: context: . dockerfile: Dockerfile-SLM image: netbox:slm netbox-worker: image: netbox:slm netbox-housekeeping: image: netbox:slm
Now, build the image: docker compose build --no-cache
And finally, run NetBox with the SLM plugin: docker compose up
Releasing Guide
To draft a release;
update the netbox_slm/__init__.py
file to reflect the new version, then from the src
directory run
$ python -m build
$ twine upload dist/*
On Github.com create a similar tag and version. These steps could be automated with a github workflow.
Developer Guide (local installation)
Follow the steps below on your local system to run netbox and the netbox_slm plugin in developer mode
Setup
The goal below is to run all NetBox components in Docker and run a local NetBox Django copy with auto-reload to develop the plugin pointing to the Dockerized postgres and redis instances, basically ignoring the netbox docker runtime server.
Steps
from your projects directory clone the netbox repository
$ git clone https://github.com/netbox-community/netbox
$ cd netbox
install the virtual environment
$ pipenv shell
$ pipenv install
create and edit netbox/configuration.py (based on the template file) add these lines at the end of the file;
DEBUG = True
SECRET_KEY = 'dummy'
DEVELOPER = True
PLUGINS = [
'netbox_slm',
]
The NetBox installation above will be used to run Django management commands like runserver, makemigrations and migrate, which will be explained in the next steps below;
from your projects directory clone the netbox-slm repository
$ git clone https://github.com/ICTU/netbox_slm
$ cd netbox_slm
$ ./start-netbox.sh
This will start NetBox locally (requires Docker) and forward the redis and postgres ports to the localhost (make sure there’s no processes using these ports or change the dockerfiles accordingly)
Note, you can also start and stop netbox by hand:
$ cd netbox-docker
$ docker-compose up -d
or stop the stack with
$ docker-compose down
to start fresh:
$ docker-compose down
$ docker volume rm netbox-docker_netbox-postgres-data # et cetera
$ docker-compose up -d --force-recreate
this will require you to re-run the migrate commando's for netbox-slm, see further down below
Go back to the netbox configuration.py file and update the postgres and redis connection strings (username, password) to the ones the netbox docker backend is using, for example (using default user and passwords from the netbox docker example):
<<collapsed>>
# PostgreSQL database configuration. See the Django documentation for a complete list of available parameters:
# https://docs.djangoproject.com/en/stable/ref/settings/#databases
DATABASE = {
'NAME': 'netbox', # Database name
'USER': 'netbox', # PostgreSQL username
'PASSWORD': 'J5brHrAXFLQSif0K', # PostgreSQL password
'HOST': 'localhost', # Database server
'PORT': '', # Database port (leave blank for default)
'CONN_MAX_AGE': 300, # Max database connection age
}
# Redis database settings. Redis is used for caching and for queuing background tasks such as webhook events. A separate
# configuration exists for each. Full connection details are required in both sections, and it is strongly recommended
# to use two separate database IDs.
REDIS = {
'tasks': {
'HOST': 'localhost',
'PORT': 6379,
# Comment out `HOST` and `PORT` lines and uncomment the following if using Redis Sentinel
# 'SENTINELS': [('mysentinel.redis.example.com', 6379)],
# 'SENTINEL_SERVICE': 'netbox',
'PASSWORD': 'H733Kdjndks81',
'DATABASE': 0,
'SSL': False,
# Set this to True to skip TLS certificate verification
# This can expose the connection to attacks, be careful
# 'INSECURE_SKIP_TLS_VERIFY': False,
},
'caching': {
'HOST': 'localhost',
'PORT': 6379,
# Comment out `HOST` and `PORT` lines and uncomment the following if using Redis Sentinel
# 'SENTINELS': [('mysentinel.redis.example.com', 6379)],
# 'SENTINEL_SERVICE': 'netbox',
'PASSWORD': 'H733Kdjndks81',
'DATABASE': 1,
'SSL': False,
# Set this to True to skip TLS certificate verification
# This can expose the connection to attacks, be careful
# 'INSECURE_SKIP_TLS_VERIFY': False,
}
}
<<collapsed>>
Now you can run commands from the netbox repository like this;
$ cd netbox/netbox
$ export PYTHONPATH=../../netbox_slm/netbox_slm/ # or with the pipenv activated run `python3 setup.py develop` from the netbox_slm directory
$ python3 manage.py migrate netbox_slm
$ python3 manage.py runserver 8001
Visit http://127.0.0.1:8001 in the browser to see the auto reloading version of the netbox UI. Port 8000 is taken by the docker ran variant.
Get in touch
Point of contact for this repository is Mart Visser, who can be reached by opening a new issue in this repository's issue tracker.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file netbox_slm-1.7.0.tar.gz
.
File metadata
- Download URL: netbox_slm-1.7.0.tar.gz
- Upload date:
- Size: 19.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 85982376c204338a86fd2f6fbdd7c6950e455826d07c16d97e61519b652bfbac |
|
MD5 | d8ff7fb0cda0b2388b31629e68f7e8ac |
|
BLAKE2b-256 | ca78ba95e3c848883359b41fa9c6f44c40823771b367263159e1ecfafa248a59 |
File details
Details for the file netbox_slm-1.7.0-py3-none-any.whl
.
File metadata
- Download URL: netbox_slm-1.7.0-py3-none-any.whl
- Upload date:
- Size: 27.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a733fdba889cb1aad419cca83bc5a0a780095edc06ae764dc0fa6c95d02551b8 |
|
MD5 | 324dd6b3283d66d6b4b4092f3d0122d5 |
|
BLAKE2b-256 | 3ffa7c99af1ae773a12d98a15c523d721ba856d404b14749eaa6450bd24a841e |