Búsqueda de sitios web

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

Artículos relacionados: