Optional Configuration Settings¶
This document describes Nautobot-specific configuration settings that may be customized in your nautobot_config.py
, or, in many cases, by configuration of appropriate environment variables. It also describes a number of common Django configuration settings that may also be customized similarly.
The official Django documentation documents all Django settings, and this document does not attempt to replace that documentation.
Administratively Configurable Settings¶
Added in version 1.2.0
A number of settings can alternatively be configured via the Nautobot Admin UI. To do so, these settings must not be defined in your nautobot_config.py
, as any settings defined there will take precedence over any values defined in the Admin UI. Settings that are currently configurable via the Admin UI include:
Settings configurable in nautobot_config.py
¶
Extra Applications¶
A need may arise to allow the user to register additional settings. These will automatically apply
based on keynames prefixed with EXTRA_
assuming the base key (the latter part of the setting name) is
of type list or tuple.
For example, to register additional INSTALLED_APPS
, you would simply specify this in your custom
(user) configuration::
This will ensure your default setting's INSTALLED_APPS
do not have to be modified, and the user
can specify additional apps with ease. Similarly, additional MIDDLEWARE
can be added using EXTRA_MIDDLEWARE
.
ADMINS
¶
Default:
[]
Administrators' names and emails as a list of (name, email) tuples. Nautobot will email details about critical errors to any administrators listed here.
For example:
See Also:
ALLOW_REQUEST_PROFILING
¶
Added in version 2.2.0
Default:
False
Environment Variable: NAUTOBOT_ALLOW_REQUEST_PROFILING
Global setting to allow or deny users from enabling request profiling on their login session.
Tip
If you do not set a value for this setting in your nautobot_config.py
, it can be configured dynamically by an admin user via the Nautobot Admin UI. If you do have a value for this setting in nautobot_config.py
, it will override any dynamically configured value.
See Also:
ALLOWED_HOSTS
¶
Default:
[]
Environment Variable: NAUTOBOT_ALLOWED_HOSTS
A list of valid fully-qualified domain names (FQDNs) and/or IP addresses that can be used to reach the Nautobot service. (If provided as an environment variable, it should be a space-separated string, for example NAUTOBOT_ALLOWED_HOSTS="localhost 127.0.0.1 nautobot.example.com"
)
Usually this is the same as the hostname for the Nautobot server, but can also be different; for example, when using a reverse proxy serving the Nautobot website under a different FQDN than the hostname of the Nautobot server. To help guard against HTTP Host header attacks, Nautobot will not permit access to the server via any other hostnames or IPs.
Keep in mind that by default Nautobot sets
USE_X_FORWARDED_HOST
to True
, which means that if you're using a reverse proxy, the FQDN used to reach that reverse proxy needs
to be in this list.
Warning
This parameter must always be defined as a list or tuple, even if only a single value is provided.
Example:
Tip
If there is more than one hostname in this list, you may also need to set CSRF_TRUSTED_ORIGINS as well.
If you are not yet sure what the domain name and/or IP address of the Nautobot installation will be, and are comfortable accepting the risks in doing so, you can set this to a wildcard (asterisk) to allow all host values:
Warning
It is not recommended to leave this value as ['*']
for production deployments.
See Also:
ALLOWED_URL_SCHEMES
¶
Default:
['file', 'ftp', 'ftps', 'http', 'https', 'irc', 'mailto', 'sftp', 'ssh', 'tel', 'telnet', 'tftp', 'vnc', 'xmpp']
A list of permitted URL schemes referenced when rendering links within Nautobot. Note that only the schemes specified in this list will be accepted; if adding your own, be sure to replicate all of the default values as well (excluding those schemes which are not desirable).
AUTHENTICATION_BACKENDS
¶
Default:
['nautobot.core.authentication.ObjectPermissionBackend']
A list of authentication backend classes (as strings) to use when attempting to authenticate a user. The entry "nautobot.core.authentication.ObjectPermissionBackend"
must always be the last in this list.
See Also:
BANNER_BOTTOM
¶
Default:
""
Environment Variable: NAUTOBOT_BANNER_BOTTOM
Custom content to be displayed in a banner at the bottom of all Nautobot pages.
Changed in version 2.2.4
Markdown formatting is supported within this message, as well as a limited subset of HTML.
Tip
If you do not set a value for this setting in your nautobot_config.py
, it can be configured dynamically by an admin user via the Nautobot Admin UI. If you do have a value for this setting in nautobot_config.py
, it will override any dynamically configured value.
BANNER_LOGIN
¶
Default:
""
Environment Variable: NAUTOBOT_BANNER_LOGIN
Custom content to be displayed in a banner on the login page above the login form.
Changed in version 2.2.4
Markdown formatting is supported within this message, as well as a limited subset of HTML.
Tip
If you do not set a value for this setting in your nautobot_config.py
, it can be configured dynamically by an admin user via the Nautobot Admin UI. If you do have a value for this setting in nautobot_config.py
, it will override any dynamically configured value.
BANNER_TOP
¶
Default:
""
Environment Variable: NAUTOBOT_BANNER_TOP
Custom content to be displayed in a banner at the top of all Nautobot pages.
Changed in version 2.2.4
Markdown formatting is supported within this message, as well as a limited subset of HTML.
Tip
If you do not set a value for this setting in your nautobot_config.py
, it can be configured dynamically by an admin user via the Nautobot Admin UI. If you do have a value for this setting in nautobot_config.py
, it will override any dynamically configured value.
BRANDING_FILEPATHS
¶
Added in version 1.2.0
Default:
{'css': None,
'favicon': None,
'header_bullet': None,
'icon_16': None,
'icon_180': None,
'icon_192': None,
'icon_32': None,
'icon_mask': None,
'javascript': None,
'logo': None,
'nav_bullet': None}
Environment Variables:
-
NAUTOBOT_BRANDING_FILEPATHS_CSS
-
NAUTOBOT_BRANDING_FILEPATHS_FAVICON
-
NAUTOBOT_BRANDING_FILEPATHS_HEADER_BULLET
-
NAUTOBOT_BRANDING_FILEPATHS_ICON_16
-
NAUTOBOT_BRANDING_FILEPATHS_ICON_180
-
NAUTOBOT_BRANDING_FILEPATHS_ICON_192
-
NAUTOBOT_BRANDING_FILEPATHS_ICON_32
-
NAUTOBOT_BRANDING_FILEPATHS_ICON_MASK
-
NAUTOBOT_BRANDING_FILEPATHS_JAVASCRIPT
-
NAUTOBOT_BRANDING_FILEPATHS_LOGO
-
NAUTOBOT_BRANDING_FILEPATHS_NAV_BULLET
A set of filepaths relative to the MEDIA_ROOT
which locate assets used for custom branding of your Nautobot instance. With the exception of css
and javascript
, which provide the option to add an additional file to Nautobot page content, each of the other assets takes the place of the corresponding stock Nautobot asset. This allows for, for instance, providing your own navbar logo and favicon. If a custom asset is not provided for any of the above options, the stock Nautobot asset is used.
Added in version 2.1.0
The header_bullet
and nav_bullet
assets were added as options.
Added in version 2.2.4
The css
and javascript
assets were added as options.
BRANDING_PREPENDED_FILENAME
¶
Added in version 1.3.4
Default:
"nautobot_"
Environment Variable: NAUTOBOT_BRANDING_PREPENDED_FILENAME
Defines the prefix of the filename when exporting to CSV/YAML or export templates.
BRANDING_TITLE
¶
Added in version 1.2.0
Default:
"Nautobot"
Environment Variable: NAUTOBOT_BRANDING_TITLE
Defines the custom branding title that should be used in place of 'Nautobot' within user facing areas of the application, such as the HTML title of web pages.
BRANDING_URLS
¶
Added in version 1.2.0
Default:
{'code': 'https://github.com/nautobot/nautobot',
'docs': None,
'help': 'https://github.com/nautobot/nautobot/wiki'}
Environment Variables:
-
NAUTOBOT_BRANDING_URLS_CODE
-
NAUTOBOT_BRANDING_URLS_DOCS
-
NAUTOBOT_BRANDING_URLS_HELP
A set of URLs that correspond to helpful links in the right of the footer on every web page. If a custom URL is not provided for any of the links, the default link within the Nautobot community is used.
CACHES
¶
Default:
{'default': {'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis://localhost:6379/1',
'OPTIONS': {'CLIENT_CLASS': 'django_redis.client.DefaultClient',
'PASSWORD': ''},
'TIMEOUT': 300}}
Environment Variables:
-
NAUTOBOT_CACHES_BACKEND
-
NAUTOBOT_REDIS_SCHEME
-
NAUTOBOT_REDIS_SSL
-
NAUTOBOT_REDIS_USERNAME
-
NAUTOBOT_REDIS_PASSWORD
-
NAUTOBOT_REDIS_HOST
-
NAUTOBOT_REDIS_PORT
-
NAUTOBOT_CACHES_TIMEOUT
The CACHES
setting is required to simplify the configuration for django-redis
.
The django-redis
Django plugin is used to enable Redis as a
concurrent write lock for preventing race conditions when allocating IP address objects.
Nautobot also uses the built-in Django cache framework
(which also relies on the CACHES
setting) to perform caching. This includes caching of the values of
administratively configurable settings as stored in the database.
Tip
Rather than directly setting CACHES["default"]["LOCATION"]
, we recommend managing this setting via
the various NAUTOBOT_REDIS_*
environment variables, as those variables apply to both CACHES
and
CELERY_BROKER_URL
alike, which is typically preferable.
Added in version 2.3.4 — NAUTOBOT_CACHES_TIMEOUT
environment variable
Added support for the environment variable NAUTOBOT_CACHES_TIMEOUT
for configuring the
CACHES["default"]["TIMEOUT"]
setting. This environment variable also controls the cache timeout
for administratively configurable settings.
See Also:
CELERY_BEAT_HEARTBEAT_FILE
¶
Default:
"/tmp/nautobot_celery_beat_heartbeat"
Environment Variable: NAUTOBOT_CELERY_BEAT_HEARTBEAT_FILE
A file touched by Celery Beat during health check.
CELERY_BROKER_TRANSPORT_OPTIONS
¶
Default:
{}
A dict of additional options passed to the Celery broker transport.
This is only required when configuring Celery to utilize Redis Sentinel.
CELERY_BROKER_URL
¶
Default:
"redis://localhost:6379/0"
Environment Variables:
-
NAUTOBOT_CELERY_BROKER_URL
-
NAUTOBOT_REDIS_SCHEME
-
NAUTOBOT_REDIS_SSL
-
NAUTOBOT_REDIS_USERNAME
-
NAUTOBOT_REDIS_PASSWORD
-
NAUTOBOT_REDIS_HOST
-
NAUTOBOT_REDIS_PORT
Celery broker URL used to tell workers where queues are located.
If the NAUTOBOT_CELERY_BROKER_URL
environment variable is not set, the default for this setting will be influenced by the various NAUTOBOT_REDIS_*
environment variables instead, which is often preferable as those variables also influence the CACHES
configuration as well.
CELERY_BROKER_USE_SSL
¶
Default:
None
Optional configuration for Celery to use custom SSL certificates to connect to Redis.
See Also:
CELERY_REDIS_BACKEND_USE_SSL
¶
Default:
False
Optional configuration for Celery to use custom SSL certificates to connect to Redis.
See Also:
CELERY_TASK_DEFAULT_QUEUE
¶
Added in version 1.5.0
Default:
"default"
Environment Variable: NAUTOBOT_CELERY_TASK_DEFAULT_QUEUE
The default celery queue name that will be used by workers if no queue is specified in the nautobot-server celery worker
command. This queue will also be used by celery tasks if no queue is specified when a task is run.
CELERY_TASK_SOFT_TIME_LIMIT
¶
Default:
300
Environment Variable: NAUTOBOT_CELERY_TASK_SOFT_TIME_LIMIT
The global Celery task soft timeout (in seconds).
Any background task that exceeds this duration will receive a SoftTimeLimitExceeded
exception and is responsible for handling this exception and performing any necessary cleanup or final operations before ending.
See Also:
CELERY_TASK_TIME_LIMIT
¶
Default:
600
Environment Variable: NAUTOBOT_CELERY_TASK_TIME_LIMIT
The global Celery task hard timeout (in seconds).
Any background task that exceeds this duration will be forcibly killed with a SIGKILL
signal.
See Also:
CELERY_WORKER_PREFETCH_MULTIPLIER
¶
Added in version 2.2.9
Default:
4
Environment Variable: NAUTOBOT_CELERY_WORKER_PREFETCH_MULTIPLIER
How many tasks a worker is allowed to reserve for its own consumption and execution.
If set to 0
(not recommended) a single worker can reserve all tasks even if other workers are free. For short running tasks (such as webhooks) you may want to set this to a larger number to increase throughput. Conversely, for long-running tasks (such as SSoT or Golden-Config Jobs at scale) you may want to set this to 1
so that a worker executing a long-running task will not prefetch other tasks, which would block their execution until the long-running task completes.
See Also:
CELERY_WORKER_PROMETHEUS_PORTS
¶
Added in version 1.5.10
Default:
[]
Environment Variable: NAUTOBOT_CELERY_WORKER_PROMETHEUS_PORTS
Ports for Prometheus metric HTTP server running on the celery worker(s).
Normally this should be set to a single port, unless you have multiple workers running on a single machine, i.e. sharing the same available ports. In that case you need to specify a range of ports greater than or equal to the highest amount of workers you are running on a single machine (comma-separated, like "8080,8081,8082"). You can then use the target_limit
parameter to the Prometheus scrape_config
to ensure you are not getting duplicate metrics in that case. Set this to an empty list to disable it.
CELERY_WORKER_REDIRECT_STDOUTS
¶
Added in version 2.0.0
Default:
True
Environment Variable: NAUTOBOT_CELERY_WORKER_REDIRECT_STDOUTS
If enabled stdout and stderr of running jobs will be redirected to the task logger.
CELERY_WORKER_REDIRECT_STDOUTS_LEVEL
¶
Added in version 2.0.0
Default:
"WARNING"
Permitted Values:
-
'DEBUG'
-
'INFO'
-
'WARNING'
-
'ERROR'
-
'CRITICAL'
Environment Variable: NAUTOBOT_CELERY_WORKER_REDIRECT_STDOUTS_LEVEL
The log level of log messages generated by redirected job stdout and stderr.
CHANGELOG_RETENTION
¶
Default:
90
Environment Variable: NAUTOBOT_CHANGELOG_RETENTION
The number of days to retain logged changes (object creations, updates, and deletions). Set this to 0
to retain changes in the database indefinitely.
Warning
If enabling indefinite changelog retention, it is recommended to periodically delete old entries. Otherwise, the database may eventually exceed capacity.
Changed in version 2.3.0
As of Nautobot 2.3.0, changelog cleanup does not run automatically. Use the Cleanup of ObjectChange records
system Job to handle changelog cleanup; you may schedule this to run automatically like any other Job if
desired. The CHANGELOG_RETENTION
setting provides a default age cutoff for the Job but may be overridden
at runtime if desired.
Tip
If you do not set a value for this setting in your nautobot_config.py
, it can be configured dynamically by an admin user via the Nautobot Admin UI. If you do have a value for this setting in nautobot_config.py
, it will override any dynamically configured value.
CONFIG_CONTEXT_DYNAMIC_GROUPS_ENABLED
¶
Default:
False
Environment Variable: NAUTOBOT_CONFIG_CONTEXT_DYNAMIC_GROUPS_ENABLED
If True
, it will be possible to apply Config Context objects to Devices and Virtual Machines via Dynamic Group membership. When set to False
this behavior will not be available.
Warning
With a large number of dynamic groups, enabling this could invoke a performance penalty when processing Config Contexts.
CONTENT_TYPE_CACHE_TIMEOUT
¶
Added in version 1.6.0
Default:
0
Environment Variable: NAUTOBOT_CONTENT_TYPE_CACHE_TIMEOUT
The number of seconds to cache the content type accessible via a object's class property Object._content_type_cached
. This can save frequent calls to ContentType.objects.get_for_model(model)
. Set this to 0
to disable caching.
CORS_ALLOW_ALL_ORIGINS
¶
Default:
False
Environment Variable: NAUTOBOT_CORS_ALLOW_ALL_ORIGINS
If True
, all origins will be allowed. Other settings restricting allowed origins will be ignored.
Setting this to True
can be dangerous, as it allows any website to make cross-origin requests to yours. Generally you'll want to restrict the list of allowed origins with CORS_ALLOWED_ORIGINS
or CORS_ALLOWED_ORIGIN_REGEXES
.
CORS_ALLOWED_ORIGIN_REGEXES
¶
Default:
[]
A list of strings representing regexes that match Origins that are authorized to make cross-site HTTP requests.
Useful when CORS_ALLOWED_ORIGINS
is impractical, such as when you have a
large number of subdomains.
Example:
CORS_ALLOWED_ORIGINS
¶
Default:
[]
A list of origins that are authorized to make cross-site HTTP requests.
An Origin is defined by the CORS RFC Section 3.2 as a
URI scheme + hostname + port
, or one of the special values 'null'
or 'file://'
.
Default ports (HTTPS = 443, HTTP = 80) are optional here.
The special value null
is sent by the browser in
"privacy-sensitive contexts", such as when the client
is running from a file://
domain.
The special value file://
is sent accidentally by some versions of Chrome on Android as per this bug.
Example:
CORS_ALLOWED_ORIGINS = [
'https://example.com',
'https://sub.example.com',
'http://localhost:8080',
'http://127.0.0.1:9000'
]
CSRF_TRUSTED_ORIGINS
¶
Default:
[]
Environment Variable: NAUTOBOT_CSRF_TRUSTED_ORIGINS
A list of hosts (fully-qualified domain names (FQDNs) or subdomains) that are considered trusted origins for cross-site secure requests such as HTTPS POST.
You might need to set this if you are using a reverse proxy or load balancer that changes the host header or if you face the error 'Invalid Form Submission - CSRF failure has occured' and 'Origin checking failed - https://subdomain.example.com does not match any trusted origins.'
Example:
python CSRF_TRUSTED_ORIGINS = ['https://subdomain.example.com', 'https://*.example.com']
See Also:
DATABASE_ROUTERS
¶
Default:
[]
Custom database router to generate the before & after queries for generating diffs. Used for Nautobot Version Control App.
DATABASES
¶
Default:
{'default': {'CONN_MAX_AGE': 300,
'ENGINE': 'django.db.backends.postgresql',
'HOST': 'localhost',
'NAME': 'nautobot',
'PASSWORD': '',
'PORT': '',
'USER': ''}}
Environment Variables:
-
NAUTOBOT_DB_TIMEOUT
-
NAUTOBOT_DB_ENGINE
-
NAUTOBOT_DB_HOST
-
NAUTOBOT_DB_NAME
-
NAUTOBOT_DB_PASSWORD
-
NAUTOBOT_DB_PORT
-
NAUTOBOT_DB_USER
Nautobot requires access to a supported database service to store data. This service can run locally on the Nautobot server or on a remote system.
Nautobot supports either MySQL or PostgreSQL as a database backend. You must make sure that the ENGINE
setting matches your selected database backend or you will be unable to connect to the database.
Note
Nautobot supports all database options supported by the underlying Django framework.
For a complete list of available parameters, please see the
official Django documentation on DATABASES
.
Warning
By default, MySQL is case-insensitive in its handling of text strings. This is different from PostgreSQL which is case-sensitive by default. We strongly recommend that you configure MySQL to be case-sensitive for use with Nautobot, either when you enable the MySQL server, or when you create the Nautobot database in MySQL. If you follow the provided installation instructions for CentOS or Ubuntu, the recommended steps there will include the appropriate database configuration.
Tip
When using MySQL as a database backend, and you want to enable support for Unicode characters like the beloved poop emoji, you'll need to update your settings.
If you try to use emojis without this setting, you will encounter a server error along the lines of
Incorrect string value
, because you are running afoul of the legacy implementation of Unicode
(aka utf8
) encoding in MySQL. The utf8
encoding in MySQL is limited to 3-bytes per character.
Newer Unicode emoji require 4-bytes.
To properly support using such characters, you will need to create an entry in
DATABASES
-> default
-> OPTIONS
with the value {"charset": "utf8mb4"}
in your nautobot_config.py
and restart all Nautobot services. This will tell MySQL to always use utf8mb4
character set
for database client connections.
As of Nautobot 1.1.5 and later, if you have generated a new nautobot_config.py
using
nautobot-server init
, this line is already present in your config and no action is required.
See Also:
DATE_FORMAT
¶
Default:
"N j, Y"
Environment Variable: NAUTOBOT_DATE_FORMAT
Custom format for dates. The default results in strings like "January 22, 2024".
See Also:
DATETIME_FORMAT
¶
Default:
"N j, Y g:i a"
Environment Variable: NAUTOBOT_DATETIME_FORMAT
Custom format for date-times. The default results in strings like "January 22, 2024 1:22 p.m.".
See Also:
DEBUG
¶
Default:
False
Environment Variable: NAUTOBOT_DEBUG
This setting enables debugging. Debugging should be enabled only during development or troubleshooting.
Note that only clients which access Nautobot from a recognized internal IP address will see debugging tools in the user interface.
Warning
Never enable debugging on a production system, as it can expose sensitive data to unauthenticated users and imposes a substantial performance penalty.
See Also:
DEPLOYMENT_ID
¶
Added in version 1.6.0
Default:
""
Environment Variable: NAUTOBOT_DEPLOYMENT_ID
Setting to uniquely but anonymously identify Nautobot deployments when sending installation metrics.
Defaults to a random UUID generated at installation time.
This setting is used to uniquely but anonymously identify Nautobot deployments when sending installation metrics. This setting is not generally intended to be user-serviceable.
Tip
If you do not set a value for this setting in your nautobot_config.py
, it can be configured dynamically by an admin user via the Nautobot Admin UI. If you do have a value for this setting in nautobot_config.py
, it will override any dynamically configured value.
See Also:
DEVICE_NAME_AS_NATURAL_KEY
¶
Added in version 2.0.0
Default:
False
Environment Variable: NAUTOBOT_DEVICE_NAME_AS_NATURAL_KEY
Device
names are not guaranteed globally-unique by Nautobot but in practice they often are. Set this to True
to use the device name
alone as the natural key for Device
objects. Set this to False
to use the sequence (name, tenant, location)
as the natural key instead.
Tip
If you do not set a value for this setting in your nautobot_config.py
, it can be configured dynamically by an admin user via the Nautobot Admin UI. If you do have a value for this setting in nautobot_config.py
, it will override any dynamically configured value.
EXEMPT_VIEW_PERMISSIONS
¶
Default:
[]
A list of Nautobot models to exempt from the enforcement of view permissions.
Models listed here will be viewable by all users, both authenticated and anonymous.
List models in the form <app>.<model>
.
Example:
To exempt all models from view permission enforcement, set the following.
(Note that EXEMPT_VIEW_PERMISSIONS
must be an iterable.)
Note
Using a wildcard will not affect certain potentially sensitive models, such as user permissions. If there is a need to exempt these models, they must be specified individually.
EXTERNAL_AUTH_DEFAULT_GROUPS
¶
Default:
[]
The list of group names to assign a new user account when created using 3rd-party authentication.
EXTERNAL_AUTH_DEFAULT_PERMISSIONS
¶
Default:
{}
A mapping of permissions to assign a new user account when created using SSO authentication.
Each key in the dictionary will be the permission name specified as <app_label>.<action>_<model>
,
and the value should be set to the permission constraints,
or None
to allow all objects.
Example:
Permission | Description |
---|---|
{'dcim.view_device': {}} or {'dcim.view_device': None} |
Users can view all devices |
{'dcim.add_device': {}} |
Users can add devices, see note below |
{'dcim.view_device': {'location__name__in': ['HQ'], 'location__location_type__name__in': ['Building']}} |
Users can view all devices in the HQ Building |
Warning
Permissions can be complicated! Be careful when restricting permissions to also add any required prerequisite permissions.
For example, when adding Devices the Role, Device Type, Location, and Status fields are all required fields in order for the UI to function properly. Users will also need view permissions for those models or the corresponding field selections in the UI will be unavailable and potentially prevent objects from being able to be created or edited.
The following example gives a user a reasonable amount of access to add devices to a single location (Building HQ in this case):
{
'dcim.add_device': {'location__name__in': ['HQ'], 'location__location_type__name__in': ['Building']},
'dcim.view_device': {'location__name__in': ['HQ'], 'location__location_type__name__in': ['Building']},
'dcim.view_devicetype': None,
'extras.view_role': None,
'extras.view_status': None,
'dcim.view_location': {'name__in': ['HQ'], 'location_type__name__in': ['Building']},
'dcim.view_manufacturer': None,
'dcim.view_region': None,
'dcim.view_rack': None,
'dcim.view_rackgroup': None,
'dcim.view_platform': None,
'virtualization.view_cluster': None,
'virtualization.view_clustergroup': None,
'tenancy.view_tenant': None,
'tenancy.view_tenantgroup': None,
}
See Also:
FORCE_SCRIPT_NAME
¶
Default:
None
If not None, this will be used as the value of the SCRIPT_NAME
environment variable in any HTTP request.
This setting can be used to override the server-provided value of SCRIPT_NAME
, which is most commonly used
for hosting Nautobot in a subdirectory (e.g. example.com/nautobot/).
Important
To host Nautobot under a subdirectory you must set this value to match the same prefix configured on
your HTTP server. For example, if you configure NGINX to serve Nautobot at /nautobot/
, you must
set FORCE_SCRIPT_NAME = "/nautobot/"
.
See Also:
GIT_ROOT
¶
Default:
"~/.nautobot/git"
Environment Variable: NAUTOBOT_GIT_ROOT
The file path to a directory where cloned Git repositories will be located.
GRAPHQL_COMPUTED_FIELD_PREFIX
¶
Default:
"cpf"
The prefix used for all computed fields in GraphQL. e.g. my_field
=> cpf_my_field
GRAPHQL_CUSTOM_FIELD_PREFIX
¶
Default:
"cf"
The prefix used for all custom fields in GraphQL. e.g. my_field
=> cf_my_field
GRAPHQL_RELATIONSHIP_PREFIX
¶
Default:
"rel"
The prefix used for all relationship associations in GraphQL. e.g. my_relationship
=> rel_my_relationship
.
HTTP_PROXIES
¶
Default:
None
A dictionary of HTTP proxies to use for outbound requests originating from Nautobot (such as when sending webhook requests).
Proxies should be specified by schema (HTTP and HTTPS) as per the
Python requests
library documentation.
Example:
Note
When using Git repositories within Nautobot the Python library GitPython
needs extra proxy configuration:
INSTALLATION_METRICS_ENABLED
¶
Added in version 1.6.0
Default:
True
Environment Variable: NAUTOBOT_INSTALLATION_METRICS_ENABLED
Controls sending of anonymized installation metrics to the Nautobot maintainers.
Default value is user-specified when running nautobot-server init
for a new deployment. Defaults to True
when upgrading pre-1.6.0 deployments without configuring a value.
When set to True
, Nautobot will send anonymized installation metrics to the Nautobot maintainers when running the post_upgrade
or send_installation_metrics
management commands.
See Also:
INTERNAL_IPS
¶
Default:
['127.0.0.1', '::1']
A list of IP addresses recognized as internal to the system, used to control the display of debugging output.
For example, the Django debugging toolbar, if installed, will be viewable only when a client is accessing Nautobot from one of the listed IP addresses (and DEBUG
is true).
JOB_CREATE_FILE_MAX_SIZE
¶
Added in version 2.1.0
Default:
10485760
Environment Variable: NAUTOBOT_JOB_CREATE_FILE_MAX_SIZE
The maximum file size (in bytes) that a running Job will be allowed to create in a single call to Job.create_file()
.
Tip
If you do not set a value for this setting in your nautobot_config.py
, it can be configured dynamically by an admin user via the Nautobot Admin UI. If you do have a value for this setting in nautobot_config.py
, it will override any dynamically configured value.
See Also:
JOB_FILE_IO_STORAGE
¶
Added in version 2.1.0
Default:
"db_file_storage.storage.DatabaseFileStorage"
Environment Variable: NAUTOBOT_JOB_FILE_IO_STORAGE
The backend storage engine for handling files provided as input to Jobs and files generated as output by Jobs.
Warning
For backwards compatibility with storage of Job inputs in prior versions of Nautobot, this
currently defaults to using DatabaseFileStorage
to store such files directly in Nautobot's database;
however this is not typically the best option (see below) and may change in a future major release.
If your Nautobot server instance(s) and your Celery worker instance(s) share a common
MEDIA_ROOT
filesystem (as would typically be the case in a single-server installation of
Nautobot) then we recommend changing this to "django.core.files.storage.FileSystemStorage"
to store
Job files on the filesystem (which will place them into a files/
subdirectory under
MEDIA_ROOT
) instead of in the database.
If your Nautobot server instance(s) and Celery worker instance(s) do not share a common filesystem,
we recommend using one of the django-storages
options
such as S3 to provide a storage backend that can be accessed by the server(s) and worker(s) alike.
Tip
For an example of using django-storages
with AWS S3 buckets, visit the
django-storages with S3 user-guide.
If you have neither a common MEDIA_ROOT
filesystem nor an appropriate remote storage option, then
it's permissible to leave this at its default, but know that storing files in the database is provided here
as a "least-worst" option only.
Caution
It's typically safe to change this setting when initially updating to Nautobot 2.1.0 or later, as there should be no pre-existing Job output files, although any existing scheduled Jobs that have file inputs may need to be deleted and recreated after doing so. However, once you've run any Jobs that output to a file, changing storage backends will of course break any existing links to Job output files in the previous storage backend. Migrating Job stored files from one backend to another is out of scope for this document.
See Also:
JOBS_ROOT
¶
Default:
"~/.nautobot/jobs"
Environment Variable: NAUTOBOT_JOBS_ROOT
The file path to a directory where Jobs can be discovered.
Changed in version 2.0.0
This directory no longer requires an __init__.py
file.
LOCATION_NAME_AS_NATURAL_KEY
¶
Added in version 2.0.0
Default:
False
Environment Variable: NAUTOBOT_LOCATION_NAME_AS_NATURAL_KEY
Location
names are not guaranteed globally-unique by Nautobot but in practice they often are. Set this to True
to use the location name
alone as the natural key for Location
objects. Set this to False
to use the sequence (name, parent__name, parent__parent__name, ...)
as the natural key instead.
Tip
If you do not set a value for this setting in your nautobot_config.py
, it can be configured dynamically by an admin user via the Nautobot Admin UI. If you do have a value for this setting in nautobot_config.py
, it will override any dynamically configured value.
LOG_DEPRECATION_WARNINGS
¶
Added in version 1.5.2
Default:
False
Environment Variable: NAUTOBOT_LOG_DEPRECATION_WARNINGS
Set the environment variable NAUTOBOT_LOG_DEPRECATION_WARNINGS
to change this setting. This can be set to True
to allow deprecation warnings raised by Nautobot to (additionally) be logged as WARNING
level log messages.
Warning
This setting cannot be effectively configured in nautobot_config.py
due to the order of code evaluation
at startup time. To enable this setting, always use the NAUTOBOT_LOG_DEPRECATION_WARNINGS
environment variable.
Deprecation warnings are normally silent in Python, but can be enabled globally by
various means such as setting the PYTHONWARNINGS
environment variable. However, doing so can be rather noisy, as it will also include warnings from within
Django about various code in various package dependencies of Nautobot's, etc.
This configuration setting allows a more targeted enablement of only warnings from within Nautobot itself, which can be useful when vetting various Nautobot Apps for future-proofness against upcoming changes to Nautobot.
LOGGING
¶
Default:
{
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'normal': {
'datefmt': '%H:%M:%S',
'format': '%(asctime)s.%(msecs)03d %(levelname)-7s %(name)s :\n %(message)s',
},
'verbose': {
'datefmt': '%H:%M:%S',
'format': '%(asctime)s.%(msecs)03d %(levelname)-7s %(name)-20s %(filename)-15s '
'%(funcName)30s() :\n %(message)s',
},
},
'handlers': {
'normal_console': {
'class': 'logging.StreamHandler',
'formatter': 'normal',
'level': 'INFO',
},
'verbose_console': {
'class': 'logging.StreamHandler',
'formatter': 'verbose',
'level': 'DEBUG',
},
},
'loggers': {
'django': {'handlers': ['normal_console'], 'level': 'INFO'},
'nautobot': {'handlers': ['normal_console'], 'level': 'INFO'},
},
}
A dictionary containing the configuration settings for logging in Nautobot.
The default translates to:
- All messages from Django and from Nautobot of INFO severity or higher will be logged to the console.
- If
DEBUG
is True, Nautobot DEBUG messages will also be logged, and all Nautobot messages will be logged with a more verbose format including the filename and function name that originated each log message.
The default log formatters split each log message across two lines of output for greater readability, which is useful for local observation and troubleshooting, but you may find it impractical to use in production environments that expect one line per log message. Fortunately, the Django framework allows for extensive customization of logging format and destination.
Below is an example configuration extension which will additionally write all INFO and higher messages to a local file:
LOGGING["handlers"]["file"] = {
"level": "INFO",
"class": "logging.FileHandler",
"filename": "/var/log/nautobot.log",
"formatter": "normal",
}
LOGGING["loggers"]["django"]["handlers"] += ["file"]
LOGGING["loggers"]["nautobot"]["handlers"] += ["file"]
Available Loggers¶
django.*
- Generic Django operations (HTTP requests/responses, etc.)nautobot.<app>.<module>
- Generic form for model- or module-specific log messagesnautobot.auth.*
- Authentication eventsnautobot.extras.jobs.*
- Job execution (* = JobClassName
)nautobot.core.graphql.*
- GraphQL initialization and operation.nautobot.extras.plugins.*
- App loading and activitynautobot.core.views.generic.*
- Generic views which handle business logic for the web UI
Structlog Configuration¶
As of Nautobot 2.3, django-structlog is added as a core dependency. To use structlog, you can add the following code to your nautobot_config.py
file:
from nautobot.core.settings_funcs import setup_structlog_logging
setup_structlog_logging(
LOGGING,
INSTALLED_APPS,
MIDDLEWARE,
log_level="DEBUG" if DEBUG else "INFO",
root_level="INFO",
plain_format=bool(DEBUG), # Set to True to use human-readable structlog format over JSON
debug_db=False, # Set to True to log all database queries
)
Calling this function disables logging if running tests, otherwise:
- Overwrites all
formatters
andhandlers
to avoid logging duplication. It's possible to add customformatters
andhandlers
after calling this function. - Updates all
loggers
to use structlog with the specifiedlog_level
. - Adds or updates the root logger to use structlog with the specified
root_level
. - Uses a human-readable structlog format if
plain_format
is True, otherwise uses JSON. - Adds database query logging if
debug_db
is True. - Adds necessary Django apps and middleware for structlog.
See Also:
MAINTENANCE_MODE
¶
Default:
False
Environment Variable: NAUTOBOT_MAINTENANCE_MODE
Setting this to true causes Nautobot to go into maintenance mode.
Setting this to True
will display a "maintenance mode" banner at the top of every page.
Additionally, Nautobot will no longer update a user's "last active" time upon login.
This is to allow new logins when the database is in a read-only state.
Recording of login times will resume when maintenance mode is disabled.
Note
The default SESSION_ENGINE
configuration will store sessions in the database,
but this obviously will not work when MAINTENANCE_MODE
is True
and the database is in
a read-only state for maintenance. Consider setting SESSION_ENGINE
to
django.contrib.sessions.backends.cache
when enabling MAINTENANCE_MODE
.
Note
The Docker container normally attempts to run migrations on startup; however, if the database is
in a read-only state the Docker container will fail to start. Setting the environment variable
NAUTOBOT_DOCKER_SKIP_INIT
to true
will prevent the migrations from occurring.
Note
If you are using django-auth-ldap
for LDAP authentication, django-auth-ldap
by default will
try to update a user object on every log in. If the database is in a read-only state django-auth-ldap
will fail. You will also need to set AUTH_LDAP_ALWAYS_UPDATE_USER=False
and AUTH_LDAP_NO_NEW_USERS=True
to avoid this.
See Also:
MAX_PAGE_SIZE
¶
Default:
1000
Environment Variable: NAUTOBOT_MAX_PAGE_SIZE
A web user or API consumer can request an arbitrary number of objects by appending the limit
parameter to the URL (e.g. ?limit=1000
). This parameter defines the maximum acceptable limit. Setting this to 0
or None
will allow a client to retrieve all matching objects at once with no limit by specifying ?limit=0
.
Tip
If you do not set a value for this setting in your nautobot_config.py
, it can be configured dynamically by an admin user via the Nautobot Admin UI. If you do have a value for this setting in nautobot_config.py
, it will override any dynamically configured value.
MEDIA_ROOT
¶
Default:
"~/.nautobot/media"
The file path to the location where media files (such as image attachments) are stored.
See Also:
METRICS_AUTHENTICATED
¶
Added in version 2.1.5
Default:
False
Environment Variable: NAUTOBOT_METRICS_AUTHENTICATED
Toggle requiring authentication to view /metrics
.
See Also:
METRICS_DISABLED_APPS
¶
Added in version 2.2.1
Default:
[]
Environment Variable: NAUTOBOT_METRICS_DISABLED_APPS
A list of app names for which Prometheus metrics should be disabled. (If provided as an environment variable, it should be a comma-separated string, for example NAUTOBOT_METRICS_DISABLED_APPS="nautobot_ssot, nautobot_device_lifecycle_mgmt"
.)
See Also:
METRICS_ENABLED
¶
Default:
False
Environment Variable: NAUTOBOT_METRICS_ENABLED
Toggle the availability of Prometheus-compatible metrics at /metrics
.
See Also:
NAPALM_ARGS
¶
Default:
{}
A dictionary of optional arguments to pass to NAPALM when instantiating a network driver.
Example:
Some platforms (e.g. Cisco IOS) require an enable password to be passed in addition to the normal password.
If desired, you can use the configured NAPALM_PASSWORD
as the value for this argument:
NAPALM_USERNAME = 'username'
NAPALM_PASSWORD = 'MySecretPassword'
NAPALM_ARGS = {
'secret': NAPALM_PASSWORD, # ios and nxos_ssh
'enable_password': NAPALM_PASSWORD, # eos
# Include any additional args here
}
Note
If a given device has an appropriately populated
secrets group assigned to it,
a secret defined in that group can override the
NAPALM_ARGS['secret']
or NAPALM_ARGS['enable_password']
default value defined here.
See Also:
NAPALM_PASSWORD
¶
Default:
""
Environment Variable: NAUTOBOT_NAPALM_PASSWORD
Nautobot will use this optional credential with NAPALM_USERNAME
when authenticating to remote devices via the NAPALM library, if installed.
Note
If SSH public key authentication has been set up on the remote device(s) for the system account under which Nautobot runs, this parameter is not needed.
Note
If a given device has an appropriately populated secrets group assigned to it, the secrets defined in that group will take precedence over these default values.
NAPALM_TIMEOUT
¶
Default:
30
Environment Variable: NAUTOBOT_NAPALM_TIMEOUT
The amount of time (in seconds) to wait for NAPALM to connect to a device.
NAPALM_USERNAME
¶
Default:
""
Environment Variable: NAUTOBOT_NAPALM_USERNAME
Nautobot will use this optional credential with NAPALM_PASSWORD
when authenticating to remote devices via the NAPALM library, if installed.
Note
If SSH public key authentication has been set up on the remote device(s) for the system account under which Nautobot runs, this parameter is not needed.
Note
If a given device has an appropriately populated secrets group assigned to it, the secrets defined in that group will take precedence over these default values.
NAUTOBOT_ROOT
¶
Default:
"~/.nautobot/"
Environment Variable: NAUTOBOT_ROOT
The filesystem path to use to store Nautobot files (Jobs, uploaded images, Git repositories, etc.).
This setting is used internally in the core settings to provide default locations for
features that require file storage, and the
default location of the nautobot_config.py
.
Warning
Do not override NAUTOBOT_ROOT
in your nautobot_config.py
. It will not work as expected.
If you need to customize this setting, please always set the NAUTOBOT_ROOT
environment variable.
NETWORK_DRIVERS
¶
Added in version 1.6.0
Default:
{}
An optional dictionary to extend or override the default Platform.network_driver
translations provided by netutils.
For example, to add support for a custom Platform.network_driver
value of "my_network_driver"
for Netmiko and PyATS drivers:
NETWORK_DRIVERS = {
'netmiko': {'my_network_driver': 'cisco_ios'},
'pyats': {'my_network_driver': 'iosxe'},
}
The default top-level keys are ansible
, hier_config
, napalm
, netmiko
, netutils_parser
,
ntc_templates
, pyats
, pyntc
, and scrapli
, but you can also add additional keys if you have
an alternative network driver that you want your Nautobot instance to include.
Tip
If you do not set a value for this setting in your nautobot_config.py
, it can be configured dynamically by an admin user via the Nautobot Admin UI. If you do have a value for this setting in nautobot_config.py
, it will override any dynamically configured value.
PAGINATE_COUNT
¶
Default:
50
Environment Variable: NAUTOBOT_PAGINATE_COUNT
The default maximum number of objects to display per page within each list of objects. Applies to both the UI and the REST API.
Tip
If you do not set a value for this setting in your nautobot_config.py
, it can be configured dynamically by an admin user via the Nautobot Admin UI. If you do have a value for this setting in nautobot_config.py
, it will override any dynamically configured value.
PER_PAGE_DEFAULTS
¶
Default:
[25, 50, 100, 250, 500, 1000]
Environment Variable: NAUTOBOT_PER_PAGE_DEFAULTS
The options displayed in the web interface dropdown to limit the number of objects per page.
For proper user experience, this list should include the PAGINATE_COUNT
and MAX_PAGE_SIZE
values as options.
Tip
If you do not set a value for this setting in your nautobot_config.py
, it can be configured dynamically by an admin user via the Nautobot Admin UI. If you do have a value for this setting in nautobot_config.py
, it will override any dynamically configured value.
PLUGINS
¶
Default:
[]
A list of installed Nautobot Apps to enable. Apps will not take effect unless they are listed here.
Warning
Apps extend Nautobot by allowing external code to run with the same access and privileges as Nautobot itself. Only install Apps from trusted sources. The Nautobot maintainers make absolutely no guarantees about the integrity or security of your installation with Apps enabled.
PLUGINS_CONFIG
¶
Default:
{}
This parameter holds configuration settings for individual Nautobot Apps.
It is defined as a dictionary, with each key using the name of an installed App. The specific parameters supported are unique to each App; reference the App's documentation to determine the supported parameters. An example configuration is shown below:
Note that an App must be listed in PLUGINS
for its configuration to take effect.
PREFER_IPV4
¶
Default:
False
Environment Variable: NAUTOBOT_PREFER_IPV4
When determining the primary IP address for a device, IPv6 is preferred over IPv4 by default. Set this to True to prefer IPv4 instead.
Tip
If you do not set a value for this setting in your nautobot_config.py
, it can be configured dynamically by an admin user via the Nautobot Admin UI. If you do have a value for this setting in nautobot_config.py
, it will override any dynamically configured value.
RACK_ELEVATION_DEFAULT_UNIT_HEIGHT
¶
Default:
22
Environment Variable: NAUTOBOT_RACK_ELEVATION_DEFAULT_UNIT_HEIGHT
Default height (in pixels) of a unit within a rendered rack elevation. For best results, this should be approximately one tenth of `RACK_ELEVATION_DEFAULT_UNIT_WIDTH.
Tip
If you do not set a value for this setting in your nautobot_config.py
, it can be configured dynamically by an admin user via the Nautobot Admin UI. If you do have a value for this setting in nautobot_config.py
, it will override any dynamically configured value.
RACK_ELEVATION_DEFAULT_UNIT_WIDTH
¶
Default:
230
Environment Variable: NAUTOBOT_RACK_ELEVATION_DEFAULT_UNIT_WIDTH
Default width (in pixels) of a unit within a rendered rack elevation.
Tip
If you do not set a value for this setting in your nautobot_config.py
, it can be configured dynamically by an admin user via the Nautobot Admin UI. If you do have a value for this setting in nautobot_config.py
, it will override any dynamically configured value.
RACK_ELEVATION_UNIT_TWO_DIGIT_FORMAT
¶
Added in version 2.2.1
Default:
False
Environment Variable: NAUTOBOT_RACK_ELEVATION_UNIT_TWO_DIGIT_FORMAT
Enables two-digit format for the rack unit numbering in a rack elevation diagram.
Tip
If you do not set a value for this setting in your nautobot_config.py
, it can be configured dynamically by an admin user via the Nautobot Admin UI. If you do have a value for this setting in nautobot_config.py
, it will override any dynamically configured value.
REDIS_LOCK_TIMEOUT
¶
Default:
600
Environment Variable: NAUTOBOT_REDIS_LOCK_TIMEOUT
Maximum duration of a Redis lock created when calling /api/ipam/prefixes/{id}/available-prefixes/
or /api/ipam/prefixes/{id}/available-ips/
to avoid inadvertently allocating the same prefix or IP to multiple simultaneous callers.
Default is set to 600 seconds (10 minutes) to be longer than any theoretical API call time. This is to prevent a deadlock scenario where the server did not gracefully exit the with
block when acquiring the Redis lock.
RELEASE_CHECK_TIMEOUT
¶
Default:
86400
Environment Variable: NAUTOBOT_RELEASE_CHECK_TIMEOUT
The number of seconds to retain the latest version that is fetched from the GitHub API before automatically invalidating it and fetching it from the API again.
Warning
This must be set to at least one hour (3600
seconds). Setting it to a value lower than this is an error.
Tip
If you do not set a value for this setting in your nautobot_config.py
, it can be configured dynamically by an admin user via the Nautobot Admin UI. If you do have a value for this setting in nautobot_config.py
, it will override any dynamically configured value.
RELEASE_CHECK_URL
¶
Default:
""
Environment Variable: NAUTOBOT_RELEASE_CHECK_URL
This parameter defines the URL of the repository that will be checked periodically for new Nautobot releases. When a new release is detected, a message will be displayed to administrative users on the home page.
This can be set to the official repository ('https://api.github.com/repos/nautobot/nautobot/releases'
)
or a custom fork. Set this to None
to disable automatic update checks.
Note
The URL provided must be compatible with the GitHub REST API.
Tip
If you do not set a value for this setting in your nautobot_config.py
, it can be configured dynamically by an admin user via the Nautobot Admin UI. If you do have a value for this setting in nautobot_config.py
, it will override any dynamically configured value.
REMOTE_AUTH_AUTO_CREATE_USER
¶
Default:
False
If set to True
, local accounts will be automatically created for users authenticated via a remote service.
See Also:
REMOTE_AUTH_HEADER
¶
Default:
"HTTP_REMOTE_USER"
When remote user authentication is in use, this is the name of the HTTP header which informs Nautobot of the currently authenticated user. For example, to use the request header X-Remote-User
, it needs to be set to "HTTP_X_REMOTE_USER"
.
See Also:
SANITIZER_PATTERNS
¶
Added in version 1.3.4
Default:
[
(re.compile(r"(https?://)?\S+\s*@", re.IGNORECASE), r"\1{replacement}@"),
(
re.compile(r"(username|password|passwd|pwd|secret|secrets)([\"']?(?:\s+is.?|:)?\s+)\S+[\"']?", re.IGNORECASE),
r"\1\2{replacement}",
),
]
List of (regular expression, replacement pattern) tuples used by the nautobot.core.utils.logging.sanitize()
function.
As of Nautobot 1.3.4 this function is used primarily for sanitization of Job log entries, but it may be used in other scopes in the future.
This pattern catches patterns such as:
Pattern Match Examples |
---|
Password is1234 |
Password: is1234 |
Password is: is1234 |
Password is is1234 |
secret is: is1234 |
secret is is1234 |
secrets is: is1234 |
secrets is is1234 |
{"username": "is1234"} |
{"password": "is1234"} |
{"secret": "is1234"} |
{"secrets": "is1234"} |
Info
is1234
would be replaced in the Job logs with (redacted)
.
SECRET_KEY
¶
Default:
""
Environment Variable: NAUTOBOT_SECRET_KEY
This is a secret, random string used to assist in the creation of new cryptographic hashes for passwords and HTTP cookies.
The key defined here should not be shared outside of the configuration file.
SECRET_KEY
can be changed at any time, however be aware that doing so will invalidate all existing sessions.
SECRET_KEY
should be at least 50 characters long and contain a random mix of letters, digits, and symbols.
Note
A unique SECRET_KEY
is generated for you automatically when you use nautobot-server init
to create a new nautobot_config.py
.
You may run nautobot-server generate_secret_key
to generate a new key at any time.
Sample output:
Alternatively use the following command to generate a secret even before nautobot-server
is runnable:
Example output:
Warning
In the case of a highly available installation with multiple web servers, SECRET_KEY
must be identical
among all servers in order to maintain a persistent user session state.
SESSION_CACHE_ALIAS
¶
Default:
"default"
The Alias for the sessions cache defined in CACHES, used in Nautobot Version Control App.
SESSION_COOKIE_AGE
¶
Default:
1209600
Environment Variable: NAUTOBOT_SESSION_COOKIE_AGE
The maximum age of session cookies, in seconds. The default value is 2 weeks.
See Also:
SESSION_ENGINE
¶
Default:
"django.contrib.sessions.backends.db"
Controls where Nautobot stores session data.
To use cache-based sessions, set this to 'django.contrib.sessions.backends.cache'
. To use file-based sessions, set this to 'django.contrib.sessions.backends.file'
.
See Also:
SESSION_EXPIRE_AT_BROWSER_CLOSE
¶
Default:
False
Environment Variable: NAUTOBOT_SESSION_EXPIRE_AT_BROWSER_CLOSE
If this is set to True, Nautobot will use browser-length cookies - cookies that expire as soon as the user closes their browser. When set to False, session cookies will be stored in users' browsers for as long as SESSION_COOKIE_AGE
.
See Also:
SESSION_FILE_PATH
¶
Default:
None
Environment Variable: NAUTOBOT_SESSION_FILE_PATH
HTTP session data is used to track authenticated users when they access Nautobot. By default, Nautobot stores session data in its database. However, this inhibits authentication to a standby instance of Nautobot without write access to the database. Alternatively, a local file path may be specified here and Nautobot will store session data as files instead of using the database. Note that the Nautobot system user must have read and write permissions to this path.
If set to the default value of None
, Nautobot will use the standard temporary directory for the system.
If you set this value, you must also enable file-based sessions as explained under SESSION_ENGINE
.
SHORT_DATE_FORMAT
¶
Default:
"Y-m-d"
Environment Variable: NAUTOBOT_SHORT_DATE_FORMAT
Custom short format for dates. The default results in strings like "2024-01-22".
See Also:
SHORT_DATETIME_FORMAT
¶
Default:
"Y-m-d H:i"
Environment Variable: NAUTOBOT_SHORT_DATETIME_FORMAT
Custom short format for date-times. The default results in strings like "2024-01-22 13:23".
See Also:
SOCIAL_AUTH_BACKEND_PREFIX
¶
Default:
"social_core.backends"
Configuration of a custom external authentication backend with python-social-auth.
See Also:
STATIC_ROOT
¶
Default:
"~/.nautobot/static"
The location where static files (such as CSS, JavaScript, fonts, or images) used to serve the web interface will be staged by the nautobot-server collectstatic
command.
See Also:
STORAGE_BACKEND
¶
Default:
None
The backend storage engine for handling uploaded files (e.g. image attachments).
Nautobot supports integration with the django-storages
package, which provides backends for several popular file storage services.
If not configured, local filesystem storage will be used.
Tip
For an example of using django-storages
with AWS S3 buckets, visit the
django-storages with S3 user-guide.
The configuration parameters for the specified storage backend are defined under the
STORAGE_CONFIG
setting.
See Also:
STORAGE_CONFIG
¶
Default:
{}
A dictionary of configuration parameters for the storage backend configured as STORAGE_BACKEND.
The specific parameters to be used here are specific to each backend.
If STORAGE_BACKEND
is not defined, this setting will be ignored.
See Also:
STRICT_FILTERING
¶
Added in version 1.4.0
Default:
True
Environment Variable: NAUTOBOT_STRICT_FILTERING
If set to True
(default), UI and REST API filtering of object lists will fail if an unknown/unrecognized filter parameter is provided as a URL parameter. (For example, /dcim/devices/?ice_cream_flavor=chocolate
or /api/dcim/locations/?ice_cream_flavor=chocolate
)
UI list (table) views will report an error message in this case and display no filtered objects; REST API list endpoints will return a 400 Bad Request response with an explanatory error message.
If set to False
, unknown/unrecognized filter parameters will be discarded and ignored,
although Nautobot will log a warning message.
Warning
Setting this to False
can result in unexpected filtering results in the case of user error,
for example /dcim/devices/?has_primry_ip=false
(note the typo primry
) will result in a list of
all devices, rather than the intended list of only devices that lack a primary IP address.
In the case of Jobs or external automation making use of such a filter, this could have
wide-ranging consequences.
SUPPORT_MESSAGE
¶
Added in version 2.0.2
Default:
""
Environment Variable: NAUTOBOT_SUPPORT_MESSAGE
A message to include on error pages (status code 403, 404, 500, etc.) when an error occurs.
You can configure this to direct users to the appropriate contact(s) within your organization that provide support for Nautobot. Markdown formatting is supported within this message, as well as a limited subset of HTML.
If unset, the default message that will appear is
If further assistance is required, please join the #nautobot channel on
[Network to Code's Slack community](https://slack.networktocode.com) and post your question.
Tip
If you do not set a value for this setting in your nautobot_config.py
, it can be configured dynamically by an admin user via the Nautobot Admin UI. If you do have a value for this setting in nautobot_config.py
, it will override any dynamically configured value.
TEST_FACTORY_SEED
¶
Added in version 1.5.0
Default:
None
Environment Variable: NAUTOBOT_TEST_FACTORY_SEED
This configuration provides a fixed seed string for the pseudo-random generator used to populate test data into the database, providing for reproducible randomness across consecutive test runs. If unset, a random seed will be used each time.
See Also:
TEST_PERFORMANCE_BASELINE_FILE
¶
Added in version 1.5.0
Default:
"nautobot/core/tests/performance_baselines.yml"
Environment Variable: NAUTOBOT_TEST_PERFORMANCE_BASELINE_FILE
File path of a YAML file providing baseline times for all performance-related tests.
The YAML file should conform to the following format:
tests:
- name: >-
test_run_job_with_sensitive_variables_and_requires_approval
(nautobot.extras.tests.test_views.JobTestCase)
execution_time: 4.799533
- name: test_run_missing_schedule (nautobot.extras.tests.test_views.JobTestCase)
execution_time: 4.367563
- name: test_run_now_missing_args (nautobot.extras.tests.test_views.JobTestCase)
execution_time: 4.363194
- name: >-
test_create_object_with_constrained_permission
(nautobot.extras.tests.test_views.GraphQLQueriesTestCase)
execution_time: 3.474244
- name: >-
test_run_now_constrained_permissions
(nautobot.extras.tests.test_views.JobTestCase)
execution_time: 2.727531
TEST_USE_FACTORIES
¶
Added in version 1.5.0
Default:
False
Environment Variable: NAUTOBOT_TEST_USE_FACTORIES
If set to True
, the Nautobot test runner will call nautobot-server generate_test_data ...
before executing any test cases, pre-populating the test database with various pseudo-random instances of many of Nautobot's data models.
Warning
This functionality requires the installation of the factory-boy
Python package, which is present in Nautobot's own development environment, but is not an inherent
dependency of the Nautobot package when installed otherwise, such as into an App's development
environment.
Info
Setting this to True
is a requirement for all Nautobot core tests as of 1.5.0, and it is set accordingly
in nautobot/core/tests/nautobot_config.py
, but defaults to False
otherwise so as to remain
backwards-compatible with Apps that also may use the Nautobot test runner in their own test environments,
but have not yet updated their tests to account for the presence of this test data.
Because this test data can obviate the need to manually construct complex test data, and the random factor
can improve test robustness, App developers are encouraged to set this to True
in their configuration,
ensure that their development environments include the factory-boy
Python package as a test dependency,
and update their tests as needed.
See Also:
TIME_FORMAT
¶
Default:
"g:i a"
Environment Variable: NAUTOBOT_TIME_FORMAT
Custom format for times. The default results in strings like "1:23 p.m.".
See Also:
TIME_ZONE
¶
Default:
"UTC"
Environment Variable: NAUTOBOT_TIME_ZONE
The time zone Nautobot will use when dealing with dates and times. It is recommended to use UTC time unless you have a specific need to use a local time zone. Please see the list of available time zones.
Warning
Scheduled jobs will default to running in the time zone configured in this setting. If you change this setting from the default UTC, it must be set consistently on the Celery Beat server and all Nautobot web servers, or else your scheduled jobs may run in the wrong time zone.
See Also:
UI_RACK_VIEW_TRUNCATE_FUNCTION
¶
Added in version 1.4.0
Default:
def UI_RACK_VIEW_TRUNCATE_FUNCTION(device_display_name):
return str(device_display_name).split(".")[0]
This setting function is used to perform the rack elevation truncation feature.
This provides a way to tailor the truncation behavior to best suit the needs of the installation. The function must take only one argument: the device display name, as a string, attempting to be rendered on the rack elevation. The function must return only one argument: a string of the truncated device display name.
Environment-Variable-Only Settings¶
Warning
The following settings are only configurable as environment variables, and not via nautobot_config.py
or similar.
GIT_SSL_NO_VERIFY¶
Default: Unset
If you are using a self-signed git repository, you will need to set the environment variable GIT_SSL_NO_VERIFY="1"
in order for the repository to sync.
Warning
This must be specified as an environment variable. Setting it in nautobot_config.py
will not have the desired effect.
NAUTOBOT_LOG_DEPRECATION_WARNINGS¶
Added in version 1.5.2
Changed in version 1.5.3
This was previously available as a config file setting but changed to environment-variable only. Also DEBUG = True
will no longer work to log deprecation warnings.
Default: False
This can be set to True
to allow deprecation warnings raised by Nautobot to (additionally) be logged as WARNING
level log messages. (Deprecation warnings are normally silent in Python, but can be enabled globally by various means such as setting the PYTHONWARNINGS
environment variable. However, doing so can be rather noisy, as it will also include warnings from within Django about various code in various package dependencies of Nautobot's, etc. This configuration setting allows a more targeted enablement of only warnings from within Nautobot itself, which can be useful when vetting various Nautobot Apps for future-proofness against upcoming changes to Nautobot.)
NAUTOBOT_ROOT¶
Default: ~/.nautobot/
The filesystem path to use to store Nautobot files (Jobs, uploaded images, Git repositories, etc.).
This setting is used internally in the core settings to provide default locations for features that require file storage, and the default location of the nautobot_config.py
.
Warning
Do not override NAUTOBOT_ROOT
in your nautobot_config.py
. It will not work as expected. If you need to customize this setting, please always set the NAUTOBOT_ROOT
environment variable.