Búsqueda de sitios web

Cómo instalar la herramienta de administración y documentación de red NetBox en Ubuntu 20.04 LTS


Este tutorial existe para estas versiones del sistema operativo

  • Ubuntu 20.04 (fosa focal)
  • Ubuntu 18.04 (castor biónico)

En esta página

  1. Requisitos previos
  2. Cómo empezar
  3. Instalar y configurar la base de datos PostgreSQL
  4. Instalar y configurar NetBox
  5. Instalar y configurar Gunicorn
  6. Instalar y configurar supervisor
  7. Configurar Nginx para NetBox
  8. Acceder a la interfaz web de Netbox
  9. Conclusión

Netbox es una potente herramienta de administración de infraestructura de centro de datos (DCIM) y dirección IP (IPAM) gratuita. Se utiliza para almacenar información sobre sus redes, máquinas virtuales, inventarios y mucho más. Originalmente fue desarrollado por el equipo de ingeniería de redes de DigitalOcean. Esta herramienta está escrita en el marco Django Python y se basa en la base de datos PostgreSQL. Su objetivo es funcionar como una fuente de verdad específica de dominio para las operaciones de red.

En este tutorial, explicaremos cómo instalar Netbox con Nginx como proxy inverso en Ubuntu 20.04.

requisitos previos

  • Un servidor con Ubuntu 20.04.
  • Se configura una contraseña raíz en su servidor.

Empezando

Antes de comenzar, deberá instalar algunas dependencias requeridas por Netbox. Puede instalarlos todos ejecutando el siguiente comando:

apt-get install nginx git gcc supervisor python3 python3-dev python3-pip python3-setuptools build-essential libxml2-dev libxslt1-dev libffi-dev graphviz libpq-dev libssl-dev zlib1g-dev -y

Una vez que todos los paquetes estén instalados, puede continuar con el siguiente paso.

Instalar y configurar la base de datos PostgreSQL

Netbox se basa en la base de datos PostgreSQL para el almacenamiento de datos. Puedes instalarlo con el siguiente comando:

apt-get install postgresql postgresql-contrib -y

Una vez que PostgreSQL esté instalado, inicie sesión en PostgreSQL con el siguiente comando:

su - postgres
:~$ psql

Deberías obtener el siguiente resultado:

psql (12.2 (Ubuntu 12.2-4))
Type "help" for help.

A continuación, cree una base de datos y un usuario para Netbox con el siguiente comando:

postgres=# CREATE DATABASE netbox;
postgres=# CREATE USER netbox WITH PASSWORD 'password';

A continuación, otorgue todos los privilegios a la base de datos de Netbox con el siguiente comando:

postgres=# GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;

A continuación, salga del shell de PostgreSQL con el siguiente comando:

postgres=# exit
:~$ exit

Instalar y configurar NetBox

Primero, cambie el directorio a /opt y descargue la última versión de Netbox desde el repositorio de Git Hub usando el siguiente comando:

cd /opt/
git clone -b master https://github.com/digitalocean/netbox.git

A continuación, cree un enlace simbólico del binario de Python con el siguiente comando:

ln -s /usr/bin/python3 /usr/bin/python

A continuación, cambie el directorio a /opt/netbox/netbox/ y genere Django SECRET Key ejecutando el siguiente comando:

cd /opt/netbox/netbox/
./generate_secret_key.py

Deberías obtener el siguiente resultado:

)eTDpo(k^f4Sm9bariUnK0syCPMGEIjW6XV_8l5xhB7z

A continuación, cambie el directorio a netbox y cambie el nombre del archivo de configuración de ejemplo:

cd netbox
mv configuration.example.py configuration.py

A continuación, edite el archivo de configuración de Netbox y defina su base de datos, clave secreta y hosts permitidos:

nano configuration.py

Realice los siguientes cambios:

ALLOWED_HOSTS = ['your-server-ip']

# PostgreSQL database configuration. See the Django documentation for a complete list of available parameters:
#   https://docs.djangoproject.com/en/stable/ref/settings/#databases
DATABASE = {
    'NAME': 'netbox',         # Database name
    'USER': 'netbox',               # PostgreSQL username
    'PASSWORD': 'password',           # PostgreSQL password
    'HOST': 'localhost',      # Database server
    'PORT': '',               # Database port (leave blank for default)
    'CONN_MAX_AGE': 300,      # Max database connection age
}

SECRET_KEY = ')eTDpo(k^f4Sm9bariUnK0syCPMGEIjW6XV_8l5xhB7z'

Guarde y cierre el archivo, luego instale todas las dependencias de Python con el siguiente comando:

pip3 install -r /opt/netbox/requirements.txt

A continuación, migre la base de datos con el siguiente comando:

cd /opt/netbox/netbox/
python3 manage.py migrate

A continuación, cree un usuario administrativo de Netbox con el siguiente comando:

python3 manage.py createsuperuser

Se le pedirá que proporcione un nombre de usuario y una contraseña como se muestra a continuación:

Username (leave blank to use 'root'): netboxadmin
Email address: 
Password: 
Password (again): 
Superuser created successfully.

A continuación, recopile el archivo estático con el siguiente comando:

python3 manage.py collectstatic

Debería ver el siguiente resultado:

976 static files copied to '/opt/netbox/netbox/static'.

Instalar y configurar Gunicorn

Netbox es una aplicación basada en Django. Por lo tanto, deberá instalar Gunicorn en su sistema. Puede instalarlo ejecutando el siguiente comando:

pip3 install gunicorn

Después de instalar Gunicorn, cree un nuevo archivo de configuración de Gunicorn para Netbox con el siguiente comando:

nano /opt/netbox/gunicorn_config.py

Agregue las siguientes líneas:

command = '/usr/local/bin/gunicorn'
pythonpath = '/opt/netbox/netbox'
bind = 'your-server-ip:8001'
workers = 3
user = 'www-data'

Guarde y cierre el archivo cuando haya terminado.

Instalar y configurar supervisor

Supervisor es un sistema cliente/servidor que le permite monitorear y controlar el servicio de NetBox. Puede crear un nuevo archivo de configuración de Supervisor para Netbox con el siguiente comando:

nano /etc/supervisor/conf.d/netbox.conf

Agregue las siguientes líneas:

[program:netbox]
command = gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
directory = /opt/netbox/netbox/
user = www-data

Guarde y cierre el archivo cuando haya terminado. Luego, reinicie el servicio de Supervisor con el siguiente comando:

systemctl restart supervisor

También puede verificar el estado del servicio de Supervisor usando el siguiente comando:

systemctl status supervisor

Deberías obtener el siguiente resultado:

? supervisor.service - Supervisor process control system for UNIX
     Loaded: loaded (/lib/systemd/system/supervisor.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2020-05-30 05:49:08 UTC; 14s ago
       Docs: http://supervisord.org
   Main PID: 550606 (supervisord)
      Tasks: 5 (limit: 4691)
     Memory: 184.3M
     CGroup: /system.slice/supervisor.service
             ??550606 /usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
             ??550626 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
             ??550628 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
             ??550629 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
             ??550630 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi

May 30 05:49:08 ubunt4 systemd[1]: Started Supervisor process control system for UNIX.
May 30 05:49:08 ubunt4 supervisord[550606]: 2020-05-30 05:49:08,664 CRIT Supervisor is running as root.  Privileges were not dropped becau>
May 30 05:49:08 ubunt4 supervisord[550606]: 2020-05-30 05:49:08,664 INFO Included extra file "/etc/supervisor/conf.d/netbox.conf" during p>
May 30 05:49:08 ubunt4 supervisord[550606]: 2020-05-30 05:49:08,671 INFO RPC interface 'supervisor' initialized
May 30 05:49:08 ubunt4 supervisord[550606]: 2020-05-30 05:49:08,671 CRIT Server 'unix_http_server' running without any HTTP authentication>
May 30 05:49:08 ubunt4 supervisord[550606]: 2020-05-30 05:49:08,672 INFO supervisord started with pid 550606
May 30 05:49:09 ubunt4 supervisord[550606]: 2020-05-30 05:49:09,676 INFO spawned: 'netbox' with pid 550626
May 30 05:49:11 ubunt4 supervisord[550606]: 2020-05-30 05:49:11,060 INFO success: netbox entered RUNNING state, process has stayed up for

Configurar Nginx para NetBox

Es una buena idea configurar Nginx como un proxy inverso para acceder a Netbox en el puerto 80. Puede crear una nueva configuración de host virtual Nginx con el siguiente comando:

nano /etc/nginx/sites-available/netbox.conf

Agregue las siguientes líneas:

server {
    listen 80;
    server_name your-server-ip;
    client_max_body_size 25m;

    location /static/ {
        alias /opt/netbox/netbox/static/;
    }

    location / {
        proxy_pass http://your-server-ip:8001;
    }
}

Guarde y cierre el archivo. Luego, cree un enlace simbólico al directorio /etc/nginx/sites-enabled/:

ln -s /etc/nginx/sites-available/netbox.conf /etc/nginx/sites-enabled/

Luego, verifique Nginx por cualquier error de sintaxis con el siguiente comando:

nginx -t

Si todo está bien, debería obtener el siguiente resultado:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Finalmente, reinicie el servicio Nginx para implementar los cambios.

systemctl restart nginx

También puede verificar el Nginx con el siguiente comando:

systemctl status nginx

Deberías obtener el siguiente resultado:

? nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-05-30 22:28:13 EST; 4min 14s ago
  Process: 984 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 982 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 980 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 985 (nginx)
    Tasks: 3 (limit: 25028)
   Memory: 5.5M
   CGroup: /system.slice/nginx.service
           ??985 nginx: master process /usr/sbin/nginx
           ??986 nginx: worker process
           ??987 nginx: worker process

May 30 21:28:12 ubunt4 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Mar 30 21:28:12 ubunt4 nginx[982]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Mar 30 21:28:12 ubunt4 nginx[982]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Mar 30 21:28:13 ubunt4 systemd[1]: Started The nginx HTTP and reverse proxy server.

En este punto, el servidor web Nginx está configurado para servir a Netbox en el puerto 80. Ahora puede acceder a la interfaz web de Netbox.

Acceder a la interfaz web de Netbox

Abra su navegador web y visite la URL http://your-server-ip. Será redirigido a la siguiente página:

Haga clic en el botón Iniciar sesión. Debería ver la página de inicio de sesión de Netbox en la siguiente pantalla:

Proporcione su nombre de usuario y contraseña de administrador de Netbox y haga clic en el botón iniciar sesión. Debería ver el panel predeterminado de Netbox en la siguiente página:

Conclusión

En esta guía, aprendió a instalar Netbox en Ubuntu 20.04 con Nginx. Ahora puede comenzar a documentar su infraestructura de red. Para obtener más información, visite la documentación oficial de Netbox. No dude en preguntarme si tiene alguna pregunta.

Artículos relacionados: