C贸mo instalar la herramienta de gesti贸n y documentaci贸n de red NetBox en Ubuntu 20.04 LTS

Interfaz de caja de red

Netbox es una potente y gratuita herramienta de administraci贸n de infraestructura de centro de datos (DCIM) y direcci贸n IP (IPAM). 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.
  • Una contrase帽a de root est谩 configurada 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
[email聽protected]:~$ 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
[email聽protected]:~$ 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:

[email聽protected])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 = '[email聽protected])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: [email聽protected]
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: Publicidad

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 ubuntu2004 systemd[1]: Started Supervisor process control system for UNIX.
May 30 05:49:08 ubuntu2004 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 ubuntu2004 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 ubuntu2004 supervisord[550606]: 2020-05-30 05:49:08,671 INFO RPC interface 'supervisor' initialized
May 30 05:49:08 ubuntu2004 supervisord[550606]: 2020-05-30 05:49:08,671 CRIT Server 'unix_http_server' running without any HTTP authentication>
May 30 05:49:08 ubuntu2004 supervisord[550606]: 2020-05-30 05:49:08,672 INFO supervisord started with pid 550606
May 30 05:49:09 ubuntu2004 supervisord[550606]: 2020-05-30 05:49:09,676 INFO spawned: 'netbox' with pid 550626
May 30 05:49:11 ubuntu2004 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 ubuntu2004 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Mar 30 21:28:12 ubuntu2004 nginx[982]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Mar 30 21:28:12 ubuntu2004 nginx[982]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Mar 30 21:28:13 ubuntu2004 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:

Interfaz de caja de red

Haga clic en el Tronco en bot贸n. Deber铆a ver la p谩gina de inicio de sesi贸n de Netbox en la siguiente pantalla:

Iniciar sesi贸n

Proporcione su nombre de usuario y contrase帽a de administrador de Netbox y haga clic en el acceso bot贸n. Deber铆a ver el panel predeterminado de Netbox en la siguiente p谩gina:

Panel de administraci贸n de netbox

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 el Netbox documentaci贸n oficial. No dude en preguntarme si tiene alguna pregunta.

Deja una respuesta

Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *