Instale la herramienta NetBox IPAM y DCIM en Ubuntu 22.04|20.04 |
Una infraestructura bien documentada muestra cuán comprometido, organizado y presentable está el equipo de operaciones dentro de su organización. Sirve como una herramienta maravillosa para capacitar al personal nuevo y hacer que su trabajo sea sencillo, ya que ayuda a crear un mapa mental de cada dispositivo en el centro de datos. Atrás quedaron los días en los que se dibujaban en papel, se imprimían y se pegaban en la pared. La belleza de las herramientas de código abierto como NetBox ha hecho que dicha documentación sea sencilla y divertida una vez más. Esta guía se centra en la instalación de NetBox en el nuevo Ubuntu 22.04|20.04.
Antes de comenzar, familiaricémonos con esta herramienta. NetBox es un IPAM de código abierto | Aplicación web DCIM utilizada para gestionar y documentar redes informáticas y gestionar direcciones IP. Fue concebido inicialmente por el equipo de ingeniería de redes de DigitalOcean. A continuación se representa esquemáticamente una descripción general de sus componentes.
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
“Una de las mayores tragedias de la vida es ver morir el potencial sin explotar. ”
― Myles Munroe
Instale NetBox IPAM en Ubuntu 22.04/Ubuntu 20.04
Siga los pasos proporcionados en esta sección para instalar la herramienta Netbox en el sistema Ubuntu 22.04/Ubuntu 20.04.
Configuraremos los servicios WSGI y HTTP para que se ejecuten en la cuenta de usuario de netbox. También asignaremos a este usuario la propiedad del directorio de medios. Esto garantiza que NetBox podrá guardar archivos locales.
sudo mkdir /opt/netbox
sudo useradd -d /opt/netbox netbox -s /bin/bash
sudo passwd netbox
sudo usermod -aG sudo netbox
sudo chown -R netbox:netbox /opt/netbox
Paso 1: instalar las dependencias requeridas
La mejor manera de comenzar es tener instaladas todas las dependencias necesarias para ejecutar NetBox en Ubuntu LTS. Por lo tanto, empecemos a instalarlos todos como se muestra a continuación.
sudo apt update
sudo apt install -y git gcc nginx redis python3-setuptools graphviz python3 python3-pip python3-venv python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev libpq-dev libssl-dev zlib1g-dev
Una vez aclarado esto, procederemos a los siguientes pasos para configurar la base de datos y otros.
Paso 2: instalar y configurar PostgreSQL
Los desarrolladores de NetBox deben haberse enamorado de PostgreSQL para almacenar datos. Por eso, instalaremos y configuraremos el servidor PostgreSQL en este paso. Afortunadamente, tenemos una guía detallada que configura PostgreSQL. Consulte la guía a continuación para hacerlo.
- Instalar el servidor de base de datos PostgreSQL en Ubuntu
Una vez que haya instalado PostgreSQL correctamente, cree una base de datos y un usuario para NetBox como se muestra a continuación.
$ 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 de netbox.
$ psql -U netbox -h localhost -W
Password: <Enter-Password>
psql (14.5 (Ubuntu 14.5-0ubuntu0.22.04.1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.
netbox=> exit
Paso 3: instalar y configurar Netbox
Ahora estamos en lo más profundo de esta guía donde podemos clonar Netbox desde git y comenzar el proceso de configuración por nosotros. Puede tomar una bocanada de aire fresco y luego sumergirse nuevamente para continuar.
Cambiar a usuario de netbox:
sudo su - netbox
Cambie al directorio /opt/ y clone netbox desde git
git clone -b master https://github.com/digitalocean/netbox.git
cd netbox/netbox/netbox/
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
$ vim configuration.py
# Example: ALLOWED_HOSTS = ['netbox.example.com', 'netbox.internal.local']
ALLOWED_HOSTS = ['localhost','127.0.0.1']
#ALLOWED_HOSTS = ['*']
# PostgreSQL database configuration.
DATABASE = {
'NAME': 'netbox', # Database name you created
'USER': 'netbox', # PostgreSQL username you created
'PASSWORD': 'StrongPassword', # PostgreSQL password you set
'HOST': 'localhost', # Database server
'PORT': '', # Database port (leave blank for default)
}
Configurar el entorno Python
Usaremos un entorno virtual Python para garantizar que los paquetes requeridos de NetBox no entren en conflicto con nada en el sistema base. Esto creará un directorio llamado venv en nuestra raíz de NetBox.
cd ~/
python3 -m venv /opt/netbox/netbox/venv
A continuación, active el entorno virtual e instale los paquetes de Python necesarios.
$ cd /opt/netbox/netbox/
$ source venv/bin/activate
(venv) tech@ubuntu:/opt/netbox$
(venv) tech@ubuntu:/opt/netbox$ pip3 install -r requirements.txt
Downloading .....
|████████████████████████████████| 7.5 MB 1.7 MB/s
LLAVE SECRETA
Genere una clave secreta aleatoria de al menos 50 caracteres alfanuméricos.
$ cd /opt/netbox/netbox/netbox
$ ./generate_secret_key.py
-bUf2WxTdH^8%Kcl(_gnN1ym)CEBoDGXe56Lv4FJrYzs@SthQO
Luego configure la clave en el archivo /opt/netbox/netbox/netbox/netbox/configuration.py
Ejemplo :
$ vim /opt/netbox/netbox/netbox/netbox/configuration.py
SECRET_KEY = '-bUf2WxTdH^8%Kcl(_gnN1ym)CEBoDGXe56Lv4FJrYzs@SthQO'
Ejecutar migraciones de bases de datos
Antes de que NetBox pueda ejecutarse, necesitamos instalar el esquema de la base de datos. Esto se hace ejecutando python3 managers.py migrar desde el directorio netbox (/opt/netbox/netbox/ en esta guía):
(venv) netbox@jammy:~/netbox/netbox$ cd /opt/netbox/netbox/netbox
(venv) netbox@jammy:~/netbox/netbox$ python3 manage.py migrate
Crear un superusuario
NetBox no viene con ninguna cuenta de usuario predefinida. Deberá crear un superusuario para poder iniciar sesión en NetBox:
(venv) netbox@jammy:~/netbox/netbox$ python3 manage.py createsuperuser
Username (leave blank to use 'root'): admin
Email address: [email
Password: StrongPassword
Password (again):
Superuser created successfully.
Recopilar archivos estáticos
(venv) netbox@jammy:~/netbox/netbox$ python3 manage.py collectstatic --no-input
976 static files copied to '/opt/netbox/netbox/netbox/static'
Paso 4: Instalar y configurar gunicorn
Configuraremos una interfaz WSGI simple usando gunicorn en esta guía.
Instale gunicorn usando pip3:
$ pip3 install gunicorn
Collecting gunicorn
Downloading gunicorn-20.1.0-py3-none-any.whl (79 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 79.5/79.5 KB 2.2 MB/s eta 0:00:00
Requirement already satisfied: setuptools>=3.0 in /usr/lib/python3/dist-packages (from gunicorn) (59.6.0)
Installing collected packages: gunicorn
Successfully installed gunicorn-20.1.0
Configurar Gunicorn
Copie /opt/netbox/contrib/gunicorn.py en /opt/netbox/gunicorn.py y luego edítelo para adaptarlo a sus necesidades.
$ cp /opt/netbox/netbox/contrib/gunicorn.py /opt/netbox/netbox/gunicorn.py
$ vim /opt/netbox/netbox/gunicorn.py
# The IP address (typically localhost) and port that the Netbox WSGI process should listen on
bind = '127.0.0.1:8001'
#bind = '0.0.0.0:8001'
# Number of gunicorn workers to spawn. This should typically be 2n+1, where
# n is the number of CPU cores present.
workers = 5
# Number of threads per worker process
threads = 3
# Timeout (in seconds) for a request to complete
timeout = 120
# The maximum number of requests a worker can handle before being respawned
max_requests = 5000
max_requests_jitter = 500
#Add below lines
user = 'netbox'
command = '/opt/netbox/netbox/venv/bin/gunicorn'
pythonpath = '/opt/netbox/netbox/netbox'
Paso 5: configurar Systemd
Usaremos systemd para controlar la demonización de los servicios de NetBox. Primero, copie contrib/netbox.service y contrib/netbox-rq.service al directorio /etc/systemd/system/ como se muestra a continuación:
sudo cp /opt/netbox/netbox/contrib/*.service /etc/systemd/system/
Actualice los archivos de la unidad systemd.
- netbox.servicio
sudo tee /etc/systemd/system/netbox.service<<EOF
[Unit]
Description=NetBox WSGI Service
Documentation=https://docs.netbox.dev/
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=netbox
Group=netbox
PIDFile=/var/tmp/netbox.pid
WorkingDirectory=/opt/netbox/netbox
ExecStart=/opt/netbox/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox/netbox --config /opt/netbox/netbox/gunicorn.py netbox.wsgi
Restart=on-failure
RestartSec=30
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
- netbox-rq.servicio
sudo tee /etc/systemd/system/netbox-rq.service<<EOF
[Unit]
Description=NetBox Request Queue Worker
Documentation=https://docs.netbox.dev/
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=netbox
Group=netbox
WorkingDirectory=/opt/netbox/netbox
ExecStart=/opt/netbox/netbox/venv/bin/python3 /opt/netbox/netbox/netbox/manage.py rqworker high default low
Restart=on-failure
RestartSec=30
PrivateTmp=true
[Install]
WantedBy=multi-user.target
EOF
Establecer permisos
sudo chown -R netbox:netbox /opt/netbox
Luego, inicie los servicios netbox y netbox-rq y habilítelos para que se inicien en el momento del arranque:
sudo systemctl daemon-reload
sudo systemctl enable netbox netbox-rq
sudo systemctl restart netbox netbox-rq
Consultar estado de los servicios:
$ systemctl status netbox netbox-rq
● netbox.service - NetBox WSGI Service
Loaded: loaded (/etc/systemd/system/netbox.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2022-10-22 10:37:20 EAT; 3s ago
Docs: https://docs.netbox.dev/
Main PID: 8335 (gunicorn)
Tasks: 6 (limit: 9460)
Memory: 198.7M
CPU: 1.905s
CGroup: /system.slice/netbox.service
├─8335 /opt/netbox/netbox/venv/bin/python3 /opt/netbox/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox/netbox --config /opt/netbox/netbox/gunicorn.py>
├─8337 /opt/netbox/netbox/venv/bin/python3 /opt/netbox/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox/netbox --config /opt/netbox/netbox/gunicorn.py>
├─8338 /opt/netbox/netbox/venv/bin/python3 /opt/netbox/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox/netbox --config /opt/netbox/netbox/gunicorn.py>
├─8339 /opt/netbox/netbox/venv/bin/python3 /opt/netbox/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox/netbox --config /opt/netbox/netbox/gunicorn.py>
├─8340 /opt/netbox/netbox/venv/bin/python3 /opt/netbox/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox/netbox --config /opt/netbox/netbox/gunicorn.py>
└─8341 /opt/netbox/netbox/venv/bin/python3 /opt/netbox/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox/netbox --config /opt/netbox/netbox/gunicorn.py>
Okt 22 10:37:20 jammy gunicorn[8335]: [2022-10-22 10:37:20 +0300] [8335] [INFO] Starting gunicorn 20.1.0
Okt 22 10:37:20 jammy gunicorn[8335]: [2022-10-22 10:37:20 +0300] [8335] [INFO] Listening at: http://127.0.0.1:8001 (8335)
Okt 22 10:37:20 jammy gunicorn[8335]: [2022-10-22 10:37:20 +0300] [8335] [INFO] Using worker: gthread
Okt 22 10:37:20 jammy gunicorn[8337]: [2022-10-22 10:37:20 +0300] [8337] [INFO] Booting worker with pid: 8337
Okt 22 10:37:21 jammy gunicorn[8338]: [2022-10-22 10:37:21 +0300] [8338] [INFO] Booting worker with pid: 8338
Okt 22 10:37:21 jammy gunicorn[8339]: [2022-10-22 10:37:21 +0300] [8339] [INFO] Booting worker with pid: 8339
Okt 22 10:37:21 jammy gunicorn[8340]: [2022-10-22 10:37:21 +0300] [8340] [INFO] Booting worker with pid: 8340
Okt 22 10:37:21 jammy gunicorn[8341]: [2022-10-22 10:37:21 +0300] [8341] [INFO] Booting worker with pid: 8341
● netbox-rq.service - NetBox Request Queue Worker
Loaded: loaded (/etc/systemd/system/netbox-rq.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2022-10-22 10:37:20 EAT; 3s ago
Docs: https://docs.netbox.dev/
Main PID: 8336 (python3)
Tasks: 1 (limit: 9460)
Memory: 91.8M
CPU: 1.902s
CGroup: /system.slice/netbox-rq.service
└─8336 /opt/netbox/netbox/venv/bin/python3 /opt/netbox/netbox/netbox/manage.py rqworker high default low
El servicio debería estar escuchando en el puerto 8001
$ ss -tunelp | grep 8001
tcp LISTEN 0 2048 0.0.0.0:8001 0.0.0.0:* users:(("gunicorn",pid=8608,fd=5),("gunicorn",pid=8607,fd=5),("gunicorn",pid=8606,fd=5),("gunicorn",pid=8605,fd=5),("gunicorn",pid=8604,fd=5),("gunicorn",pid=8602,fd=5)) uid:1001 ino:66123 sk:11 cgroup:/system.slice/netbox.service <->
Paso 6: Configurar el servidor web Nginx (Proxy)
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.
## Back up the default file
cd /etc/nginx/sites-enabled/
sudo mv default /tmp
## Create a new file for Netbox
sudo vim /etc/nginx/sites-enabled/netbox.conf
Agregue las configuraciones a continuación al nuevo archivo Netbox.
server {
listen 80;
server_name netbox.computingforgeeks.com;
client_max_body_size 25m;
location /static/ {
alias /opt/netbox/netbox/netbox/static/;
}
location / {
proxy_pass http://localhost:8001;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Reinicie el servicio nginx:
sudo systemctl restart nginx
Abra el archivo /etc/hosts
y agregue la siguiente línea que contiene su FQDN si no tiene un DNS.
172.28.218.207 netbox.computingforgeeks.com
Paso 7: acceda a la interfaz de usuario web de Netbox
Abra su navegador web predeterminado y abra el nombre de host del servidor Netbox. Llegará a la primera página como usuario normal. Si desea realizar cambios administrativos, deberá iniciar sesión con el usuario administrador creado anteriormente haciendo clic en “Iniciar sesión ” como se muestra a continuación.
Eso lo redireccionará a la página de inicio de sesión. Ingrese el usuario administrador que configuró allí.
Finalmente tenemos una instancia de Netbox funcional para su uso. Disfrute usando esta herramienta para documentar su infraestructura de red y mejorar su organización. Consulte la documentación oficial de Netbox para obtener más detalles sobre cómo hacer todo lo que necesite configurar. De lo contrario, gracias por visitarnos y quedarnos hasta el final.
“Lamentablemente, las despedidas más dolorosas son las que no se dicen ni se explican. ”
― Jonathan Harnisch, monstruo
Guías más interesantes:
- Instalar y configurar phpIPAM en Ubuntu/Debian Linux
- Instale Neat IP Address Planner (NIPAP) en Ubuntu y Debian
- Cómo instalar NetBox IPAM en Debian Linux
- Cómo instalar NetBox en Ubuntu 18.04 LTS