Skip to main content

Manage Docker with Netbox & style.

Project description

Netbox Docker Plugin

Testing Report

Manage Docker with Netbox & style. Made to work with netbox-docker-agent.

UI Container view with dependencies

Thanks dzove855 for the presentation of the plugin the 15th April 2025 during the Netbox Community Call.

Netbox Docker Plugin presentation at Netbox Community call the 15th April 2025

How does it work?

sequenceDiagram
    Netbox->>Agent: Change (Webhook)
    Agent->>Docker API: Request (HTTP)
    Docker API->>Agent: Response (HTTP)
    Agent->>Netbox: Feedback (Callback)

Once the plugin and webhooks are installed, you can:

  1. Create hosts that point to agents you had installed *
  2. Retrieve informations from Docker API with the help of the agent
  3. Create containers on host with an image, expose ports, add env variables and labels, mount volumes, set networks.
  4. Manage the container status, start, stop, restart.

[!NOTE] Adding a host with curl needs a specific Origin HTTP header to make it working. Example :

curl \
    -H "Authorization: Token YOUR-NETBOX-APIKEY" \
    -H "Content-Type: application/json" \
    -H "Origin: https://YOUR-NETBOX-HOST" \
    -X POST https://YOUR-NETBOX-HOST/api/plugins/docker/hosts/ \
    -d '{"name": "YOUR-AGENT-NAME", "endpoint": "https://AGENT-USER:PASSWORD@YOUR-AGENT-HOST:PORT"}'

Installation

Below the compatibility list of the Netbox Docker PLugin and Netbox. Please chose the right version of the plugin depending of the Netbox version you use:

Netbox Version Netbox Docker Plugin Version
3.* 1.*
4.0.* 2.*
4.1.* 3.*
4.2.* 4.*
4.3.* 4.*
>=4.3.7 <4.5.0 >=4.5.1 <5.*
>=4.5.0 >=5.*

You can follow the official plugins installation instructions.

If needed, source your Netbox's virtual environment and install the plugin like a package. We assume you have already installed Netbox and its source code are in /opt/netbox:

cd /opt/netbox
python3 -m venv venv # if virtual env was not created before
source /opt/netbox/venv/bin/activate
pip install netbox-docker-plugin

Enable the plugin in the /opt/netbox/netbox/netbox/configuration.py file:

PLUGINS = [
    'netbox_docker_plugin',
]

Then, run migrations:

cd /opt/netbox
python3 netbox/manage.py migrate

[!IMPORTANT] In order to the communication between your Netbox instance and the Agent works, the plugin will check if webhooks to agents are presents on each migration phase. If not, then the plugin will automatically install webhooks configuration in your Netbox instance.

Alternative

Another way to install Netbox is to use the Official netbox-docker project.

With this alternate way, you can customize your Netbox image and migrations will be automatically execute each time you restart the container.

Contribute

Install our development environment

Requirements:

  • Python 3.11
  • PostgreSQL 15 Official Netbox doc
    • user: netbox (with database creation right)
    • password: secret
    • database: netbox
    • port: 5432
  • Redis 7.2
    • port: 6379

Set a PROJECT variable :

PROJECT="/project/netbox"

Create a project directory $PROJECT:

mkdir $PROJECT

Go inside your project directory, clone this repository and the Netbox repository:

cd $PROJECT
git clone git@github.com:SaaShup/netbox-docker-plugin.git
git clone git@github.com:netbox-community/netbox.git

Create your venv and activate it:

python -m venv venv
source venv/bin/activate

Install netbox-docker-plugin dependencies:

cd $PROJECT/netbox-docker-plugin
pip install -e .

Configure Netbox and install Netbox dependencies:

cd $PROJECT/netbox
cp $PROJECT/netbox-docker-plugin/netbox_configuration/configuration_dev.py $PROJECT/netbox/netbox/netbox/configuration.py
pip install -r requirements.txt

Run database migrations:

cd $PROJECT/netbox
python3 netbox/manage.py migrate

Create a Netbox super user:

cd $PROJECT/netbox
python3 netbox/manage.py createsuperuser

Start Netbox instance:

cd $PROJECT/netbox
python3 netbox/manage.py runserver 0.0.0.0:8000 --insecure

Visit http://localhost:8000/

Run tests

After installing your development environment, you can run the tests plugin (you don't need to start the Netbox instance):

cd $PROJECT/netbox
python3 -m pip install requests_mock
python3 netbox/manage.py test netbox_docker_plugin.tests --keepdb -v 2

With code coverage, install coverage.py and use it:

cd $PROJECT/netbox
python3 -m pip install coverage

Then run the test with coverage.py and print the report:

cd $PROJECT/netbox
coverage run --include='*/netbox_docker_plugin/*' netbox/manage.py test netbox_docker_plugin.tests --keepdb -v 2
coverage report -m

Hosting

Check https://saashup.com for more information.

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

netbox_docker_plugin-5.1.1.tar.gz (57.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

netbox_docker_plugin-5.1.1-py3-none-any.whl (115.9 kB view details)

Uploaded Python 3

File details

Details for the file netbox_docker_plugin-5.1.1.tar.gz.

File metadata

  • Download URL: netbox_docker_plugin-5.1.1.tar.gz
  • Upload date:
  • Size: 57.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for netbox_docker_plugin-5.1.1.tar.gz
Algorithm Hash digest
SHA256 e9e43b52c81b85b66cdaa9b2e6d78b38e0abdbc3d245e485cde74ff7b2ccca72
MD5 752364d21758dad92c224ffcabd345a4
BLAKE2b-256 7bb21dc230fb8152c23fdf128ded2d9fcd31e11c5fce4e2af2a7d2f4a317b0d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for netbox_docker_plugin-5.1.1.tar.gz:

Publisher: tags_cd.yml on SaaShup/netbox-docker-plugin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file netbox_docker_plugin-5.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for netbox_docker_plugin-5.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 334b9e18f12645f59fefcbe06b9224cf113743bcd98578e4ff7e47a85c500f87
MD5 ebf5347bd6e2c21af6007fee25243267
BLAKE2b-256 9f8b128e50ddeef2a44e8b47b14bafa0f285d42dd7bb35cafcd5b279e68fae5d

See more details on using hashes here.

Provenance

The following attestation bundles were made for netbox_docker_plugin-5.1.1-py3-none-any.whl:

Publisher: tags_cd.yml on SaaShup/netbox-docker-plugin

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page