Búsqueda de sitios web

Cómo instalar NetBox en Rocky Linux 9


En esta página

  1. Requisitos previos
  2. Instalación y configuración de PostgreSQL
  3. Instalación y configuración de Redis
  4. Instalación de Netbox IRM
  5. Configuración de NetBox IRM
  6. Configurar httpd como proxy inverso
  7. Proteger NetBox IRM con SSL Letsencrypt
  8. Iniciar sesión en NetBox
  9. Conclusión

NetBox es un software de modelado de recursos de infraestructura (IRM) diseñado para la automatización de redes y la ingeniería de infraestructuras. Inicialmente, fue creado por el equipo de DigitalOcean y ahora se convirtió en un proyecto de código abierto publicado bajo la licencia Apache 2. NetBox se creó en el marco web de Python Django con PostgreSQL como base de datos predeterminada, y la instalación de NetBox es bastante similar a otras aplicaciones web de Python Django.

NetBox lo ayuda a administrar su infraestructura, que incluye:

  • DCIM (Administración de la infraestructura del centro de datos)
  • IPAM (Administración de direcciones IP)
  • Circuitos de datos
  • Conexiones (red, consola y alimentación)
  • Bastidores de equipos
  • Virtualización
  • Secretos

En este tutorial, instalará NetBox IRM (Administración de recursos de infraestructura) en un servidor Rocky Linux 9. Configurará NetBox con PostgreSQL como sistema de base de datos y Apache/httpd como proxy inverso en un sistema Rocky Linux. También asegurará NetBox con certificados SSL/TLS a través de Certbot y Letsencrypt.

requisitos previos

Antes de comenzar, asegúrese de tener los siguientes requisitos:

  • Un servidor Rocky Linux 9: este ejemplo utiliza un servidor Rocky Linux con el nombre de host netbox-rocky.
  • Un usuario no root con privilegios de administrador sudo/root.
  • Un SELinux ejecutándose en modo permisivo.
  • Un nombre de dominio o subdominio dirigido a una dirección IP de servidor: este ejemplo utiliza un subdominio netbox.hwdomain.io para ejecutar NetBox.

Con estos requisitos previos en su lugar, está listo para instalar NetBox.

Instalación y configuración de PostgreSQL

NetBox IRM por defecto es compatible con el servidor de base de datos PostgreSQL. Al momento de escribir este artículo, se requiere al menos PostgreSQL v10 y superior. De forma predeterminada, el repositorio de Rocky Linux proporciona el servidor PostgreSQL v13, que es adecuado para la implementación de NetBox.

En este paso, instalará el servidor de la base de datos PostgreSQL, configurará la autenticación de contraseña y luego creará una nueva base de datos y un usuario que usará NetBox.

Para comenzar, ejecute el siguiente comando para instalar el servidor PostgreSQL en el servidor Rocky Linux.

sudo dnf install postgresql-server

Cuando se le solicite, ingrese y para confirmar y presione ENTER para continuar.

Después de instalar el servidor PostgreSQL, ejecute el siguiente comando para inicializar la base de datos y la configuración de PostgreSQL.

sudo postgresql-setup --initdb

Debería recibir un resultado como Inicializando la base de datos en....

Con el servidor PostgreSQL inicializado, a continuación, configurará el cifrado de contraseña y la autenticación para los usuarios de PostgreSQL.

Abra el archivo de configuración de PostgreSQL /var/lib/pgsql/data/postgresql.conf usando el siguiente comando del editor nano.

sudo nano /var/lib/pgsql/data/postgresql.conf

Descomente el parámetro password_encryption y cambie el valor a scram-sha-256. Esto configurará el cifrado de contraseña predeterminado para los usuarios de PostgreSQL para scram-sha-256.

password_encryption = scram-sha-256

Guarde el archivo y salga del editor.

Luego, abra otro archivo de configuración de PostgreSQL /var/lib/pgsql/data/pg_hba.conf usando el siguiente comando. Este archivo es donde puede definir métodos de autenticación para su PostgreSQL.

sudo nano /var/lib/pgsql/data/pg_hba.conf

Cambie los métodos de autenticación predeterminados para el host 127.0.0.1/32 y ::1/128 a scram-sha-256. Con esto, configurará los métodos de autenticación predeterminados para los usuarios de PostgreSQL para scram-sha-256.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256

Guarde el archivo y salga del editor cuando termine.

Ahora ejecute la siguiente utilidad de comando systemctl para iniciar y habilitar el servicio PostgreSQL.

sudo systemctl start postgresql
sudo systemctl enable postgresql

Luego verifique el servicio PostgreSQL usando el siguiente comando.

sudo systemctl status postgresql

Debería recibir un resultado como este: el servicio PostgreSQL se está ejecutando y está habilitado, lo que significa que PostgreSQL se iniciará automáticamente al iniciarse.

Ahora que ha configurado la autenticación de contraseña para el servidor PostgreSQL, ahora está en funcionamiento. A continuación, configurará una nueva contraseña para el usuario de postgres predeterminado y creará una nueva base de datos y un nuevo usuario que utilizará NetBox.

Inicie sesión en el shell de PostgreSQL mediante el siguiente comando.

sudo -u postgres psql

Ejecute la siguiente consulta para configurar una nueva contraseña para el usuario predeterminado de PostgreSQL postgres. Asegúrese de cambiar la contraseña en la siguiente consulta.

ALTER USER postgres WITH PASSWORD 'PostgreSQLPass';

A continuación, ejecute la siguiente consulta para crear una nueva base de datos y usuario de PostgreSQL. Además, asegúrese de cambiar la contraseña predeterminada en la siguiente consulta.

En este ejemplo, creará una nueva base de datos netboxdb con el usuario netbox que se usará para la instalación de NetBox.

CREATE DATABASE netboxdb;
CREATE USER netbox WITH ENCRYPTED PASSWORD 'NetBoxRocks';
GRANT ALL PRIVILEGES ON DATABASE netboxdb TO netbox;

Ahora presione Ctrl+d o escriba quit para salir.

Por último, ejecute el siguiente comando para iniciar sesión en el shell de PostgreSQL a través de la nueva netbox de usuario en la nueva base de datos netboxdb. Cuando se le solicite la contraseña, ingrese su contraseña.

sudo -u postgres psql --username netbox --password --host localhost netboxdb

Después de iniciar sesión en el shell de PostgreSQL, ejecute la siguiente consulta para verificar su conexión actual.

\conninfo

Recibirá un resultado como este: se ha conectado al servidor PostgreSQL a través del usuario de netbox a la base de datos netboxdb.

Con PostgreSQL instalado, la base de datos y el usuario creados, a continuación instalará Redis, que se utilizará como administración de caché en la aplicación web NetBox.

Instalación y configuración de Redis

Redis es una base de datos clave-valor gratuita y de código abierto que NetBox utilizará para la gestión de caché y gestión de colas. Al momento de escribir este artículo, NetBox requería al menos el servidor Redis v4, y el repositorio predeterminado de Rocky Linux proporciona Redis v6 y es adecuado para su implementación de NetBox.

Instale Redis en su servidor Rocky Linux a través del siguiente comando dnf.

sudo dnf install redis

Ingrese y cuando se le solicite y presione ENTER para continuar.

Después de instalar Redis, abra el archivo de configuración de Redis /etc/redis/redis.conf usando el siguiente comando del editor nano.

sudo nano /etc/redis/redis.conf

Descomente el parámetro requirepass e ingrese la nueva contraseña para su servidor Redis.

requirepass RedisPasswordNetBox

Guarde el archivo y salga del editor cuando termine.

A continuación, ejecute el siguiente comando systemctl para iniciar el servidor Redis y habilitarlo.

sudo systemctl start redis
sudo systemctl enable redis

Luego verifique el servidor Redis a través de la siguiente utilidad de comando systemctl.

sudo systemctl status redis

En el resultado, debería ver que el servidor Redis está habilitado y se ejecutará automáticamente al iniciarse. Y el estado del servidor Redis se está ejecutando.

Para verificar su instalación de Redis, accederá a Redis a través del comando redis-cli a continuación.

redis-cli

Si ejecuta la consulta de ping, debería recibir un resultado como (error) se requiere autenticación NOAUTH. Debe estar autenticado para ejecutar el comando ping.

ping

Ejecute la siguiente consulta Redis para autenticarse en el servidor Redis. Asegúrese de cambiar la contraseña. Si está autenticado, debería recibir una salida OK.

AUTH RedisPasswordNetBox

Vuelva a ejecutar la consulta de ping y debería obtener una salida PONG\, lo que significa que la consulta se ejecutó correctamente y se ha autenticado en el servidor de Redis.

ping

En este punto, ha instalado el servidor de base de datos PostgreSQL y la base de datos de clave-valor de Redis en Rocky Linux. Ahora está listo para comenzar la instalación de NetBox.

Instalación de Netbox IRM

NetBox es una aplicación web escrita con Python Django Framework. La versión actual de NetBox requería al menos Python 3.8, 3.9, 3.10 o 3.11. Y el Python predeterminado en Rocky Linux 9 es Python 3.9, que es adecuado para la implementación de NetBox.

Para comenzar, ejecute el siguiente comando dnf para instalar las dependencias del paquete para NetBox. Ingrese y cuando se le solicite y presione ENTER para continuar.

sudo dnf install gcc libxml2-devel libxslt-devel libffi-devel libpq-devel openssl-devel redhat-rpm-config git

A continuación, ejecute el siguiente comando para crear una nueva netbox de usuario del sistema con el directorio de inicio predeterminado /opt/netbox.

sudo useradd -r -d /opt/netbox -s /usr/sbin/nologin netbox

Cree un nuevo directorio /opt/netbox y mueva su directorio de trabajo a él. Luego, descargue el código fuente de NetBox a través del comando git. El directorio /opt/netbox se utilizará como el directorio de instalación principal de NetBox.

mkdir -p /opt/netbox; cd /opt/netbox
sudo git clone -b master --depth 1 https://github.com/netbox-community/netbox.git .

Cambie la propiedad del directorio de instalación de NetBox /opt/netbox a la netbox de usuario y grupo. Luego, mueva su directorio de trabajo a /opt/netbox/netbox/netbox.

sudo chown -R netbox:netbox /opt/netbox
cd /opt/netbox/netbox/netbox

A continuación, ejecute el siguiente comando para copiar la configuración predeterminada de NetBox en configuration.py. Luego, genere SECRET_KEY a través de la secuencia de comandos de Python ../generate_secret_key.py.

sudo -u netbox cp configuration_example.py configuration.py
sudo -u netbox python3 ../generate_secret_key.py

Ahora copie la SECRET_KEY generada. Esto se utilizará para configurar la instalación de NetBox.

Abra el archivo de configuración de NetBox configuration.py usando el siguiente comando del editor nano.

sudo -u netbox nano configuration.py

Asegúrese de agregar su nombre de dominio al parámetro ALLOWED_HOSTS, ingrese los detalles de la base de datos PostgreSQL y el usuario de NetBox, ingrese la contraseña de Redis que configuró y pegue la SECRET_KEY generada en el parámetro SECRET_KEY.

# domain and IP address
ALLOWED_HOSTS = ['netbox.hwdomain.io', '192.168.5.59']

# database configuration
DATABASE = {
    'NAME': 'netboxdb',               # Database name
    'USER': 'netbox',               # PostgreSQL username
    'PASSWORD': 'NetBoxRocks', # PostgreSQL password
    'HOST': 'localhost',            # Database server
    'PORT': '',                     # Database port (leave blank for default)
    'CONN_MAX_AGE': 300,            # Max database connection age (seconds)
}

# Redis cache configuration
REDIS = {
    'tasks': {
        'HOST': 'localhost',      # Redis server
        'PORT': 6379,             # Redis port
        'PASSWORD': 'RedisPasswordNetBox',           # Redis password (optional)
        'DATABASE': 0,            # Database ID
        'SSL': False,             # Use SSL (optional)
    },
    'caching': {
        'HOST': 'localhost',
        'PORT': 6379,
        'PASSWORD': 'RedisPasswordNetBox',
        'DATABASE': 1,            # Unique ID for the second database
        'SSL': False,
    }
}

# Secret key
SECRET_KEY = '-K0AV#USk(!-6hAEF-8NMgweJh6ex&+j0Kb$N7bi=*jsF9TOg*'

Guarde y salga del archivo cuando termine.

Ahora ejecute el siguiente script /opt/netbox/upgrade.sh para iniciar la instalación de NetBox IRM.

sudo -u netbox /opt/netbox/upgrade.sh

Esto instalará la creación del entorno virtual de Python para la aplicación web de NetBox, instalará las dependencias de Python requeridas a través del repositorio PyPI, ejecutará la migración de la base de datos para NetBox y, por último, generará archivos estáticos para la aplicación web de NetBox.

A continuación se muestra una salida cuando se ejecutó el script upgrade.sh.

A continuación se muestra el mensaje de salida cuando finaliza la instalación de NetBox.

En este punto, ha instalado NetBox IRM en su sistema. Pero aún así, debe configurar su instalación de NetBox.

Configuración de NetBox IRM

En este paso, configurará la instalación de NetBox IRM creando un usuario administrador para NetBox, configurando cron y configurando los servicios systemd para NetBox.

Para comenzar, ejecute el siguiente comando para activar el entorno virtual de Python para su instalación de NetBox.

source /opt/netbox/venv/bin/activate

Cuando se activa, su aviso será como (venv) [email .

A continuación, mueva el directorio de trabajo a /opt/netbox/netbox y ejecute el script de Django manage.py para crear un nuevo usuario administrador de NetBox.

cd /opt/netbox/netbox
python3 manage.py createsuperuser

Ingrese el nuevo usuario administrador, correo electrónico y contraseña para su NetBox. Debería recibir una salida Superusuario creado con éxito, lo que significa que se ha creado el usuario administrador de NetBox.

A continuación, ejecute el siguiente comando para configurar cron que se ejecutará diariamente. El script netbox-housekeeping.sh se usa para limpiar su entorno NetBox, esto eliminará las tareas caducadas, las sesiones antiguas o cualquier registro caducado.

sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping

Después de configurar un cron para NetBox, configurará NetBox para que se ejecute con Gunicorn.

Ejecute el siguiente comando para copiar la configuración de Guncorn en /opt/netbox/gunicorn.py. Luego, abra el archivo de configuración de Gunicorn /opt/netbox/gunicorn.py usando el siguiente comando del editor nano.

sudo -u netbox cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
sudo -u netbox nano /opt/netbox/gunicorn.py

Cambie el parámetro de enlace con la siguiente línea. Esto ejecutará la aplicación web NetBox localmente con el puerto 8001.

bind = '127.0.0.1:8001'

Guarde y cierre el archivo cuando termine.

A continuación, ejecute el siguiente comando para copiar los servicios systemd predeterminados para NetBox en el directorio /etc/systemd/system. Esto copiará el archivo de servicio netbox y netbox-rq que se usará para administrar NetBox.

sudo cp -v /opt/netbox/contrib/*.service /etc/systemd/system/

Ahora ejecute la siguiente utilidad de comando systemctl para recargar el administrador systemd y aplicar nuevos cambios a su sistema.

sudo systemctl daemon-reload

Por último, ejecute el siguiente comando systemctl para iniciar y habilitar el servicio netbox-rq. Esto también iniciará automáticamente el servicio principal de netbox.

sudo systemctl start netbox netbox-rq
sudo systemctl enable netbox netbox-rq

Ahora verifique los servicios netbox-rq y netbox a través del siguiente comando systemcl.

sudo systemctl status netbox
sudo systemctl status netbox-rq

La salida del estado del servicio netbox-rq.

La salida del servicio netbox.

En este punto, NetBox IRM se ejecuta como un servicio systemd y se ejecuta como una aplicación WSGI con Gunicorn. En el siguiente paso, instalará y configurará httpd como proxy inverso para NetBox.

Configuración de httpd como proxy inverso

Con NetBox ejecutándose como una aplicación WSGI con Gunicorn, ahora instalará y configurará el servidor web httpd como un proxy inverso para NetBox. Instalará el paquete httpd, creará un nuevo archivo de host virtual httpd, luego iniciará y habilitará el servicio httpd. Por último, también configurará el cortafuegos para abrir puertos HTTP y HTTPS.

Ejecute el siguiente comando dnf para instalar el servidor web httpd. Ingrese y cuando se le solicite confirmación y presione ENTER para continuar.

sudo dnf install httpd

A continuación, cree un nuevo archivo de host virtual httpd /etc/httpd/conf.d/netbox.conf usando el siguiente comando del editor nano.

sudo nano /etc/httpd/conf.d/netbox.conf

Agregue las siguientes líneas al archivo y asegúrese de cambiar el nombre de dominio netbox.hwdomain.io con su dominio. Con este host virtual, configurará un httpd como proxy inverso para la aplicación NetBox que se ejecuta como una aplicación WSGI en el puerto 8001.

<VirtualHost *:80>
    ProxyPreserveHost On

    # CHANGE THIS TO YOUR SERVER'S NAME
    ServerName netbox.hwdomain.io

    Alias /static /opt/netbox/netbox/static

    <Directory /opt/netbox/netbox/static>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Require all granted
    </Directory>

    <Location /static>
        ProxyPass !
    </Location>

    RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
    ProxyPass / http://127.0.0.1:8001/
    ProxyPassReverse / http://127.0.0.1:8001/
</VirtualHost>

Guarde el archivo y salga del editor cuando termine.

A continuación, ejecute el siguiente comando apachectl para verificar las configuraciones de httpd. Y si tiene una configuración adecuada de httpd, debería recibir un resultado como Syntax OK.

sudo apachectl configtest

Ahora ejecute la siguiente utilidad de comando systemctl para iniciar y habilitar el servidor web httpd.

sudo systemctl start httpd
sudo systemctl enable httpd

Luego verifique el servidor web httpd para asegurarse de que el servicio se esté ejecutando. Debería recibir un mensaje de que el servidor web httpd se está ejecutando y está habilitado, lo que significa que el servidor web httpd se iniciará automáticamente al iniciarse.

sudo systemctl status httpd

Con esto en mente, la aplicación NetBox se está ejecutando y es accesible. Pero antes de eso, debe abrir los puertos HTTP y HTTPS en firewalld.

Ejecute el siguiente comando firewall-cmd para abrir los servicios HTTP y HTTPS. Luego, vuelva a cargar el firewalld para aplicar los cambios.

sudo firewall-cmd --add-servic={http,https} --permanent
sudo firewall-cmd --reload

Verifique el estado de firewalld a través del siguiente comando.

sudo firewall-cmd --list-all

Una salida como esta le muestra que los servicios HTTP y HTTPS se agregaron al firewalld.

Con esto, ahora tiene la aplicación web de NetBox que se está ejecutando y es accesible: puede acceder a la instalación de NetBox, pero con un protocolo HTTP inseguro. En el siguiente paso, protegerá su implementación de NetBox con certificados SSL/TLS a través de Certbot y Letsencrypt.

Asegurar NetBox IRM con SSL Letsencrypt

En este paso, protegerá la instalación de NetBox con certificados SSL/TLS que se pueden generar a través de Certbot y Letsencrypt. Antes de comenzar, asegúrese de que el nombre de dominio apunte a la dirección IP del servidor. Además, asegúrese de tener una dirección de correo electrónico que se utilizará para registrarse en Letsencrypt.

Instale la herramienta Certbot y el complemento httpd/Apache mediante el siguiente comando dnf.

sudo dnf install certbot python3-certbot-apache

Ingrese y cuando se le solicite y presione ENTER para continuar.

Después de instalar Certbot, ejecute el siguiente comando para generar certificados SSL/TLS para su nombre de dominio. Además, asegúrese de cambiar el nombre de dominio y la dirección de correo electrónico en el siguiente comando.

sudo certbot --apache2 --agree-tos --redirect --hsts --staple-ocsp --email  -d netbox.hwdomain.io

Este comando generará los nuevos certificados SSL/TLS para su nombre de dominio. Además, esto configurará automáticamente HTTPS en su configuración de host virtual httpd y configurará la redirección automática de HTTP a HTTPS para su archivo de host virtual de NetBox. Los certificados Certbot SSL/TLS se generan en el directorio /etc/elstencrypt/live/netbox.hwdomain.io/.

Iniciar sesión en NetBox

Abra su navegador web y visite el nombre de dominio de su instalación de NetBox (es decir, https://netbox.hwdomain.io/).

Verá la página de inicio predeterminada de su instalación de NetBox. Esta es solo una vista previa de su instalación de NetBox.

Haga clic en el botón Iniciar sesión en el menú superior derecho y será redirigido a la pantalla de inicio de sesión de NetBox.

Inicie sesión con su usuario y contraseña de administrador, luego haga clic en Iniciar sesión.

Cuando tenga el usuario y la contraseña adecuados y correctos para NetBox, ahora debe iniciar sesión en el panel de administración de NetBox.

Con esto, ahora ha terminado la instalación de NetBox IRM con PostgreSQL, Redis, Gunciron y el servidor web httpd.

Conclusión

En este tutorial, ha instalado un NetBox de software de modelado de recursos de infraestructura (IRM) en un servidor Rocky Linux 9. Configuró NetBox con un servidor de base de datos PostgreSQL, Redis como administración de caché y un servidor web httpd como proxy inverso en un servidor Rocky Linux.

A través del tutorial, también aprendió cómo configurar la autenticación en PostgreSQL, habilitar la autenticación en Redis, configurar httpd como un proxy inverso y asegurar NetBox con certificados SSL/TLS a través de Certbot y Letsencrypt.

Con NeBox completamente instalado, ahora puede integrar NetBox en sus centros de datos, agregar integración con API REST o agregar autenticación de terceros a través de LDAP, Azure AD y Okta como back-end SSO (Single Sign-On).

Artículos relacionados: