Búsqueda de sitios web

Cómo instalar NetBox IPAM en Rocky Linux 8/CentOS 8 |


Netbox es una herramienta gratuita y de código abierto que se utiliza para gestionar y documentar redes informáticas a través de la web. Esto ha ayudado a reducir la tediosa tarea de establecer redes en las organizaciones mediante la creación de una implementación virtual de cada dispositivo en un centro de datos. En el pasado, esta tarea se realizaba dibujando la estructura de la red en papel, pero con NetBox, las operaciones organizadas y presentables se visualizan a través de la web.

Netbox está escrito en Django y utiliza la base de datos PostgreSQL para documentar redes informáticas y administrar direcciones IP. Tiene las siguientes características sorprendentes:

  • IPAM – Gestión de direcciones IP
  • Gestión de VLAN
  • Elevación del estante
  • Gestión de VRF
  • Multisitio (inquilino)
  • Gestión de conexión: interfaces/consola/alimentación
  • Encabezado de personalización para logotipos, etc.
  • Gestión de proveedores de circuitos
  • Base de datos única convergente
  • DCIM – Gestión de infraestructura del centro de datos
  • Alerta de informe

1. Actualizar el sistema e instalar dependencias

En esta guía, instalaremos y configuraremos la herramienta NetBox IPAM en Rocky Linux 8. Para esta guía, necesitará:

  • Un sistema Rocky Linux 8.
  • Un usuario con privilegios sudo.
  • Python 3.8 y superior
  • PostgreSQL 10
  • Redis 4.0

Actualice su sistema.

sudo yum update -y

Instale el repositorio EPEL necesario para instalar las dependencias.

sudo dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

Instale las dependencias necesarias.

sudo yum install -y gcc libxml2-devel libxslt-devel libffi-devel libpq-devel openssl-devel redhat-rpm-config git vim

Configure SELinux en modo permisivo ya que usaremos puertos TCP.

sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
cat /etc/selinux/config | grep SELINUX=

2. Instale Python en Rocky Linux 8/CentOS 8

En esta guía, instalaremos Python 3.9 ya que esta versión de Netbox IPAM requiere Python 3.7 y superior. Python 3.9 está disponible en los repositorios predeterminados y se puede instalar con el comando:

Instale Python 3.9 en Rocky Linux 8|CentOS 8 con el comando:

sudo yum install python3.9 

Árbol de dependencia;

Dependencies resolved.
================================================================================
 Package            Arch   Version                              Repo       Size
================================================================================
Installing:
 python39           x86_64 3.9.7-1.module_el8.6.0+930+10acc06f  appstream  33 k
Installing dependencies:
 python39-libs      x86_64 3.9.7-1.module_el8.6.0+930+10acc06f  appstream 8.2 M
 python39-pip-wheel noarch 20.2.4-6.module_el8.6.0+930+10acc06f appstream 1.3 M
 python39-setuptools-wheel
                    noarch 50.3.2-4.module_el8.6.0+930+10acc06f appstream 497 k
Installing weak dependencies:
 python39-pip       noarch 20.2.4-6.module_el8.6.0+930+10acc06f appstream 2.0 M
 python39-setuptools
                    noarch 50.3.2-4.module_el8.6.0+930+10acc06f appstream 871 k
Enabling module streams:
 python39                  3.9                                                 

Transaction Summary
================================================================================
Install  6 Packages

Total download size: 13 M
Installed size: 45 M
Is this ok [y/N]: y

Identificar el camino a Python.

$ whereis python3.9
python3: /usr/bin/python3.6 /usr/bin/python3.6m /usr/bin/python3 /usr/bin/python3.9 /usr/lib/python3.6 /usr/lib/python3.9 /usr/lib64/python3.6 /usr/lib64/python3.9 /usr/include/python3.6m /usr/include/python3.9 /usr/share/man/man1/python3.1.gz

Cree un enlace simbólico a /usr/bin/python. Si ya existe un enlace, elimine el archivo existente sudo rm -rf /usr/bin/python3 y pip3 también

sudo ln -fs /usr/bin/python3.9 /usr/bin/python3
sudo ln -fs /usr/bin/pip3.9 /usr/bin/pip3

Verifique la versión instalada.

$ python3 --version
Python 3.9.13

3. Instalar y configurar el servidor de base de datos PostgreSQL

Dado que Netbox IPAM utiliza la base de datos PostgreSQL, es necesario que lo instalemos en Rocky Linux. Primero, verifique la última versión disponible.

$ sudo dnf module list postgresql
Rocky Linux 8 - AppStream
Name         Stream   Profiles             Summary                              
postgresql   9.6      client, server [d]   PostgreSQL server and client module  
postgresql   10 [d]   client, server [d]   PostgreSQL server and client module  
postgresql   12       client, server [d]   PostgreSQL server and client module  
postgresql   13       client, server [d]   PostgreSQL server and client module  

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Desde el resultado, instalaremos la versión 13. Habilítela como se muestra a continuación

$ sudo dnf module enable postgresql:13
......
Dependencies resolved.
================================================================================
 Package           Architecture     Version             Repository         Size
================================================================================
Enabling module streams:
 postgresql                         13                                         

Transaction Summary
================================================================================

Is this ok [y/N]: y

Continúe e instale la versión de PostgreSQL habilitada.

sudo dnf install postgresql-server

Inicialice PostgreSQL.

sudo postgresql-setup --initdb

Con una instalación exitosa, inicie y habilite PostgreSQL para que se ejecute al arrancar.

sudo systemctl start postgresql
sudo systemctl enable postgresql

Ahora cree una base de datos para NetBox IPAM.

sudo -u postgres psql

Mientras esté en el shell de PostgreSQL, cree una base de datos como se muestra a continuación.

CREATE DATABASE netbox;
CREATE USER netbox WITH PASSWORD 'Passw0rd';
GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
\q

Habilite el inicio de sesión con contraseña en PostgreSQL.

sudo sed -i -e 's/ident/md5/' /var/lib/pgsql/data/pg_hba.conf
sudo systemctl restart postgresql

Confirme si puede iniciar sesión en la base de datos creada con la contraseña establecida.

$ psql -U netbox -h localhost -W
Password: <Input-Password>
psql (13.3)
Type "help" for help.

netbox=> \q

4. Instalar y configurar Redis en Rocky Linux 8/CentOS 8

La versión de Redis requerida es 4.0 y superior, instálela como se muestra a continuación:

sudo yum install -y redis

Inicie y habilite Redis.

sudo systemctl start redis
sudo systemctl enable redis

Verifique la versión instalada.

$ redis-server -v
Redis server v=5.0.3 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=9529b692c0384fb7

Verifique el estado del servidor.

$ redis-cli ping
PONG

5. Instalar y configurar Netbox en Rocky Linux 8/CentOS 8

Ahora hemos llegado al meollo de esta guía donde debemos clonar NetBox IPAM desde git y configurarlo en Rocky Linux 8|CentOS 8.

Primero, navegue hasta el directorio /opt/ y clone NetBox.

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

Cree el usuario de Netbox.

sudo groupadd --system netbox
sudo adduser --system -g netbox netbox
sudo chown --recursive netbox /opt/netbox/netbox/media/

Ahora cree un archivo de configuración para Netbox.

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

Ahora edite el archivo de configuración.

sudo vim configuration.py

Edite el archivo como se muestra a continuación.

# Example: ALLOWED_HOSTS = ['netbox.example.com', 'netbox.internal.local']
ALLOWED_HOSTS = ['*']

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

Dado que Netbox requiere dos bases de datos para tareas y almacenamiento en caché, procederemos y editaremos también la base de datos de Redis. Los valores predeterminados están bien.

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

Generar la clave secreta de Django

Ahora genere la clave SECRETA de Django como se muestra a continuación.

python3 ../generate_secret_key.py

Salida de muestra:

Tzvw(9w1tc2^lRzwLc@cDgdrX^3AwDDWXBgMM7OU$vR7LLAh#V

Con la clave generada, proceda y configúrela en configuration.py como se muestra a continuación.

$ sudo vim /opt/netbox/netbox/netbox/configuration.py
# https://docs.djangoproject.com/en/stable/ref/settings/#std:setting-SECRET_KEY
SECRET_KEY = 'Tzvw(9w1tc2^lRzwLc@cDgdrX^3AwDDWXBgMM7OU$vR7LLAh#V'

Ejecute el script de actualización

El script de actualización ejecuta automáticamente lo siguiente:

  • Crea un entorno Python e instala todos los paquetes Python necesarios.
  • Ejecutar migraciones de esquemas de bases de datos
  • Crea la documentación localmente (para uso sin conexión)
  • Agregar archivos de recursos estáticos en el disco

El comando utilizado es el siguiente:

sudo /opt/netbox/upgrade.sh

Salida de muestra:

Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying auth.0012_alter_user_first_name_max_length... OK
  Applying extras.0001_squashed... OK
  Applying tenancy.0001_squashed_0012... OK
  Applying tenancy.0002_tenant_ordering... OK
  Applying dcim.0001_squashed... OK
  Applying dcim.0002_squashed... OK
  Applying ipam.0001_squashed... OK
  Applying virtualization.0001_squashed_0022... OK
  Applying extras.0002_squashed_0059... OK
  Applying extras.0060_customlink_button_class... OK
...
Collecting static files (python3 netbox/manage.py collectstatic --no-input)...

478 static files copied to '/opt/netbox/netbox/static'.
Removing stale content types (python3 netbox/manage.py remove_stale_contenttypes --no-input)...
Removing expired user sessions (python3 netbox/manage.py clearsessions)...
Upgrade complete! Don't forget to restart the NetBox services:
  > sudo systemctl restart netbox netbox-rq

Cree una cuenta de usuario de Netbox.

El siguiente paso requiere que creemos una cuenta de superusuario ya que Netbox no viene con cuentas de usuario predefinidas. Desde el directorio de Netbox ejecute el comando

source /opt/netbox/venv/bin/activate
cd /opt/netbox/netbox
python3 manage.py createsuperuser

Proceda como se indica a continuación.

Username (leave blank to use 'thor'): admin
Email address: [email 
Password: 
Password (again): 
Superuser created successfully.

Proceder y programar las tareas de limpieza. Esto maneja tareas de limpieza repetitivas.

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

Pruebe la instalación.

Ahora prueba la aplicación. Pero antes de eso, permita que el puerto 8000 atraviese el firewall.

sudo firewall-cmd --add-port=8000/tcp --permanent
sudo firewall-cmd --reload

Ahora prueba Netbox

$ python3 manage.py runserver 0.0.0.0:8000 --insecure
Performing system checks...

System check identified no issues (0 silenced).
May 05, 2022 - 15:52:46
Django version 4.0.4, using settings 'netbox.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

Ahora puede acceder a Netbox utilizando la URL http://IP_Address:8000. También puedes intentar iniciar sesión con el superusuario creado.

Detenga el servidor usando CTL+C y proceda como se indica a continuación.

Instalar y configurar el módulo Gunicorn

Netbox incluye la configuración predeterminada de Gunicorn que se puede copiar a la ruta de Netbox como se muestra a continuación.

sudo cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py

Es posible que desee editar el archivo y realizar configuraciones para su IP y puerto de Bind.

sudo vim /opt/netbox/gunicorn.py

En el archivo, agregue las siguientes líneas.

bind = '127.0.0.1:8001'

workers = 5

threads = 3

timeout = 120

# The maximum number of requests a worker can handle before being respawned
max_requests = 5000
max_requests_jitter = 500

Cree un archivo de servicio systemd.

Para poder administrar Netbox como otros servicios del sistema, necesitamos crear el archivo del sistema.

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

Inicie y habilite los servicios de Netbox.

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

Verifique si el servicio se está ejecutando:

$ systemctl status netbox.service
● netbox.service - NetBox WSGI Service
   Loaded: loaded (/etc/systemd/system/netbox.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2022-05-05 12:07:27 EDT; 11s ago
     Docs: https://docs.netbox.dev/
 Main PID: 12914 (gunicorn)
    Tasks: 6 (limit: 23505)
   Memory: 384.4M
   CGroup: /system.slice/netbox.service
           ├─12914 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --c>
           ├─12916 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --c>
           ├─12917 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --c>
           ├─12918 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --c>
           ├─12919 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --c>
           └─12920 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --c

El servicio debería ejecutarse en el puerto 8001.

$ ss -tunelp | grep 8001
tcp   LISTEN 0      128        127.0.0.1:8001      0.0.0.0:*    uid:993 ino:24304646 sk:1e <->

6. Instalar y configurar Nginx para Netbox IPAM

En esta guía, mostraremos la configuración del servidor web Nginx. Instale el servidor web Nginx en Rocky Linux 8 con el comando.

sudo yum -y install nginx

Primero crearemos un archivo de host virtual para nuestra página web.

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

En el archivo, agregue las siguientes líneas. Reemplace netbox.example.com con su FQDN o dirección IP.

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

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

    location / {
        proxy_pass http://127.0.0.1:8001;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Verifique la sintaxis del archivo creado.

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

Inicie y habilite Nginx para que se ejecute al arrancar.

sudo systemctl restart nginx
sudo systemctl enable nginx

Permitir el puerto 8001 en SELinux.

sudo semanage port -a -t dns_port_t -p tcp 8001
sudo setsebool -P httpd_can_network_connect 1

Si está utilizando firewalld, permita que los puertos atraviesen el firewall.

sudo firewall-cmd --permanent --add-port={80,443}/tcp
sudo firewall-cmd --reload

7. Acceda a la interfaz de usuario web de la herramienta Netbox IPAM

Con todo configurado en consecuencia, ahora estamos configurados para acceder a la interfaz web de Netbox IPAM utilizando la URL http://Hostname o http://IP_Address. Se le concederá esta página.

Para realizar cambios, debe iniciar sesión. Haga clic en “Iniciar sesión” en la esquina derecha. Ingrese las credenciales creadas para la cuenta de superusuario en el paso 2 anterior.

Si inicia sesión correctamente, se le otorgará esta ventana.

Mientras esté aquí, puede navegar hasta el panel del lado izquierdo como se muestra a continuación.

Desde el panel puedes agregar dispositivos, conexiones, IPAM, clusters, circuitos, fuente de alimentación y otras opciones. Esto simplemente implica que con Netbox, uno puede administrar completamente un centro de datos agregando aquí los dispositivos necesarios. Por ejemplo, para agregar un dispositivo, se le pedirá que ingrese la información a continuación.

Conclusión

Eso es por ahora. Espero que haya encontrado agradable esta guía sobre cómo instalar y configurar la herramienta NetBox IPAM en Rocky Linux 8.

¡Eso fue un montón de aprendizaje! Ver más en esta página.

  • Instalar y configurar la herramienta NetBox IPAM y DCIM en Ubuntu
  • Cómo instalar NetBox IPAM en Debian
  • Instale NetBox en CentOS 7 con Apache y Supervisord

Artículos relacionados: