Búsqueda de sitios web

Cómo instalar NetBox en Ubuntu 18.04 LTS


Cómo instalar NetBox en Ubuntu 18.04 LTS es el título de nuestro artículo de hoy. NetBox es una aplicación web IPAM/DCIM de código abierto que se utiliza para administrar y documentar redes informáticas y administrar direcciones IP. Fue concebido inicialmente por el equipo de ingeniería de redes de DigitalOcean.

Netbox abarca los siguientes aspectos de la gestión de red:

  • Gestión de direcciones IP (IPAM): redes y direcciones IP, VRF y VLAN
  • Bastidores de equipos: organizados por grupo y sitio
  • Dispositivos: tipos de dispositivos y dónde están instalados
  • Conexiones: conexiones de red, consola y alimentación entre dispositivos
  • Virtualización: máquinas virtuales y clústeres
  • Circuitos de datos: circuitos y proveedores de comunicaciones de larga distancia.
  • Secretos: almacenamiento cifrado de credenciales confidenciales

Si está interesado en implementar Netbox en CentOS 7, consulte:

  • Instale NetBox en CentOS 7 con Apache y Supervisord

Instale NetBox en Ubuntu 18.04 LTS

Esta sección analizará los pasos reales que debe seguir para instalar NetBox en su servidor Ubuntu 18.04 LTS. Síguelos en orden de aparición, aunque puedes saltarte una parte si ya tienes configurado el software que estás instalando.

Paso 1: instalar las dependencias requeridas

Comience instalando todas las aplicaciones de dependencia necesarias para ejecutar NetBox en Ubuntu 18.04 LTS.

sudo apt update
sudo apt install -y git gcc nginx redis supervisor build-essential libxml2-dev libxslt1-dev libffi-dev graphviz libpq-dev libssl-dev zlib1g-dev

Instale paquetes de Python3.9.

sudo apt install wget build-essential checkinstall 
sudo apt install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev
wget https://www.python.org/ftp/python/3.9.17/Python-3.9.17.tgz 
tar xzf Python-3.9.*.tgz 
cd Python-3.9*/
sudo ./configure --enable-optimizations 
sudo make altinstall 
curl -sS https://bootstrap.pypa.io/get-pip.py | python3.9

Confirme la versión de Python instalada.

$ python3.9 -V 
Python 3.9.16

$ pip3.9 -V
pip 23.2.1 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)

Paso 2: instalar el servidor de base de datos PostgreSQL

NetBox utiliza el servidor de base de datos PostgreSQL para almacenar sus datos. Instálelo y configúrelo en Ubuntu 18.04 usando nuestra guía anterior a continuación:

  • Instalar PostgreSQL 12 en Ubuntu

Luego cree una base de datos y un usuario para NetBox.

$ sudo -u postgres psql
CREATE DATABASE netbox;
CREATE USER netbox WITH PASSWORD 'StrongPassword';
GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
\q

Confirme que puede iniciar sesión en la base de datos como usuario netbox .

# psql -U netbox -h localhost -W
Password: 
psql (12.15 (Ubuntu 12.15-1.pgdg18.04+1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.
netbox-> \q

Paso 3: instalar y configurar Netbox

Cambiar al directorio /opt/ 

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

Crear un archivo de configuración

cd netbox/netbox/netbox/
sudo cp configuration_example.py configuration.py

Edite el archivo de configuración y establezca los detalles de inicio de sesión permitidos del host y de la base de datos

$ sudo vim configuration.py
# Example: ALLOWED_HOSTS = ['netbox.example.com', 'netbox.internal.local']
ALLOWED_HOSTS = ['*']

# PostgreSQL database configuration.
DATABASE = {
    'NAME': 'netbox',                           # Database name
    'USER': 'netbox',                           # PostgreSQL username
    'PASSWORD': 'StrongPassword',               # PostgreSQL password
    'HOST': 'localhost',                        # Database server
    'PORT': '',                                 # Database port (leave blank for default)
}

Generar clave SECRETA de Django:

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

Luego configure la clave en el archivo /opt/netbox/netbox/netbox/configuration.py

Ejemplo :

$ sudo vim  /opt/netbox/netbox/netbox/configuration.py
SECRET_KEY = '30m&hqd@09h2i5hro=^l8wqtjw2$!3j%=f2!zh_sey+13jg%3$'

Instalar dependencias de Netbox

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

Migrar datos de la base de datos:

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

Salida de muestra para la migración de bases de datos.

....
  Applying dcim.0171_cabletermination_change_logging... OK
  Applying dcim.0172_larger_power_draw_values... OK
  Applying django_rq.0001_initial... OK
  Applying extras.0087_dashboard... OK
  Applying extras.0088_jobresult_webhooks... OK
  Applying extras.0089_customfield_is_cloneable... OK
  Applying extras.0090_objectchange_index_request_id... OK
  Applying extras.0091_create_managedfiles... OK
  Applying extras.0092_delete_jobresult... OK
  Applying ipam.0064_clear_search_cache... OK
  Applying ipam.0065_asnrange... OK
  Applying ipam.0066_iprange_mark_utilized... OK
  Applying sessions.0001_initial... OK
  Applying social_django.0001_initial... OK
  Applying social_django.0002_add_related_name... OK
  Applying social_django.0003_alter_email_max_length... OK
  Applying social_django.0004_auto_20160423_0400... OK
  Applying social_django.0005_auto_20160727_2333... OK
  Applying social_django.0006_partial... OK
  Applying social_django.0007_code_timestamp... OK
  Applying social_django.0008_partial_timestamp... OK
  Applying social_django.0009_auto_20191118_0520... OK
  Applying social_django.0010_uid_db_index... OK
  Applying social_django.0011_alter_id_fields... OK
  Applying taggit.0001_initial... OK
  Applying taggit.0002_auto_20150616_2121... OK
  Applying taggit.0003_taggeditem_add_unique_index... OK
  Applying taggit.0004_alter_taggeditem_content_type_alter_taggeditem_tag... OK
  Applying taggit.0005_auto_20220424_2025... OK
  Applying tenancy.0010_tenant_relax_uniqueness... OK
  Applying users.0001_squashed_0011... OK
  Applying users.0002_standardize_id_fields... OK
  Applying users.0003_token_allowed_ips_last_used... OK

Crear usuario administrador:

$ sudo python3.9 manage.py createsuperuser
Username (leave blank to use 'root'): admin
Email address: [email 
Password: <Enter Password>
Password (again): <Re-enter Password>
Superuser created successfully.

Mover archivos estáticos

$ cd /opt/netbox/netbox
$ sudo python3.9 manage.py collectstatic
229 static files copied to '/opt/netbox/netbox/static'.

Paso 4: Instalar y configurar gunicorn

Instale gunicorn usando pip3:

$ sudo pip3.9 install gunicorn
Collecting gunicorn
Downloading https://files.pythonhosted.org/packages/8c/da/b8dd8deb741bff556db53902d4706774c8e1e67265f69528c14c003644e6/gunicorn-19.9.0-py2.py3-none-any.whl (112kB)     100% |████████████████████████████████| 122kB 737kB/s
Installing collected packages: gunicorn
Successfully installed gunicorn-19.9.0

Configurar gunicorn para Netbox:

cat <<EOF | sudo tee /opt/netbox/gunicorn_config.py
command = '/usr/local/bin/gunicorn'
pythonpath = '/opt/netbox/netbox'
bind = 'localhost:8085'
workers = 3
user = 'www-data'
EOF

Paso 5: Configurar supervisor

Cree un archivo de configuración de supervisor:

cat <<EOF | sudo tee /etc/supervisor/conf.d/netbox.conf
[program:netbox]
command = gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
directory = /opt/netbox/netbox/
user = www-data
EOF

Reinicie y habilite el servicio de supervisión para que se inicie al arrancar.

sudo systemctl restart supervisor.service
sudo systemctl enable supervisor.service

El estado debe mostrar ejecutándose con salida de netbox.

$ systemctl status  supervisor
 supervisor.service - Supervisor process control system for UNIX
   Loaded: loaded (/lib/systemd/system/supervisor.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2023-08-16 20:56:46 UTC; 7s ago
     Docs: http://supervisord.org
 Main PID: 25571 (supervisord)
    Tasks: 5 (limit: 4584)
   CGroup: /system.slice/supervisor.service
           ├─25571 /usr/bin/python /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
           ├─25679 /usr/local/bin/python3.9 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
           ├─25680 /usr/local/bin/python3.9 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
           ├─25681 /usr/local/bin/python3.9 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
           └─25682 /usr/local/bin/python3.9 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi

Aug 16 20:56:46 bionic systemd[1]: Started Supervisor process control system for UNIX.
Aug 16 20:56:47 bionic supervisord[25571]: 2023-08-16 20:56:47,049 CRIT Supervisor running as root (no user in config file)
Aug 16 20:56:47 bionic supervisord[25571]: 2023-08-16 20:56:47,050 INFO Included extra file "/etc/supervisor/conf.d/netbox.conf" during parsing
Aug 16 20:56:47 bionic supervisord[25571]: 2023-08-16 20:56:47,060 INFO RPC interface 'supervisor' initialized
Aug 16 20:56:47 bionic supervisord[25571]: 2023-08-16 20:56:47,060 CRIT Server 'unix_http_server' running without any HTTP authentication checking
Aug 16 20:56:47 bionic supervisord[25571]: 2023-08-16 20:56:47,060 INFO supervisord started with pid 25571
Aug 16 20:56:48 bionic supervisord[25571]: 2023-08-16 20:56:48,064 INFO spawned: 'netbox' with pid 25679
Aug 16 20:56:49 bionic supervisord[25571]: 2023-08-16 20:56:49,254 INFO success: netbox entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

Paso 6: configurar el servidor web Nginx

Configuremos el servidor web Nginx para ayudarnos a acceder a Netbox a través del nombre de dominio en lugar de especificar una dirección IP y un puerto.

Cree un nuevo archivo de configuración de Nginx para Netbox.

sudo vim /etc/nginx/conf.d/netbox.conf

Con los datos siguientes.

server {
    listen 80;
    server_name netbox.example.com;
    client_max_body_size 25m;

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

    location / {
        proxy_pass http://localhost:8085;
    }
}

Verifique la sintaxis de configuración de Nginx y reinicie su servicio

$ sudo  nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Si está bien, reinicie el servicio Nginx

sudo systemctl restart nginx

Paso 7: acceda a la interfaz de usuario web de Netbox

Si no tiene un servidor DNS, agregue una entrada en /etc/hosts.

$ sudo vim /etc/hosts
5.75.227.153 netbox.example.com

Abra su navegador web predeterminado y abra el nombre de host del servidor Netbox. Para realizar cambios, inicie sesión con el usuario administrador creado anteriormente.

Disfrute usando Netbox para documentar su infraestructura de red. Consulte la documentación oficial de Netbox para obtener más detalles.

  • Instalar y configurar phpIPAM en Debian
  • Cómo instalar RackTables en Ubuntu
  • Instale Neat IP Address Planner (NIPAP) en Ubuntu/Debian

Artículos relacionados: