Installing Nautobot System Dependencies¶
The documentation assumes that you are running one of the following:
- Ubuntu 20.04+
- Debian 11+
- RHEL/CentOS 8.2+
- Delimited by
RHEL8
tabs in the docs, but also includes other derivatives of RHEL such as RockyLinux or AlmaLinux
- Delimited by
Install System Packages¶
Install the prerequisite system libraries and utilities.
This will install:
- Git
- Python 3
- Pip
- Redis server and client
Database Setup¶
In this step you'll set up your database server, create a database and database user for use by Nautobot, and verify your connection to the database.
You must select either MySQL (MariaDB is not supported) or PostgreSQL. PostgreSQL is used by default with Nautobot, so if you just want to get started or don't have a preference, please stick with PostgreSQL.
Please follow the steps for your selected database backend below.
Install PostgreSQL
This will install the PostgreSQL database server and client.
Create a PostgreSQL Database
At a minimum, we need to create a database for Nautobot and assign it a username and password for authentication. This is done with the following commands.
Danger
Do not use the password from the example. Choose a strong, random password to ensure secure database authentication for your Nautobot installation.
Example of Entering Postgres
CREATE DATABASE nautobot;
CREATE USER nautobot WITH PASSWORD 'insecure_password';
GRANT ALL PRIVILEGES ON DATABASE nautobot TO nautobot;
\connect nautobot
GRANT CREATE ON SCHEMA public TO nautobot;
\q
Example Postgres DB Creation Output
postgres=# CREATE DATABASE nautobot;
CREATE DATABASE
postgres=# CREATE USER nautobot WITH PASSWORD 'insecure_password';
CREATE ROLE
postgres=# GRANT ALL PRIVILEGES ON DATABASE nautobot TO nautobot;
GRANT
postgres=# \connect nautobot
You are now connected to database "nautobot" as user "postgres".
nautobot=# GRANT CREATE ON SCHEMA public TO nautobot;
GRANT
nautobot=# \q
Verify PostgreSQL Service Status
You can verify that authentication works issuing the following command and providing the configured password. (Replace localhost
with your database server if using a remote database.)
If successful, you will enter a nautobot
prompt. Type \conninfo
to confirm your connection, or type \q
to exit.
Example Postgres Connection Output
Password for user nautobot:
psql (12.5 (Ubuntu 12.5-0ubuntu0.20.04.1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.
nautobot=> \conninfo
You are connected to database "nautobot" as user "nautobot" on host "localhost" (address "127.0.0.1") at port "5432".
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
nautobot=> \q
Install MySQL
This will install the MySQL database server and client. Additionally, MySQL requires that the MySQL development libraries are installed so that we may compile the Python mysqlclient
library during the Nautobot installation steps.
Create a MySQL Database
At a minimum, we need to create a database for Nautobot and assign it a username and password for authentication. This is done with the following commands.
Note
Replace localhost
below with your database server if using a remote database.
Danger
Do not use the password from the example. Choose a strong, random password to ensure secure database authentication for your Nautobot installation.
CREATE DATABASE nautobot;
CREATE USER 'nautobot'@'localhost' IDENTIFIED BY 'insecure_password';
GRANT ALL ON nautobot.* TO 'nautobot'@'localhost';
\q
Example MySQL output
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 8.0.25-0ubuntu0.20.04.1 (Ubuntu)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> CREATE DATABASE nautobot;
Query OK, 1 row affected (0.00 sec)
mysql> CREATE USER 'nautobot'@'localhost' IDENTIFIED BY 'insecure_password';
Query OK, 0 rows affected (0.01 sec)
mysql> GRANT ALL ON nautobot.* TO 'nautobot'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> \q
Bye
Verify MySQL Service Status
You can verify that authentication works issuing the following command and providing the configured password.
If successful, you will enter a mysql>
prompt. Type status
to confirm your connection, or type \q
to exit.
Note
Replace localhost
below with your database server if using a remote database.
Then after the password prompt you can use status
and \q
commands
Example Verification of MySQL database
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 8.0.25-0ubuntu0.20.04.1 (Ubuntu)
Copyright (c) 2000, 2021, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> status
--------------
mysql Ver 8.0.25-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))
Connection id: 13
Current database: nautobot
Current user: nautobot@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 8.0.25-0ubuntu0.20.04.1 (Ubuntu)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
UNIX socket: /var/run/mysqld/mysqld.sock
Binary data as: Hexadecimal
Uptime: 26 min 31 sec
Threads: 2 Questions: 29 Slow queries: 0 Opens: 193 Flush tables: 3 Open tables: 112 Queries per second avg: 0.018
--------------
mysql> \q
Bye
Install PostgreSQL
This will install the PostgreSQL database server and client.
Initialize PostgreSQL
CentOS/RHEL requires a manual step to generate the initial configurations required by PostgreSQL.
Configure Authentication
CentOS/RHEL configures PostgreSQL to use ident
host-based authentication by default. Because Nautobot will need to authenticate using a username and password, we must update pg_hba.conf
to support md5
password authentication.
As root, edit /var/lib/pgsql/data/pg_hba.conf
and change ident
to md5
for the lines below.
Before:
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
After:
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
Start PostgreSQL
Start the service and enable it to run at system startup:
Create a PostgreSQL Database
At a minimum, we need to create a database for Nautobot and assign it a username and password for authentication. This is done with the following commands.
Danger
Do not use the password from the example. Choose a strong, random password to ensure secure database authentication for your Nautobot installation.
Create the database and grant permissions to the Nautobot user.
CREATE DATABASE nautobot;
CREATE USER nautobot WITH PASSWORD 'insecure_password';
GRANT ALL PRIVILEGES ON DATABASE nautobot TO nautobot;
\connect nautobot
GRANT CREATE ON SCHEMA public TO nautobot;
\q
Example Database creation output.
postgres=# CREATE DATABASE nautobot;
CREATE DATABASE
postgres=# CREATE USER nautobot WITH PASSWORD 'insecure_password';
CREATE ROLE
postgres=# GRANT ALL PRIVILEGES ON DATABASE nautobot TO nautobot;
GRANT
postgres=# \connect nautobot
You are now connected to database "nautobot" as user "postgres".
nautobot=# GRANT CREATE ON SCHEMA public TO nautobot;
GRANT
nautobot=# \q
Verify PostgreSQL Service Status
You can verify that authentication works issuing the following command and providing the configured password. (Replace localhost
with your database server if using a remote database.)
If successful, you will enter a nautobot
prompt. Type \conninfo
to confirm your connection, or type \q
to exit.
Install MySQL
This will install the MySQL database server and client. Additionally, MySQL requires that gcc
and the MySQL development libraries are installed so that we may compile the Python mysqlclient
library during the Nautobot installation steps.
Start MySQL
Start the service and enable it to run at system startup:
Create a MySQL Database
At a minimum, we need to create a database for Nautobot and assign it a username and password for authentication. This is done with the following commands.
Note
Replace localhost
below with your database server if using a remote database.
Danger
Do not use the password from the example. Choose a strong, random password to ensure secure database authentication for your Nautobot installation.
CREATE DATABASE nautobot;
CREATE USER 'nautobot'@'localhost' IDENTIFIED BY 'insecure_password';
GRANT ALL ON nautobot.* TO 'nautobot'@'localhost';
\q
Example Creation of MySQL DB
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.21 Source distribution
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> CREATE DATABASE nautobot;
Query OK, 1 row affected (0.00 sec)
mysql> CREATE USER 'nautobot'@'localhost' IDENTIFIED BY 'insecure_password';
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT ALL ON nautobot.* TO 'nautobot'@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> \q
Bye
Verify MySQL Service Status
You can verify that authentication works issuing the following command and providing the configured password.
If successful, you will enter a mysql>
prompt. Type status
to confirm your connection, or type \q
to exit.
Note
Replace localhost
below with your database server if using a remote database.
Example MySQL Verification
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.21 Source distribution
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> status
--------------
mysql Ver 8.0.21 for Linux on x86_64 (Source distribution)
Connection id: 10
Current database: nautobot
Current user: nautobot@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 8.0.21 Source distribution
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
UNIX socket: /var/lib/mysql/mysql.sock
Binary data as: Hexadecimal
Uptime: 4 min 12 sec
Threads: 2 Questions: 12 Slow queries: 0 Opens: 151 Flush tables: 3 Open tables: 69 Queries per second avg: 0.047
--------------
mysql> \q
Bye
Troubleshooting¶
django.db.utils.NotSupportedError: conversion between UTF8 and SQL_ASCII is not supported
Django requires the database encoding for PostgreSQL databases to be set to UTF-8. If you receive the error django.db.utils.NotSupportedError: conversion between UTF8 and SQL_ASCII is not supported
, you will need to drop and re-create the nautobot
database with the correct encoding.
Redis Setup¶
Since Redis was already installed, let's just verify that it's working using redis-cli
:
Start Redis
Start the service and enable it to run at system startup:
Verify Redis Service Status
Use the redis-cli
utility to ensure the Redis service is functional:
Deploy Nautobot¶
Now that Nautobot dependencies are installed and configured, you're ready to Install Nautobot!