Comment installer l’outil de documentation et de gestion du réseau NetBox sur Ubuntu 20.04 LTS

Netbox est un outil gratuit et puissant de gestion des adresses IP (IPAM) et de l’infrastructure du datacentre (DCIM). Il sert à stocker des informations sur tes réseaux, tes VM, tes inventaires et bien d’autres choses encore. Il a été développé à l’origine par l’équipe d’ingénierie réseau de DigitalOcean. Cet outil est écrit dans le framework Django Python et s’appuie sur la base de données PostgreSQL. Son objectif est de fonctionner comme une source de vérité spécifique au domaine pour les opérations réseau.

Dans ce tutoriel, nous allons expliquer comment installer Netbox avec Nginx comme proxy inverse sur Ubuntu 20.04.

Conditions préalables

  • Un serveur exécutant Ubuntu 20.04.
  • Un mot de passe root est configuré sur ton serveur.

Pour commencer

Avant de commencer, tu dois installer certaines dépendances requises par Netbox. Tu peux les installer toutes en exécutant la commande suivante :

apt-get install nginx git gcc supervisor python3 python3-dev python3-pip python3-setuptools build-essential libxml2-dev libxslt1-dev libffi-dev graphviz libpq-dev libssl-dev zlib1g-dev -y

Une fois que tous les paquets sont installés, tu peux passer à l’étape suivante.

Installe et configure la base de données PostgreSQL

Netbox s’appuie sur la base de données PostgreSQL pour le stockage des données. Tu peux l’installer avec la commande suivante :

apt-get install postgresql postgresql-contrib -y

Une fois que PostgreSQL est installé, connecte-toi à la base de données PostgreSQL avec la commande suivante :

su - postgres
[email protected]:~$ psql

Tu devrais obtenir le résultat suivant :

psql (12.2 (Ubuntu 12.2-4))
Type "help" for help.

Ensuite, crée une base de données et un utilisateur pour Netbox avec la commande suivante :

postgres=# CREATE DATABASE netbox;
postgres=# CREATE USER netbox WITH PASSWORD 'password';

Ensuite, accorde tous les privilèges à la base de données Netbox avec la commande suivante :

postgres=# GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;

Ensuite, quitte le shell PostgreSQL avec la commande suivante: :

postgres=# exit
[email protected]:~$ exit

Installer et configurer NetBox

Tout d’abord, change le répertoire en /opt et télécharge la dernière version de Netbox depuis le dépôt Git Hub à l’aide de la commande suivante :

cd /opt/
git clone -b master https://github.com/digitalocean/netbox.git

Ensuite, crée un lien symbolique du binaire Python avec la commande suivante :

ln -s /usr/bin/python3 /usr/bin/python

Ensuite, change le répertoire en /opt/netbox/netbox/ et génère la clé SECRET Django en exécutant la commande suivante :

cd /opt/netbox/netbox/
./generate_secret_key.py

Tu devrais obtenir le résultat suivant :

[email protected])eTDpo(k^f4Sm9bariUnK0syCPMGEIjW6XV_8l5xhB7z

Ensuite, change le répertoire en netbox et renomme le fichier de configuration de l’exemple :

cd netbox
mv configuration.example.py configuration.py

Ensuite, modifie le fichier de configuration de Netbox et définis ta base de données, la clé secrète et les hôtes autorisés :

nano configuration.py

Apporte les modifications suivantes :

ALLOWED_HOSTS = ['your-server-ip']

# PostgreSQL database configuration. See the Django documentation for a complete list of available parameters:
#   https://docs.djangoproject.com/en/stable/ref/settings/#databases
DATABASE = {
    'NAME': 'netbox',         # Database name
    'USER': 'netbox',               # PostgreSQL username
    'PASSWORD': 'password',           # PostgreSQL password
    'HOST': 'localhost',      # Database server
    'PORT': '',               # Database port (leave blank for default)
    'CONN_MAX_AGE': 300,      # Max database connection age
}

SECRET_KEY = '[email protected])eTDpo(k^f4Sm9bariUnK0syCPMGEIjW6XV_8l5xhB7z'

Enregistre et ferme le fichier puis installe toutes les dépendances Python avec la commande suivante :

pip3 install -r /opt/netbox/requirements.txt

Ensuite, migre la base de données avec la commande suivante :

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

Ensuite, crée un utilisateur administratif Netbox avec la commande suivante :

python3 manage.py createsuperuser

Il te sera demandé de fournir un nom d’utilisateur et un mot de passe comme indiqué ci-dessous :

Username (leave blank to use 'root'): netboxadmin
Email address: [email protected]
Password: 
Password (again): 
Superuser created successfully.

Ensuite, collecte le fichier statique avec la commande suivante :

python3 manage.py collectstatic

Tu devrais voir la sortie suivante :

976 static files copied to '/opt/netbox/netbox/static'.

Installer et configurer Gunicorn

Netbox est une application basée sur Django. Tu dois donc installer Gunicorn dans ton système. Tu peux l’installer en exécutant la commande suivante :

pip3 install gunicorn

Après avoir installé Gunicorn, crée un nouveau fichier de configuration Gunicorn pour Netbox avec la commande suivante :

nano /opt/netbox/gunicorn_config.py

Ajoute les lignes suivantes :

command = '/usr/local/bin/gunicorn'
pythonpath = '/opt/netbox/netbox'
bind = 'your-server-ip:8001'
workers = 3
user = 'www-data'

Sauvegarde et ferme le fichier lorsque tu as terminé.

Installer et configurer Supervisor

Supervisor est un système client/serveur qui te permet de surveiller et de contrôler le service NetBox. Tu peux créer un nouveau fichier de configuration Supervisor pour Netbox avec la commande suivante :

nano /etc/supervisor/conf.d/netbox.conf

Ajoute les lignes suivantes :

[program:netbox]
command = gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
directory = /opt/netbox/netbox/
user = www-data

Sauvegarde et ferme le fichier lorsque tu as terminé. Ensuite, redémarre le service Supervisor avec la commande suivante :

systemctl restart supervisor

Tu peux aussi vérifier l’état du service Supervisor à l’aide de la commande suivante :

systemctl status supervisor

Tu devrais obtenir la sortie suivante :

? supervisor.service - Supervisor process control system for UNIX
     Loaded: loaded (/lib/systemd/system/supervisor.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2020-05-30 05:49:08 UTC; 14s ago
       Docs: http://supervisord.org
   Main PID: 550606 (supervisord)
      Tasks: 5 (limit: 4691)
     Memory: 184.3M
     CGroup: /system.slice/supervisor.service
             ??550606 /usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
             ??550626 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
             ??550628 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
             ??550629 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
             ??550630 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi

May 30 05:49:08 ubuntu2004 systemd[1]: Started Supervisor process control system for UNIX.
May 30 05:49:08 ubuntu2004 supervisord[550606]: 2020-05-30 05:49:08,664 CRIT Supervisor is running as root.  Privileges were not dropped becau>
May 30 05:49:08 ubuntu2004 supervisord[550606]: 2020-05-30 05:49:08,664 INFO Included extra file "/etc/supervisor/conf.d/netbox.conf" during p>
May 30 05:49:08 ubuntu2004 supervisord[550606]: 2020-05-30 05:49:08,671 INFO RPC interface 'supervisor' initialized
May 30 05:49:08 ubuntu2004 supervisord[550606]: 2020-05-30 05:49:08,671 CRIT Server 'unix_http_server' running without any HTTP authentication>
May 30 05:49:08 ubuntu2004 supervisord[550606]: 2020-05-30 05:49:08,672 INFO supervisord started with pid 550606
May 30 05:49:09 ubuntu2004 supervisord[550606]: 2020-05-30 05:49:09,676 INFO spawned: 'netbox' with pid 550626
May 30 05:49:11 ubuntu2004 supervisord[550606]: 2020-05-30 05:49:11,060 INFO success: netbox entered RUNNING state, process has stayed up for

Configurer Nginx pour NetBox

C’est une bonne idée de configurer Nginx comme un proxy inverse pour accéder à la Netbox au port 80. Tu peux créer une nouvelle configuration d’hôte virtuel Nginx à l’aide de la commande suivante :

nano /etc/nginx/sites-available/netbox.conf

Ajoute les lignes suivantes :

server {
    listen 80;
    server_name your-server-ip;
    client_max_body_size 25m;

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

    location / {
        proxy_pass http://your-server-ip:8001;
    }
}

Enregistre et ferme le fichier. Ensuite, crée un lien symbolique vers le répertoire /etc/nginx/sites-enabled/ :

ln -s /etc/nginx/sites-available/netbox.conf /etc/nginx/sites-enabled/

Ensuite, vérifie que Nginx n’a pas d’erreur de syntaxe avec la commande suivante :

nginx -t

Si tout va bien, tu devrais obtenir la sortie suivante :

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Enfin, redémarre le service Nginx pour appliquer les modifications.

systemctl restart nginx

Tu peux aussi vérifier Nginx avec la commande suivante :

systemctl status nginx

Tu devrais obtenir le résultat suivant :

? nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-05-30 22:28:13 EST; 4min 14s ago
  Process: 984 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 982 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 980 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 985 (nginx)
    Tasks: 3 (limit: 25028)
   Memory: 5.5M
   CGroup: /system.slice/nginx.service
           ??985 nginx: master process /usr/sbin/nginx
           ??986 nginx: worker process
           ??987 nginx: worker process

May 30 21:28:12 ubuntu2004 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Mar 30 21:28:12 ubuntu2004 nginx[982]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Mar 30 21:28:12 ubuntu2004 nginx[982]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Mar 30 21:28:13 ubuntu2004 systemd[1]: Started The nginx HTTP and reverse proxy server.

À ce stade, le serveur Web Nginx est configuré pour servir Netbox sur le port 80. Tu peux maintenant accéder à l’interface Web de Netbox.

Accéder à l’interface Web de Netbox

Ouvre ton navigateur Web et visite l’URL http://your-server-ip. Tu seras redirigé vers la page suivante :

Interface Netbox

Clique sur le bouton Connexion. Tu devrais voir la page de connexion Netbox dans l’écran suivant :

Connexion Netbox

Indique ton nom d’utilisateur et ton mot de passe d’administrateur Netbox, puis clique sur le bouton de connexion. Tu devrais voir le tableau de bord par défaut de Netbox dans la page suivante :

Tableau de bord d'administration de Netbox

Conclusion

Dans ce guide, tu as appris à installer Netbox sur Ubuntu 20.04 avec Nginx. Tu peux maintenant commencer à documenter ton infrastructure réseau. Pour plus d’informations, consulte la documentation officielle deNetbox. N’hésite pas à me demander si tu as des questions.

Vous aimerez aussi...