NetBox Custom Objects, which went into Public Preview in early July, has enjoyed a huge amount of interest from the community who are thinking through all sorts of useful ways to use Custom Objects to extend the NetBox data model without writing a line of plugin code.
With the second Public Preview release coming up next week and the General Availability following in mid-September, I wanted to share some of the interesting ideas we’ve seen to provide a better idea of what Custom Objects is capable of, and to inspire others to start testing out their ideas too.
If you’re a Netbox administrator and you’ve previously considered writing plugins to address data modelling gaps, this blog will likely be speaking your language. If you’re an everyday user of NetBox, you likely won’t interact with NetBox Custom Objects data model design directly, but you will get to enjoy the new modelling capabilities that it opens up.
As we mentioned in the Private Preview announcement, a core driver for NetBox Custom Objects is allowing NetBox users to model the services they offer to their network customers, internal or external, right alongside the infrastructure that powers those services.
For example, Steinzi from Advania has been using NetBox Custom Objects to model the Firewall Services that they offer to their customers. Previously these services would have been tracked elsewhere, which makes it difficult to reconcile the services being offered with the underlying infrastructure modelled in NetBox.
With Custom Objects, Steinzi was able to create a Firewall Service Custom Object in NetBox, neatly maintaining the relationships that are required to make these services manageable.
“This simple Custom Object can make our lives so much easier”, said Steinzi, “all the data we need to manage the service is now in the same tool.”
Adam Kirchberger from Nomios UK&I was excited about another use case. “There’s all this data we need access to, like contracts and licenses, which isn’t the infrastructure itself, but is very relevant to how we manage it”.
Adam finds himself needing to know “How many of my devices have expiring licenses in the next X months?”, and normally that means wading through information in other systems and correlating that back to the infrastructure modelled in NetBox.
With NetBox Custom Objects, it’s possible to start modelling these relationships directly in NetBox, reducing significant process overhead and making important information directly available when it is needed.
One way of implementing this in Custom Objects could be as simple as a single object representing licenses.
You could of course take this further by expanding to multiple objects, to allow greater flexibility and expression.
This second approach separates Licenses from License Assignments, enabling multiple assignments per license with individual devices/VMs, dates, vendors, and quantities. This preserves history, supports tenancy, and tracks SKUs, types, and entitlements for better compliance.
Many readers may already be familiar with two plugins which address this problem area – NetBox Lifecycle and NetBox Contract. If you’re already using those and are happy with them, you should continue. We will continue to support plugin maintainers and their plugins through our NetBox Plugin Certification Program, while also providing additional data modelling capabilities for users who have different needs.
While NetBox includes VXLAN support, some users have looked for ways to alter how it works. One early adopter proposed an approach that would help them to render VXLAN information for a deployment pipeline, while providing more fine grained control of VTEPs and open the door to vendor specific overrides behaviour.
Frequently NetBox users need to synchronize data between NetBox and other systems, just like we do at NetBox Labs for many of our integrations. The first challenge when beginning a project like this is what we call “data model mapping” – how should an object in the other system map to an object in NetBox?
Sometimes this is straightforward – an IP address in vCenter can be an IP address in NetBox – but often it would be useful to extend the NetBox data model to allow for more intuitive data model mappings between the systems. A few people in the community have been working on exactly that, with an eye on modelling network controllers.
By clearly mapping controllers, clusters, services, and the assets they govern, teams can trace control relationships across devices and virtual machines. It could work across mixed vendors, supports multiple control modes, captures clustered or standalone setups, and would lead to a much more intuitive data model mapping for data synchronization.
The Public Preview version of NetBox Custom Objects still misses some features that are often useful when modelling new objects, including GenericForeignKey relationships and “recursive” or self-referential objects. We are working through these as we approach general availability to deliver on our promise of no-code data model extensions for NetBox. There are also exciting plans afoot to make Custom Objects shareable, so the community can collaborate on them at scale and benefit from what promises to be a substantial ecosystem of Custom Object definitions.If you want to try out the Public Preview of NetBox Custom Objects today, you can use the Quickstart Guide listed on the Public Preview announcement. Be sure to keep an eye on the blog for the second Public Preview version, being released in the week of the 18th of August, which contains a ton of fixes and new functionality.
We look forward to learning about what you model with Custom Objects!