Cómo instalar la herramienta de documentación y gestión de redes NetBox en Ubuntu 18.04 LTS
NetBox es un software de aplicación web gratuito y de código abierto que puede utilizarse para gestionar y documentar redes informáticas. Está especialmente diseñado para gestionar la dirección IP y la infraestructura del centro de datos a través de un navegador web. NetBox está escrito en el framework Django Python y utiliza PostgreSQL para la base de datos. Con NetBox, puedes gestionar y documentar fácilmente las máquinas virtuales y los clusters, los circuitos de datos, la red, la consola y las conexiones de energía desde la ubicación central.
En este tutorial, explicaremos cómo instalar NetBox en el servidor Ubuntu 18.04.
Requisitos
- Un servidor con Ubuntu 18.04.
- Una contraseña de root configurada en tu servidor.
Cómo empezar
Primero, actualiza los paquetes de tu sistema a la última versión con el siguiente comando:
apt-get update -y
apt-get upgrade -y
Una vez actualizados todos los paquetes, reinicia tu sistema para aplicar todos los cambios de configuración.
A continuación, tendrás que instalar las dependencias necesarias para ejecutar NetBox. Puedes instalarlas todas con el siguiente comando:
apt-get install wget ca-certificates nginx supervisor git gcc python3 python3-dev python3-pip python3-setuptools build-essential libxml2-dev libxslt1-dev libffi-dev graphviz libpq-dev libssl-dev zlib1g-dev unzip -y
Una vez instaladas todas las dependencias, puedes pasar al siguiente paso.
Instalar y configurar PostgreSQL
A continuación, tendrás que instalar PostgreSQL en tu servidor. Por defecto, la última versión de PostgreSQL no está disponible en el repositorio por defecto de Ubuntu 18.04. Así que tendrás que añadir el repositorio de PostgreSQL a tu sistema.
Primero, descarga y añade la clave GPG con el siguiente comando:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
A continuación, añade el repositorio con el siguiente comando:
nano /etc/apt/sources.list.d/postgres.list
Añade la siguiente línea:
deb http://apt.postgresql.org/pub/repos/apt/ xanial-pgdg main
Guarda y cierra el archivo. A continuación, actualiza el repositorio e instala PostgreSQL con el siguiente comando
apt-get update -y
apt-get install postgresql postgresql-contrib -y
Una vez instalado, comprueba el estado de PostgreSQL con el siguiente comando:
systemctl status postgresql
Deberías ver la siguiente salida:
? postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since Wed 2019-08-07 07:00:51 UTC; 23s ago Main PID: 13552 (code=exited, status=0/SUCCESS) Tasks: 0 (limit: 1098) CGroup: /system.slice/postgresql.service Aug 07 07:00:50 hitesh systemd[1]: Starting PostgreSQL RDBMS... Aug 07 07:00:51 hitesh systemd[1]: Started PostgreSQL RDBMS.
A continuación, tendrás que crear una base de datos y un usuario para NetBox. En primer lugar, entra en el shell de PostgreSQL con el siguiente comando:
su - postgres
postgres@hitesh:~$ psql
Salida:
psql (11.4 (Ubuntu 11.4-1.pgdg18.04+1)) Type "help" for help.
A continuación, crea 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, concede todos los privilegios a NetBox con el siguiente comando:
postgres=# GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
Por último, sal del shell PostgreSQL con el siguiente comando:
postgres=#exit
Una vez que hayas terminado, puedes pasar al siguiente paso.
Instalar y configurar NetBox
Puedes descargar la última versión de NetBox en el directorio /opt con el siguiente comando:
cd /opt
git clone -b master https://github.com/digitalocean/netbox.git
A continuación, cambia el directorio a netbox y genera la clave secreta de Django:
cd /opt/netbox/netbox/netbox/
./generate_secret_key.py
Deberías ver la clave generada en la siguiente salida:
+XHR3o&7K6isFk^DLc2%rIqCanlE@zTB(jwN#tfGbV=O1hgMU$
A continuación, cambia el nombre del archivo de configuración por defecto con el siguiente comando
mv configuration.example.py configuration.py
A continuación, abre el archivo de configuración y define los detalles de tu base de datos y la clave secreta:
nano configuration.py
Realiza los siguientes cambios:
#Replace your-server-ip with your server IP address: # Example: ALLOWED_HOSTS = ['netbox.example.com', 'netbox.internal.local'] ALLOWED_HOSTS = ['your-server-ip'] # PostgreSQL database configuration. DATABASE = { 'NAME': 'netbox', # Database name 'USER': 'netbox', # PostgreSQL username 'PASSWORD': 'password', # PostgreSQL password 'HOST': 'localhost', # Database server 'PORT': '', # Database port (leave blank for default) } SECRET_KEY = '+XHR3o&7K6isFk^DLc2%rIqCanlE@zTB(jwN#tfGbV=O1hgMU$'
Guarda y cierra el archivo cuando hayas terminado.
A continuación, instala todas las dependencias requeridas por NetBox con el siguiente comando:
pip3 install -r /opt/netbox/requirements.txt
Una vez instaladas, migra la base de datos con el siguiente comando:
cd /opt/netbox/netbox/
python3 manage.py migrate
Una vez migrada con éxito, deberías ver la siguiente salida:
Applying secrets.0004_tags... OK Applying secrets.0005_change_logging... OK Applying secrets.0006_custom_tag_models... OK Applying ipam.0021_vrf_ordering... OK Applying ipam.0022_tags... OK Applying ipam.0023_change_logging... OK Applying ipam.0024_vrf_allow_null_rd... OK Applying ipam.0025_custom_tag_models... OK Applying dcim.0067_device_type_remove_qualifiers... OK Applying dcim.0068_rack_new_fields... OK Applying dcim.0069_deprecate_nullablecharfield... OK Applying dcim.0070_custom_tag_models... OK Applying extras.0020_tag_data... OK Applying extras.0021_add_color_comments_changelog_to_tag... OK Applying dcim.0071_device_components_add_description... OK Applying dcim.0072_powerfeeds... OK Applying dcim.0073_interface_form_factor_to_type... OK Applying extras.0022_custom_links... OK Applying extras.0023_fix_tag_sequences... OK Applying ipam.0026_prefix_ordering_vrf_nulls_first... OK Applying ipam.0027_ipaddress_add_dns_name... OK Applying sessions.0001_initial... OK Applying taggit.0003_taggeditem_add_unique_index... OK Applying users.0001_api_tokens_squashed_0002_unicode_literals... OK Applying users.0003_token_permissions... OK
A continuación, tendrás que crear una cuenta de administrador para NetBox. Puedes hacerlo con el siguiente comando:
python3 manage.py createsuperuser
Proporciona tu nombre de usuario y contraseña de administrador y pulsa Intro, deberías ver la siguiente salida:
Username (leave blank to use 'root'): netboxadmin Email address: [email protected] Password: Password (again): Superuser created successfully.
A continuación, mueve los archivos estáticos y carga los datos iniciales con el siguiente comando:
python3 manage.py collectstatic
python3 manage.py loaddata initial_data
Instalar y configurar Gunicorn para NetBox
A continuación, tendrás que instalar Gunicorn para NetBox. Puedes instalarlo con el comando pip como se muestra a continuación:
pip3 install gunicorn
A continuación, crea un archivo de configuración de Gunicorn para NetBox con el siguiente comando:
nano /opt/netbox/gunicorn_config.py
Añade las siguientes líneas:
command = '/usr/local/bin/gunicorn' pythonpath = '/opt/netbox/netbox' bind = 'your-server-ip:8001' workers = 3 user = 'www-data'
Guarda y cierra el archivo cuando hayas terminado.
Configurar el Supervisor para Netbox
A continuación, tendrás que configurar el Supervisor para que gestione el servicio de NetBox. Puedes hacerlo con el siguiente comando:
nano /etc/supervisor/conf.d/netbox.conf
Añade las siguientes líneas:
[program:netbox] command = gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi directory = /opt/netbox/netbox/ user = www-data
Guarda y cierra el archivo y luego reinicia el servicio de Supervisor y permite que se inicie tras el reinicio del sistema con el siguiente comando:
systemctl restart supervisor
systemctl enable supervisor
También puedes verificar el servicio Supervisor con el siguiente comando:
systemctl status supervisor
Salida:
? supervisor.service - Supervisor process control system for UNIX Loaded: loaded (/lib/systemd/system/supervisor.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2019-08-07 07:13:26 UTC; 8s ago Docs: http://supervisord.org Process: 15013 ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown (code=exited, status=0/SUCCESS) Main PID: 15015 (supervisord) Tasks: 5 (limit: 1098) CGroup: /system.slice/supervisor.service ??15015 /usr/bin/python /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf ??15037 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi ??15042 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi ??15043 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi ??15044 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi Aug 07 07:13:26 hitesh systemd[1]: Started Supervisor process control system for UNIX. Aug 07 07:13:27 hitesh supervisord[15015]: 2019-08-07 07:13:27,087 CRIT Supervisor running as root (no user in config file) Aug 07 07:13:27 hitesh supervisord[15015]: 2019-08-07 07:13:27,089 INFO Included extra file "/etc/supervisor/conf.d/netbox.conf" during parsing Aug 07 07:13:27 hitesh supervisord[15015]: 2019-08-07 07:13:27,117 INFO RPC interface 'supervisor' initialized Aug 07 07:13:27 hitesh supervisord[15015]: 2019-08-07 07:13:27,117 CRIT Server 'unix_http_server' running without any HTTP authentication check Aug 07 07:13:27 hitesh supervisord[15015]: 2019-08-07 07:13:27,118 INFO supervisord started with pid 15015 Aug 07 07:13:28 hitesh supervisord[15015]: 2019-08-07 07:13:28,123 INFO spawned: 'netbox' with pid 15037 Aug 07 07:13:29 hitesh supervisord[15015]: 2019-08-07 07:13:29,610 INFO success: netbox entered RUNNING state, process has st
Configurar Nginx para NetBox
A continuación, tendrás que configurar Nginx para que acceda a NetBox utilizando el puerto 80. Para ello, crea un archivo de configuración del host virtual con el siguiente comando
nano /etc/nginx/sites-available/netbox
Añade las siguientes líneas:
server { listen 80; server_name your-domain-name; client_max_body_size 25m; location /static/ { alias /opt/netbox/netbox/static/; } location / { proxy_pass http://your-server-ip:8001; } }
Guarda y cierra el archivo. A continuación, habilita el host virtual con el siguiente comando
ln -s /etc/nginx/sites-available/netbox.conf /etc/nginx/sites-enabled/
Por último, reinicia el servicio Nginx para aplicar todos los cambios de configuración con el siguiente comando:
systemctl restart nginx
Accede a la interfaz web de NetBox
Ahora que NetBox está instalado y configurado, es el momento de acceder a la interfaz web de NetBox.
Abre tu navegador web y escribe la URL http://your-domain.com. Serás redirigido a la siguiente página:
Ahora, haz clic en el botón de inicio de sesión en la esquina superior derecha. Deberías ver la siguiente página:
Ahora, proporciona tu nombre de usuario y contraseña de administrador, y haz clic en el botón Iniciar sesión. Deberías ver el panel de control por defecto de NetBox en la siguiente página:
Enhorabuena! has instalado y configurado correctamente NetBox en el servidor Ubuntu 18.04. Ahora puedes gestionar y documentar tu Red y tu dirección IP desde la ubicación central. No dudes en preguntarme si tienes alguna duda.