Hello and welcome to module 3 of the NetBox ‘Zero-to-Hero’ course. In Module 2: Setting up the Organization you learned how to model an organization within NetBox, and how to use the Web Interface to both manually create individual objects, and bulk import objects using CSV-formatted data.
In this module we will continue to populate NetBox with data for our fictional organization. Our intrepid Network Engineer Eric will be adding the network devices that are going to be installed at the planned new Brisbane branch office, making use of the NetBox REST API (he’s heard about these API things on the ‘Router Nerds’ podcast and is keen to learn how to use one).
By the end of this module you will be able to:
You can obviously add all this data manually via the Web Interface, but by getting hands on with the REST API, you will start to take your skills with NetBox to the next level! A lot of Network Engineers have never used an API (they have surely heard of them by now though) and they might be unsure of how to work with one, or why they should even bother.
The goal of this module is to demystify REST API’s and show you how powerful and simple to use the NetBox REST API is. You will quickly start to see how you can interact programmatically with NetBox and how NetBox can drive your Network Automation efforts going forward.
If you’d like to follow along with the examples used in this course, it’s super easy to do, and you have a few options:
The NetBox version used in the video for this module is v3.3.2, and the following course materials used in the demo are available:
Devices are a key part of NetBox - after all NetBox is a tool for modeling network infrastructure. A device can be any piece of physical hardware installed within your network, such as a server, router, or switch, and may optionally be mounted within a rack. Within each device, resources such as network interfaces and console ports are modeled as discrete components, which may optionally be grouped into modules.
Device objects in NetBox have some dependencies that must already exist in NetBox before you can add the device. They are Manufacturer (the organization that produces the hardware) and Device Type. A device can be installed at a particular position within an equipment rack, or simply associated with a site (and optionally with a location within that site).
A device type is a combination of manufacturer and hardware model that maps to actual devices that exist in the real world. Device types typically have a number of components modelled on them too for things like interfaces, console ports, and power ports etc.
An example of a device type is a Cisco ISR4321 Router (part_number: ISR4321/K9), and this might have the following component templates defined:
Once a device type has been created, then each new device instance of that particular device type you add will have all of the components defined in the device type.
These are the functional roles of devices, and are fully customizable by the user. For example, you might create roles for core switches, distribution switches, and access switches within your network.
A platform defines the type of software running on a device or virtual machine, for example Cisco IOS version 15. NetBox can optionally connect to network devices (to retrieve device information such as LLDP Neighbors) using NAPALM and you can also (optionally) define the driver to be used (eg. ios) as part of the Platform definition.
Our fictional organization has standardized on the following network devices for their Branch office network deployments:
|Manufacturer||Device Type||Device Role||Platform||NAPALM Driver|
|Cisco||ISR4321||WAN Router||Cisco IOS||ios|
|Juniper||EX4300-48P||Access Switch||Juniper JunOS||junos|
|Cisco Meraki||MR56||Wireless AP||n/a||n/a|
|Panduit||Mini-Com High Density Patch Panel (48 Port, 1RU)||Patch Panel||n/a||n/a|
The video demo will now show you how to add all of the device data into NetBox mainly using the REST API (the device types will be uploaded manually as YAML files). As always the best way to understand the power of NetBox is to dive right in, so let’s get started!
In this module you learned how to add devices into NetBox, making use of the NetBox REST API and a Postman collection.
If you have any questions as you go through the course then pop on over to the NetBox Zero to Hero channel on the NetDev Community Slack! If you aren’t already a member then you can sign up for free here.