Skip to main content

Netbox Plugin - Integrate Proxmox and Netbox

Project description

Netbox Plugin which integrates Proxmox and Netbox!

NOTE: Although the Proxbox plugin is in development, it only use GET requests and there is no risk to harm your Proxmox environment by changing things incorrectly.


Proxbox is currently able to get the following information from Proxmox:

  • Cluster name
  • Nodes:
    • Status (online / offline)
    • Name
  • Virtual Machines and Containers:
    • Status (online / offline)
    • Name
    • ID
    • CPU
    • Disk
    • Memory
    • Node (Server)

Versions

The following table shows the Netbox and Proxmox versions compatible (tested) with Proxbox plugin.

netbox version proxmox version proxbox version
>= v3.4.0 >= v6.2.0 =v0.0.5
>= v3.2.0 >= v6.2.0 =v0.0.4
>= v3.0.0 < v3.2 >= v6.2.0 =v0.0.3

Summary

1. Installation

2. Configuration Parameters

3. Custom Fields

4. Usage

5. Contributing

6. Roadmap


1. Installation

The instructions below detail the process for installing and enabling Proxbox plugin. The plugin is available as a Python package in pypi and can be installed with pip.

1.1. Install package

1.1.1. Using pip (production use)

Enter Netbox's virtual environment.

source /opt/netbox/venv/bin/activate

Install the plugin package.

(venv) $ pip install netbox-proxbox

1.1.2. Using git (development use)

OBS: This method is recommend for testing and development purposes and is not for production use.

Move to netbox main folder

cd /opt/netbox/netbox

Clone netbox-proxbox repository

git clone https://github.com/netdevopsbr/netbox-proxbox.git

Install netbox-proxbox

cd netbox-proxbox
source /opt/netbox/venv/bin/activate
python3 setup.py develop

1.2. Enable the Plugin

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

PLUGINS = ['netbox_proxbox']

1.3. Configure Plugin

1.3.1. Change Netbox 'configuration.py' to add PLUGIN parameters

The plugin's configuration is also located in /opt/netbox/netbox/netbox/configuration.py:

Replace the values with your own following the Configuration Parameters section.

OBS: You do not need to configure all the parameters, only the one's different from the default values. It means that if you have some value equal to the one below, you can skip its configuration. For netbox you should ensure the domain/port either targets gunicorn or a true http port that is not redirected to https.

PLUGINS_CONFIG = {
    'netbox_proxbox': {
        'proxmox': {
            'domain': 'proxbox.example.com',    # May also be IP address
            'http_port': 8006,
            'user': 'root@pam',   # always required
            'password': 'Strong@P4ssword', # only required, if you don't want to use token based authentication
            'token': {
                'name': 'tokenID',	# Only type the token name and not the 'user@pam:tokenID' format
                'value': '039az154-23b2-4be0-8d20-b66abc8c4686'
            },
            'ssl': False
        },
        'netbox': {
            'domain': 'localhost',     # Ensure localhost is added to ALLOWED_HOSTS
            'http_port': 8001,     # Gunicorn port.
            'token': '0dd7cddfaee3b38bbffbd2937d44c4a03f9c9d38',
            'ssl': False,	# There is no support to SSL on Netbox yet, so let it always False.
            'settings': {
                'virtualmachine_role_id' : 0,
                'node_role_id' : 0,
                'site_id': 0
            }
        }
    }

1.3.2. Change Netbox 'settings.py' to include Proxbox Template directory

Probably on the next release of Netbox, it will not be necessary to make the configuration below! As the Pull Request #8733 got merged to develop branch

It is no longer necessary to modify the templates section in settings.py and you may revert any changes.


1.4. Run Database Migrations

(venv) $ cd /opt/netbox/netbox/
(venv) $ python3 manage.py migrate

1.5. Restart WSGI Service

Restart the WSGI service to load the new plugin:

# sudo systemctl restart netbox

2. Configuration Parameters

The following options are available:

  • proxmox: (Dict) Proxmox related configuration to use proxmoxer.

  • proxmox.domain: (String) Domain or IP address of Proxmox.

  • proxmox.http_port: (Integer) Proxmox HTTP port (default: 8006).

  • proxmox.user: (String) Proxmox Username.

  • proxmox.password: (String) Proxmox Password.

  • proxmox.token: (Dict) Contains Proxmox TokenID (name) and Token Value (value).

  • proxmox.token.name: (String) Proxmox TokenID.

  • proxmox.token.value: (String) Proxmox Token Value.

  • proxmox.ssl: (Bool) Defines the use of SSL (default: False).

  • netbox: (Dict) Netbox related configuration to use pynetbox.

  • netbox.domain: (String) Domain or IP address of Netbox. Ensure name or ip is added to ALLOWED_HOSTS

  • netbox.http_port: (Integer) Netbox HTTP PORT (default: 8001). If you are not targeting gunicorn directly make sure the HTTP port is not redirected to HTTPS by your HTTP server.

  • netbox.token: (String) Netbox Token Value.

  • netbox.ssl: (Bool) Defines the use of SSL (default: False). - Proxbox doesn't support SSL on Netbox yet.

  • netbox.settings: (Dict) Default items of Netbox to be used by Proxbox.

    • If not configured, Proxbox will automatically create a basic configuration to make it work.
    • The ID of each item can be easily found on the URL of the item you want to use.
  • netbox.settings.virtualmachine_role_id: (Integer) Role ID to be used by Proxbox when creating Virtual Machines

  • netbox.settings.node_role_id: (Integer) Role ID to be used by Proxbox when creating Nodes (Devices)

  • netbox.settings.site_id (Integer) Site ID to be used by Proxbox when creating Nodes (Devices)


3. Custom Fields

To get Proxmox ID, Node and Type information, is necessary to configure Custom Fields. Below the parameters needed to make it work:


3.1. Custom Field Configuration

3.1.1. Proxmox ID

Required values (must be equal)

  • [Custom Field] Type: Integer
  • [Custom Field] Name: proxmox_id
  • [Assignment] Content-type: Virtualization > virtual machine
  • [Validation Rules] Minimum value: 0

Optional values (may be different)

  • [Custom Field] Label: [Proxmox] ID
  • [Custom Field] Description: Proxmox VM/CT ID

3.1.2. Proxmox Node

Required values (must be equal)

  • [Custom Field] Type: Text
  • [Custom Field] Name: proxmox_node
  • [Assignment] Content-type: Virtualization > virtual machine

Optional values (may be different)

  • [Custom Field] Label: [Proxmox] Node
  • [Custom Field] Description: Proxmox Node (Server)

3.1.3. Proxmox Type (qemu or lxc)

Required values (must be equal)

  • [Custom Field] Type: Selection
  • [Custom Field] Name: proxmox_type
  • [Assignment] Content-type: Virtualization > virtual machine
  • [Choices] Choices: qemu,lxc

Optional values (may be different)

  • [Custom Field] Label: [Proxmox] Type
  • [Custom Field] Description: Proxmox type (VM or CT)

3.2. Custom Field Example

custom field image


4. Usage

If everything is working correctly, you should see in Netbox's navigation the Proxmox VM/CT button in Plugins dropdown list.

On Proxmox VM/CT page, click button full update button

It will redirect you to a new page and you just have to wait until the plugin runs through all Proxmox Cluster and create the VMs and CTs in Netbox.

OBS: Due the time it takes to full update the information, your web brouse might show a timeout page (like HTTP Code 504) even though it actually worked.


5. Contributing

Developing tools for this project based on ntc-netbox-plugin-onboarding repo.

Issues and pull requests are welcomed.


6. Roadmap

  • Start using custom models to optimize the use of the Plugin and stop using 'Custom Fields'
  • Automatically remove Nodes on Netbox when removed on Promox (as it already happens with Virtual Machines and Containers)
  • Add individual update of VM/CT's and Nodes (currently is only possible to update all at once)
  • Add periodic update of the whole environment so that the user does not need to manually click the update button.
  • Create virtual machines and containers directly on Netbox, having no need to access Proxmox.
  • Add 'Console' button to enable console access to virtual machines

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

netbox_proxbox-0.0.5.tar.gz (39.3 kB view details)

Uploaded Source

Built Distribution

netbox_proxbox-0.0.5-py3-none-any.whl (50.7 kB view details)

Uploaded Python 3

File details

Details for the file netbox_proxbox-0.0.5.tar.gz.

File metadata

  • Download URL: netbox_proxbox-0.0.5.tar.gz
  • Upload date:
  • Size: 39.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.2

File hashes

Hashes for netbox_proxbox-0.0.5.tar.gz
Algorithm Hash digest
SHA256 ab0e6cabb367b7d6f41745322b266aa421b8d8a9b0d987b249b2e3d7da0ab6ee
MD5 37a4b18c4d31ce58af8c59bda97a7d7c
BLAKE2b-256 b180d653d81ef44eed6cc88ad6af83d725e7489e10576a77c75e2de7f5a605be

See more details on using hashes here.

File details

Details for the file netbox_proxbox-0.0.5-py3-none-any.whl.

File metadata

File hashes

Hashes for netbox_proxbox-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 7fa4a3cb7ceaa1f2f374ed2ffbf765457aa94e1b456df17023131dcb1c2f9cde
MD5 6b0ef63ce7d710c97a5636f4ac7fc61f
BLAKE2b-256 bc11cac736f66095ca8bc958e596b33b0865aa9c8bc8aa69b6aa2f79c71a3c05

See more details on using hashes here.

Supported by

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