Package: itjamie-netbox-proxbox
AlthoughProxbox is under constant development, I do it withbest effortandspare time. I have no financial gain with this and hope you guys understand, as I know it is pretty useful to some people. If you want tospeed up its development, solve the problem or create new features with your own code and create aPull Requestso that I canreviewit.I also would like to appreciate the people who already contributed with code or/and bug reports.Without this help, surely Proxbox would be much less useful as it is already today to several environments!New Documentation available!Netbox Plugin which integratesProxmoxandNetbox!NOTE:Although the Proxbox plugin is in development, it only useGET requestsand there isno risk to harm your Proxmox environmentby changing things incorrectly.Proxbox is currently able to get the following information from Proxmox:Cluster nameNodes:Status (online / offline)NameVirtual Machines and Containers:Status (online / offline)NameIDCPUDiskMemoryNode (Server)VersionsThe following table shows the Netbox and Proxmox versions compatible (tested) with Proxbox plugin.netbox versionproxmox versionproxbox 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.3Summary1. Installation1.1. Install package1.1.1. Using pip (production use)1.1.2. Using git (development use)1.2. Enable the Plugin1.3. Configure Plugin1.3.1. Change Netbox 'configuration.py' to add PLUGIN parameters1.3.2. Change Netbox 'settings.py' to include Proxbox Template directory1.4. Run Database Migrations1.5 Restart WSGI Service2. Configuration Parameters3. Custom Fields3.1. Custom Field Configuration3.1.1. Proxmox ID3.1.2. Proxmox Node3.1.3. Proxmox Type3.1.4. Proxmox Keep Interface3.2. Custom Field Example4. Usage5. Enable Logs6. Contributing7. Roadmap8. Get Help from Community!1. InstallationThe 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 package1.1.1. Using pip (production use)Enter Netbox's virtual environment.source /opt/netbox/venv/bin/activateInstall the plugin package.(venv) $ pip install netbox-proxbox1.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 foldercd /opt/netbox/netboxClone netbox-proxbox repositorygit clone https://github.com/netdevopsbr/netbox-proxbox.gitInstall netbox-proxboxcd netbox-proxbox
source /opt/netbox/venv/bin/activate
python3 setup.py develop1.2. Enable the PluginEnable the plugin in/opt/netbox/netbox/netbox/configuration.py:PLUGINS=['netbox_proxbox']1.3. Configure Plugin1.3.1. Change Netbox 'configuration.py' to add PLUGIN parametersThe plugin's configuration is also located in/opt/netbox/netbox/netbox/configuration.py:Replace the values with your own following theConfiguration Parameterssection.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},# The following json is optional and applies only for multi-cluster use{'domain':'proxbox2.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 directoryProbably on the next release of Netbox, it will not be necessary to make the configuration below! As thePull Request #8733got merged to develop branchIt is no longer necessary to modify the templates section insettings.pyand you may revert any changes.1.4. Run Database Migrations(venv) $ cd /opt/netbox/netbox/
(venv) $ python3 manage.py migrate
(venv) $ python3 manage.py collectstatic --no-input1.5. Restart WSGI ServiceRestart the WSGI service to load the new plugin:# sudo systemctl restart netbox2. Configuration ParametersThe following options are available:proxmox: (List) 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 toALLOWED_HOSTSnetbox.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 Machinesnetbox.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 FieldsTo 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 Configuration3.1.1. Proxmox IDRequired values (must be equal)[Custom Field]Type:Integer[Custom Field]Name:proxmox_id[Assignment]Content-type:Virtualization > virtual machine[Validation Rules]Minimum value:0Optional values (may be different)[Custom Field]Label:[Proxmox] ID[Custom Field]Description:Proxmox VM/CT ID3.1.2. Proxmox NodeRequired values (must be equal)[Custom Field]Type:Text[Custom Field]Name:proxmox_node[Assignment]Content-type:Virtualization > virtual machineOptional 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,lxcOptional values (may be different)[Custom Field]Label:[Proxmox] Type[Custom Field]Description:Proxmox type (VM or CT)3.1.4. Proxmox Keep InterfaceRequired values (must be equal)[Custom Field]Type:Boolean (true/false)[Custom Field]Name:proxmox_keep_interface[Assignment]Content-type:DCIM > Interface3.2. Custom Field Example4. UsageIf everything is working correctly, you should see in Netbox's navigation theProxmox VM/CTbutton inPluginsdropdown list.OnProxmox VM/CTpage, click buttonIt 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. Enable LogsSo that Proxbox plugin logs what is happening to the terminal, copy the following code and paste toconfiguration.pyNetbox configuration file:LOGGING={'version':1,'disable_existing_loggers':False,'handlers':{'console':{'class':'logging.StreamHandler',},},'root':{'handlers':['console'],'level':'INFO',},}You can customize this using the following link:Django Docs - Logging.
Although the above standard configuration should do the trick to things work.6. ContributingDeveloping tools for this project based onntc-netbox-plugin-onboardingrepo.Issues and pull requests are welcomed.7. RoadmapStart 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 machines8. Get Help from Community!If you are struggling to get Proxbox working, feel free to contact someone from community (including me) to help you.
Below some of the communities available:Official - Slack Community (english)Community Discord Channel - 🇧🇷 (pt-br)Community Telegram Chat - 🇧🇷 (pt-br)Installing and using Proxbox Plugin (pt-br video)Stars History 📈