You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This document describes all new features and changes in Nautobot 1.0, a divergent fork of NetBox 2.10. For the launch of Nautobot 1.0 and for the purpose of this document, all “new” features or “changes” are referring to the features and changes comparing Nautobot 1.0 coming from NetBox 2.10. All future release notes will only refer to features and changes relative to prior releases of Nautobot.
Users migrating from NetBox to Nautobot should also refer to the "Migrating from NetBox" documentation as well.
v1.0 (2021-04-26)
Added
Custom Fields on All Models
Custom fields allow user-defined fields, or attributes, on specific data models such as sites or devices. Historically, custom fields have been supported only on “primary” models (Site, Device, Rack, Virtual Machine, etc.) but not on “organizational” models (Region, Device Platform, Rack Group, etc.) or on “device component” models like interfaces. As of Nautobot 1.0, custom fields are now supported on every model, including interfaces.
Once created the name or data type of the custom field cannot be modified. Choices for custom fields are now stored as discrete database objects. Choices that are in active use cannot be deleted.
Customizable Statuses
A new "Status" model has been added, allowing users to define additional permitted values for the "status" field on any or all of the models that have such a field (Cable, Circuit, Device, IPAddress, PowerFeed, Prefix, Rack, Site, VirtualMachine, VLAN). The default sets of statuses permitted for each model remain the same as in NetBox 2.10, but you are now free to define additional status values as suit your needs and workflows.
One example application for custom statuses would be in defining additional values to apply to a Device as part of an automation workflow, with statuses such as upgrading or rebooting to reflect the progress of each device through the workflow, allowing automation to identify the appropriate next action to take for each status.
Data Validation Plugin API
Data quality assurance in Nautobot becomes easier with the new data validation plugin API. This makes it possible to codify organizational standards. Using a data validation plugin, an organization can ensure all data stored in Nautobot meets its specific standards, such as enforcing device naming standards, ensuring certain prefixes are never used, asserting that VLANs always have a name, requiring interfaces to always have a description, etc. The ability to ensure a high quality of data becomes much more streamlined; error-prone, manual process becomes automated; and there is no more need to actively run reports to check data quality.
Detail Views for more Models
Detailed view pages are now provided for models including ClusterGroup, ClusterType, DeviceRole, Manufacturer, Platform, and RackRole.
Docker-Based Development Environment
In addition to the previously available virtual-environment-based developer workflow, Nautobot now additionally supports a development environment based around Docker as an alternative.
Git Integration as a Data Source
Git integration offers users an option to integrate into a more traditional NetDevOps pipeline for managing Python modules, Jinja templates, and YAML/JSON data. There are several use cases that have historically required users to either manage Python modules on the filesystem or use Jinja2 templates within the GUI. With this new feature, users can add a Git repository from the UI or REST API, the contents of which will be synchronized into Nautobot immediately and can be later refreshed on-demand. This allows users to more easily update and manage:
Jobs - store your Python modules that define Jobs (formerly known as Custom Scripts and/or Reports) in a Git repository
Export Templates - store your Jinja templates used to create an export template in a Git repository
Config Contexts - store your YAML/JSON data used within a config context in a Git repository
Arbitrary Files - usable by custom plugins and apps
Not only does this integration and feature simplify management of these features in Nautobot, it offers users the ability to use Git workflows for the management of the jobs, templates, and data ensuring there has been proper review and approval before updating them on the system.
GraphQL Support
Nautobot now provides an HTTP API endpoint supporting GraphQL. This feature adds a tremendous amount of flexibility in querying data from Nautobot. It offers the ability to query for specific datasets across multiple models in a single query. Historically, if you wanted to retrieve the list of devices, all of their interfaces, and all of their neighbors, this would require numerous REST API calls. GraphQL gives the flexibility to get all the data desired and nothing unnecessary, all in a single API call.
For more details, please refer to the GraphQL website, as well as to the Nautobot GraphQLdocumentation.
Installable Python Package
Nautobot is now installable as a self-contained Python package via pip install nautobot. Packages are released to PyPI with every Nautobot update.
nautobot-server command
Nautobot now includes a dedicated administrative CLI command, nautobot-server.
Plugins can now include executable Jobs (formerly known as Custom Scripts and Reports) that will automatically be added to the list of available Jobs for a user to execute.
Additional data models defined by a plugin are automatically made available in GraphQL.
Plugins can now define additional Django apps that they require and these dependencies will be automatically enabled when the plugin is activated.
Single Sign-On / Social Authentication Support
Nautobot now supports single sign on as an authentication option using OAuth2, OpenID, SAML, and others, using the social-auth-app-django module. For more details please refer to the guide on SSO authentication.
User-Defined Relationships
User-Defined, or "custom", relationships allow users to create their own relationships between models in Nautobot to best suit the needs of their specific network design.
For example, a VLAN is mapped to a Site by default. After a VLAN is created today, you then assign that VLAN to an Interface on a Device. This Device should be within the initial mapped Site. However, many networks today have different requirements and relationships for VLANs (and many other models): VLANs may be limited to racks in Layer 3 DC fabrics; VLANs may be mapped to multiple buildings in a campus; they may span sites. Relationships allow you to express these additional requirements and relationships without requiring code changes to Nautobot itself. Other use cases include circuits, ASNs, or IP addressing -- just to name a few -- allowing users to define the exact relationships required for their network.
Changed
Code Reorganization
All of the individual Django apps in NetBox (dcim, extras, ipam, etc.) have been moved into a common nautobot Python package namespace. The netbox application namespace has been moved to nautobot.core. This will require updates when porting NetBox custom scripts and reports to Nautobot jobs, as well as when porting NetBox plugins to Nautobot.
Packaging Changes
Nautobot is now packaged using Poetry and builds as an installable Python package. setup.py and requirements.txt have been replaced with pyproject.toml. Releases of Nautobot are now published to PyPI, the Python Package Index, and therefore can now be installed using pip install nautobot.
Installation and Startup
Because Nautobot may be installed using pip, we have replaced manage.py with a dedicated nautobot-server CLI command used to adminster the server. It works exactly as manage.py does, but does not require you to be within the project root directory.
Configuration and Settings
Nautobot has done away with the requirement to duplicate or modify files anywhere in the source code. The configuration.py file has been replaced with a nautobot_config.py file that may be read from anywhere on your system. It is also much easier to add custom settings or overload nearly any default setting.
To facilitate this, many automatically generated settings have been removed, and replaced with their underlying static configurations. We feel this affords a greater amount of flexibility in deployment patterns, with a tradeoff of slightly more initial configuration.
To make things a little easier, you may generate a new configuration with sane defaults using the nautobot-server init command! The configuration file defaults to ~/.nautbot/nautobot_config.pybut using the nautobot-server --config argument, you may name or place the file anywhere you choose.
You may also defined a NAUTOBOT_CONFIG variable to tell Nautobot where to find the file so that you don't need to always pass the --config argument.
Consolidating Custom Scripts and Reports into Jobs
Nautobot has consolidated NetBox's "custom scripts" and "reports" into what is now called Jobs.
The job history (results) table on the home page now shows metadata on each job such as the timestamp and the user that executed the job. Additionally, jobs can be defined and executed by the system and by plugins, and when they are, users can see their results in the history too. UI views have been added for viewing the details of a given job result, and the JobResult model now provides standard APIs for Jobs to log their status and results in a consistent way.
Job result history is now retained indefinitely unless intentionally deleted. Historically only the most recent result for each custom script or report was retained and all older records were deleted.
Python modules that define jobs can now be stored in Git and easily added to Nautobot via the UI as documented above in Git Integration as a Data Source.
Custom User Model
A new custom model has been created for User data. This has allowed Nautobot to use a UUID as a primary key for the User model, and to prepare for future use-cases not support by the default Django model.
This has also meant UserConfig no longer exists as a separate model. UserConfig is now a property on the custom User class.
Hiding UI Elements based on Permissions
Historically, a user viewing the home page and navigation menu would see a list of all model types and menu items in the system, with a “lock” icon on items that they were not granted access to view in detail.
As an option, administrators can now choose to instead hide un-permitted items altogether from the home page and the navigation menu, providing a simpler interface for limited-access users. The prior behavior remains as the default.
IPAM Network Fields to VARBINARY
To enable future support of databases other than PostgreSQL, the network fields inside of IPAM needed to be changed. cidr and inet field types have been replaced with a database agnostic field type. For this purpose varbinary was chosen because it can safely and efficiently store packed binary integers.
More details about the impact of this and other changes can be found in the Migration documentation.
Navigation Menu Changes
The "Other" menu has been renamed to "Extensibility" and many new items have been added to this menu.
Status records have been added to the "Organization" menu.
New Name and Logo
"NetBox" has been changed to "Nautobot" throughout the code, UI, and documentation, and Nautobot has a new logo and icon.
User-Defined Custom Links
Historically the custom links feature was restricted so that only administrators could define and manage custom links to add to various built-in data views. In Nautobot the management of custom links has been moved into the main user interface, accessible to any user who has been granted appropriate access permissions.
User-Defined Export Templates
Historically the custom data export templates feature was restricted such that only administrators could define and edit these templates. In Nautobot this has been moved into the main user interface, accessible to any user who has been granted appropriate access permissions.
User-Defined Webhooks
Historically the webhooks feature was restricted such that only administrators could define and manage webhooks, HTTP callbacks that are triggered automatically when a specified data model(s) are created, updated, and/or deleted. In Nautobot this has been moved into the main user interface, accessible to any user who has been granted appropriate access permissions.
UUID Primary Database Keys
Database keys are now defined as Universally Unique Identifiers (UUIDs) instead of integers, protecting against certain classes of data-traversal attacks.
uWSGI
Nautobot has replaced Gunicorn with uWSGI. In most cases uWSGI is faster, more stable and easier to setup making it ideal to use over Gunicorn. Our recommendation is to use uWSGI in production.
Removed
Secrets
Secrets storage and management has been removed from Nautobot.
Related Devices
The "Related Devices" table has been removed from the detailed Device view.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Nautobot v1.0
This document describes all new features and changes in Nautobot 1.0, a divergent fork of NetBox 2.10. For the launch of Nautobot 1.0 and for the purpose of this document, all “new” features or “changes” are referring to the features and changes comparing Nautobot 1.0 coming from NetBox 2.10. All future release notes will only refer to features and changes relative to prior releases of Nautobot.
Users migrating from NetBox to Nautobot should also refer to the "Migrating from NetBox" documentation as well.
v1.0 (2021-04-26)
Added
Custom Fields on All Models
Custom fields allow user-defined fields, or attributes, on specific data models such as sites or devices. Historically, custom fields have been supported only on “primary” models (Site, Device, Rack, Virtual Machine, etc.) but not on “organizational” models (Region, Device Platform, Rack Group, etc.) or on “device component” models like interfaces. As of Nautobot 1.0, custom fields are now supported on every model, including interfaces.
Once created the name or data type of the custom field cannot be modified. Choices for custom fields are now stored as discrete database objects. Choices that are in active use cannot be deleted.
Customizable Statuses
A new "Status" model has been added, allowing users to define additional permitted values for the "status" field on any or all of the models that have such a field (Cable, Circuit, Device, IPAddress, PowerFeed, Prefix, Rack, Site, VirtualMachine, VLAN). The default sets of statuses permitted for each model remain the same as in NetBox 2.10, but you are now free to define additional status values as suit your needs and workflows.
One example application for custom statuses would be in defining additional values to apply to a Device as part of an automation workflow, with statuses such as
upgrading
orrebooting
to reflect the progress of each device through the workflow, allowing automation to identify the appropriate next action to take for each status.Data Validation Plugin API
Data quality assurance in Nautobot becomes easier with the new data validation plugin API. This makes it possible to codify organizational standards. Using a data validation plugin, an organization can ensure all data stored in Nautobot meets its specific standards, such as enforcing device naming standards, ensuring certain prefixes are never used, asserting that VLANs always have a name, requiring interfaces to always have a description, etc. The ability to ensure a high quality of data becomes much more streamlined; error-prone, manual process becomes automated; and there is no more need to actively run reports to check data quality.
Detail Views for more Models
Detailed view pages are now provided for models including ClusterGroup, ClusterType, DeviceRole, Manufacturer, Platform, and RackRole.
Docker-Based Development Environment
In addition to the previously available virtual-environment-based developer workflow, Nautobot now additionally supports a development environment based around Docker as an alternative.
Git Integration as a Data Source
Git integration offers users an option to integrate into a more traditional NetDevOps pipeline for managing Python modules, Jinja templates, and YAML/JSON data. There are several use cases that have historically required users to either manage Python modules on the filesystem or use Jinja2 templates within the GUI. With this new feature, users can add a Git repository from the UI or REST API, the contents of which will be synchronized into Nautobot immediately and can be later refreshed on-demand. This allows users to more easily update and manage:
Not only does this integration and feature simplify management of these features in Nautobot, it offers users the ability to use Git workflows for the management of the jobs, templates, and data ensuring there has been proper review and approval before updating them on the system.
GraphQL Support
Nautobot now provides an HTTP API endpoint supporting GraphQL. This feature adds a tremendous amount of flexibility in querying data from Nautobot. It offers the ability to query for specific datasets across multiple models in a single query. Historically, if you wanted to retrieve the list of devices, all of their interfaces, and all of their neighbors, this would require numerous REST API calls. GraphQL gives the flexibility to get all the data desired and nothing unnecessary, all in a single API call.
For more details, please refer to the GraphQL website, as well as to the Nautobot GraphQLdocumentation.
Installable Python Package
Nautobot is now installable as a self-contained Python package via
pip install nautobot
. Packages are released to PyPI with every Nautobot update.nautobot-server
commandNautobot now includes a dedicated administrative CLI command,
nautobot-server
.Plugin API Enhancements
Plugins can now provide custom data validation logic.
Plugins can now include executable Jobs (formerly known as Custom Scripts and Reports) that will automatically be added to the list of available Jobs for a user to execute.
Additional data models defined by a plugin are automatically made available in GraphQL.
Plugins can now define additional Django apps that they require and these dependencies will be automatically enabled when the plugin is activated.
Single Sign-On / Social Authentication Support
Nautobot now supports single sign on as an authentication option using OAuth2, OpenID, SAML, and others, using the social-auth-app-django module. For more details please refer to the guide on SSO authentication.
User-Defined Relationships
User-Defined, or "custom", relationships allow users to create their own relationships between models in Nautobot to best suit the needs of their specific network design.
For example, a VLAN is mapped to a Site by default. After a VLAN is created today, you then assign that VLAN to an Interface on a Device. This Device should be within the initial mapped Site. However, many networks today have different requirements and relationships for VLANs (and many other models): VLANs may be limited to racks in Layer 3 DC fabrics; VLANs may be mapped to multiple buildings in a campus; they may span sites. Relationships allow you to express these additional requirements and relationships without requiring code changes to Nautobot itself. Other use cases include circuits, ASNs, or IP addressing -- just to name a few -- allowing users to define the exact relationships required for their network.
Changed
Code Reorganization
All of the individual Django apps in NetBox (
dcim
,extras
,ipam
, etc.) have been moved into a commonnautobot
Python package namespace. Thenetbox
application namespace has been moved tonautobot.core
. This will require updates when porting NetBox custom scripts and reports to Nautobot jobs, as well as when porting NetBox plugins to Nautobot.Packaging Changes
Nautobot is now packaged using Poetry and builds as an installable Python package.
setup.py
andrequirements.txt
have been replaced withpyproject.toml
. Releases of Nautobot are now published to PyPI, the Python Package Index, and therefore can now be installed usingpip install nautobot
.Installation and Startup
Because Nautobot may be installed using
pip
, we have replacedmanage.py
with a dedicatednautobot-server
CLI command used to adminster the server. It works exactly asmanage.py
does, but does not require you to be within the project root directory.Configuration and Settings
Nautobot has done away with the requirement to duplicate or modify files anywhere in the source code. The
configuration.py
file has been replaced with anautobot_config.py
file that may be read from anywhere on your system. It is also much easier to add custom settings or overload nearly any default setting.To facilitate this, many automatically generated settings have been removed, and replaced with their underlying static configurations. We feel this affords a greater amount of flexibility in deployment patterns, with a tradeoff of slightly more initial configuration.
To make things a little easier, you may generate a new configuration with sane defaults using the
nautobot-server init
command! The configuration file defaults to~/.nautbot/nautobot_config.py
but using thenautobot-server --config
argument, you may name or place the file anywhere you choose.You may also defined a
NAUTOBOT_CONFIG
variable to tell Nautobot where to find the file so that you don't need to always pass the--config
argument.For details see Configuring Nautobot.
Consolidating Custom Scripts and Reports into Jobs
Nautobot has consolidated NetBox's "custom scripts" and "reports" into what is now called Jobs.
The job history (results) table on the home page now shows metadata on each job such as the timestamp and the user that executed the job. Additionally, jobs can be defined and executed by the system and by plugins, and when they are, users can see their results in the history too. UI views have been added for viewing the details of a given job result, and the JobResult model now provides standard APIs for Jobs to log their status and results in a consistent way.
Job result history is now retained indefinitely unless intentionally deleted. Historically only the most recent result for each custom script or report was retained and all older records were deleted.
Python modules that define jobs can now be stored in Git and easily added to Nautobot via the UI as documented above in Git Integration as a Data Source.
Custom User Model
A new custom model has been created for
User
data. This has allowed Nautobot to use a UUID as a primary key for theUser
model, and to prepare for future use-cases not support by the default Django model.This has also meant
UserConfig
no longer exists as a separate model.UserConfig
is now a property on the customUser
class.Hiding UI Elements based on Permissions
Historically, a user viewing the home page and navigation menu would see a list of all model types and menu items in the system, with a “lock” icon on items that they were not granted access to view in detail.
As an option, administrators can now choose to instead hide un-permitted items altogether from the home page and the navigation menu, providing a simpler interface for limited-access users. The prior behavior remains as the default.
IPAM Network Fields to VARBINARY
To enable future support of databases other than PostgreSQL, the network fields inside of IPAM needed to be changed.
cidr
andinet
field types have been replaced with a database agnostic field type. For this purposevarbinary
was chosen because it can safely and efficiently store packed binary integers.More details about the impact of this and other changes can be found in the Migration documentation.
Navigation Menu Changes
The "Other" menu has been renamed to "Extensibility" and many new items have been added to this menu.
Status records have been added to the "Organization" menu.
New Name and Logo
"NetBox" has been changed to "Nautobot" throughout the code, UI, and documentation, and Nautobot has a new logo and icon.
User-Defined Custom Links
Historically the custom links feature was restricted so that only administrators could define and manage custom links to add to various built-in data views. In Nautobot the management of custom links has been moved into the main user interface, accessible to any user who has been granted appropriate access permissions.
User-Defined Export Templates
Historically the custom data export templates feature was restricted such that only administrators could define and edit these templates. In Nautobot this has been moved into the main user interface, accessible to any user who has been granted appropriate access permissions.
User-Defined Webhooks
Historically the webhooks feature was restricted such that only administrators could define and manage webhooks, HTTP callbacks that are triggered automatically when a specified data model(s) are created, updated, and/or deleted. In Nautobot this has been moved into the main user interface, accessible to any user who has been granted appropriate access permissions.
UUID Primary Database Keys
Database keys are now defined as Universally Unique Identifiers (UUIDs) instead of integers, protecting against certain classes of data-traversal attacks.
uWSGI
Nautobot has replaced Gunicorn with uWSGI. In most cases uWSGI is faster, more stable and easier to setup making it ideal to use over Gunicorn. Our recommendation is to use uWSGI in production.
Removed
Secrets
Secrets storage and management has been removed from Nautobot.
Related Devices
The "Related Devices" table has been removed from the detailed Device view.
This discussion was created from the release v1.0.0 - 2021-04-26.
Beta Was this translation helpful? Give feedback.
All reactions