After more than four years of releases under version 2.x, NetBox v3.0 is finally around the corner! This major release highlights the enormous strides the project has made since its initial release five years ago. NetBox has proven itself as the go-to solution for infrastructure resource management, having been purpose-built to serve as a source of truth for enabling network automation. The project continues to grow at an amazing pace.
Recently, I joined the team at NS1 Labs, where my mission is to continue improving and refining NetBox as part of NS1’s commitment to open source innovation. This investment from NS1 has reinvigorated the project in many ways, foremost in enabling us to reach our version 3.0 milestones much faster than previously anticipated.
Our major focuses for version 3.0 include:
Modernizing the user interface
Custom model validation
Paying down technical debt
Perhaps the most significant change coming in the v3.0 release is a complete overhaul of the user interface. Matt Love, our newest NetBox maintainer, has been hard at work replacing our outdated Bootstrap 3 templates and piecemealed jQuery code with Bootstrap 5 and Typescript, paying off years of technical debt. This update also decouples the remaining NetBox elements from the Django admin UI, obviating the need to leave the main interface for all but administrative operations. Although I don’t yet have screenshots suitable for sharing (the new UI is being refined every day), the updated look lends a much more modern feel to NetBox and secures browser compatibility for the foreseeable future.
Custom model validation is something that users have been requesting since the early days of NetBox, and I’m pleased to share that it will be available in version 3.0. NetBox administrators will be able to define arbitrary rules to be applied whenever a newly created or modified object is being saved, which will trigger a validation error if they are not met. For example, you might define a regular expression to which the name of every device or site must conform. Or maybe you require every prefix with a status of “reserved” to have a description. Validation rules take the form of custom Python classes, which affords a tremendous amount of flexibility.
On the theme of paying down technical debt, we’ve also taken this opportunity to decouple the project from some aging dependencies. We’ll be dropping support for Python 3.6 (which reaches end of life in December), which allows us to finally start employing Python features exclusive to 3.7 and later releases. Database migrations, of which we’ve accumulated quite a few over the past five years, are being optimized to reduce installation time and testing overhead. Potential replacements are being evaluated for the django-mptt library, which is used to manage recursive hierarchies and is no longer maintained. And NetBox’s secrets functionality is being split off from the core into a separate plugin.
On the API side, we continue to make incremental improvements to NetBox’s REST API, most notably with the addition of a robust mechanism for bootstrapping API token provisioning for automated systems. We’ll also be introducing a separate GraphQL interface to complement the REST API.
Although development of version 3.0 is still ongoing, we’ll soon release a public beta version for testing, and we encourage everyone to help kick the tires. The NetBox community has never been busier, and with the additional investments from NS1 the pace of development will only continue to ramp up. We’ve been especially busy exploring innovative solutions leveraging NetBox. If you use NetBox at scale we’d love to hear more about your use case. Please feel free to reach out on Twitter or GitHub if you’d like to share your experience.
Learn More About Using NetBox as an Infrastructure Source of Truth
Check out the visual guide above, and our recent INS1GHTS: Build the Better Future session on NetBox to learn more about using NetBox to streamline infrastructure resource management.