Platform - Nautobot Documentation

Skip to content

# Platforms

A platform defines the type of software running on a device or virtual machine. This can be helpful to model when it is necessary to distinguish between different versions or feature sets. Note that two devices of the same type may be assigned different platforms: For example, one Juniper MX240 might run Junos 14 while another runs Junos 15.

Platforms may optionally be limited by manufacturer: If a platform is assigned to a particular manufacturer, it can only be assigned to devices with a type belonging to that manufacturer.

The platform model can be used to indicate which "network driver" Nautobot (and Jobs, Apps, etc.) should use when connecting to a remote device running this platform. This is a generic string corresponding loosely to a Netmiko driver name. As there are many different libraries and applications for connecting to a device, rather than having a separate model field for each such connection type, Nautobot uses netutils to translate the generic network driver string into a variety of library-specific driver strings (Ansible "collection name", PyATS "OS" value, Scrapli "platform", etc.) which can be accessed via the UI, REST API, and GraphQL as needed. An administrator can extend or override the default translations provided by netutils by configuring the `NETWORK_DRIVERS` dictionary appropriately. (If your extensions are generally applicable, please consider making a pull request against netutils to update the package!)

Added in version 2.0.0

Support for `netutils_parser` key was added to `network_driver_mappings`.

For historical reasons, the NAPALM driver (`napalm_driver` field) and any associated arguments (`napalm_args` field) Nautobot should use when connecting to a remote device via NAPALM can (and must) be configured directly rather than being derived from the network driver. The name of the NAPALM driver along with optional parameters are stored with the platform.

Apps and Jobs should transition to using the `network_driver_mappings["napalm"]` property when connecting to a device via NAPALM. Nautobot may deprecate the use of the `napalm_driver` and `napalm_args` fields in a future release.

The assignment of platforms to devices is an optional feature, and may be disregarded if not desired.