Netbox est un outil gratuit et puissant de gestion d'adresse IP (IPAM) et d'infrastructure de centre de données (DCIM). Il est utilisé pour stocker des informations sur vos réseaux, machines virtuelles, inventaires et bien d'autres. Il a été initialement développé 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 à un domaine pour les opérations du réseau.
Dans ce tutoriel, nous expliquerons comment installer Netbox avec Nginx en tant que proxy inverse sur Ubuntu 20.04.
Prérequis
- Un serveur exécutant Ubuntu 20.04.
- Un mot de passe root est configuré sur votre serveur.
Mise en route
Avant de commencer, vous devrez installer certaines dépendances requises par Netbox. Vous pouvez tous les installer 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 tous les packages installés, vous pouvez passer à l'étape suivante.
Installer et configurer la base de données PostgreSQL
Netbox s'appuie sur la base de données PostgreSQL pour le stockage des données. Vous pouvez l'installer avec la commande suivante :
apt-get install postgresql postgresql-contrib -y
Une fois PostgreSQL installé, connectez-vous à PostgreSQL avec la commande suivante :
su - postgres
[email protected]:~$ psql
Vous devriez obtenir le résultat suivant :
psql (12.2 (Ubuntu 12.2-4)) Type "help" for help.
Ensuite, créez 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, accordez tous les privilèges à la base de données Netbox avec la commande suivante :
postgres=# GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
Ensuite, quittez le shell PostgreSQL avec la commande suivante :
postgres=# exit
[email protected]:~$ exit
Installer et configurer NetBox
Tout d'abord, changez le répertoire en /opt et téléchargez la dernière version de Netbox à partir du référentiel Git Hub à l'aide de la commande suivante :
cd /opt/
git clone -b master https://github.com/digitalocean/netbox.git
Ensuite, créez un lien symbolique du binaire Python avec la commande suivante :
ln -s /usr/bin/python3 /usr/bin/python
Ensuite, changez le répertoire en /opt/netbox/netbox/ et générez Django SECRET Key en exécutant la commande suivante :
cd /opt/netbox/netbox/
./generate_secret_key.py
Vous devriez obtenir le résultat suivant :
[email protected])eTDpo(k^f4Sm9bariUnK0syCPMGEIjW6XV_8l5xhB7z
Ensuite, changez le répertoire en netbox et renommez l'exemple de fichier de configuration :
cd netbox
mv configuration.example.py configuration.py
Ensuite, modifiez le fichier de configuration Netbox et définissez votre base de données, votre clé secrète et vos hôtes autorisés :
nano configuration.py
Effectuez 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'
Enregistrez et fermez le fichier puis installez toutes les dépendances Python avec la commande suivante :
pip3 install -r /opt/netbox/requirements.txt
Ensuite, migrez la base de données avec la commande suivante :
cd /opt/netbox/netbox/
python3 manage.py migrate
Ensuite, créez un utilisateur administratif Netbox avec la commande suivante :
python3 manage.py createsuperuser
Il vous 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, collectez le fichier statique avec la commande suivante :
python3 manage.py collectstatic
Vous devriez voir le résultat suivant :
976 static files copied to '/opt/netbox/netbox/static'.
Installer et configurer Gunicorn
Netbox est une application basée sur Django. Vous devrez donc installer Gunicorn sur votre système. Vous pouvez l'installer en exécutant la commande suivante :
pip3 install gunicorn
Après avoir installé Gunicorn, créez un nouveau fichier de configuration Gunicorn pour Netbox avec la commande suivante :
nano /opt/netbox/gunicorn_config.py
Ajoutez les lignes suivantes :
command = '/usr/local/bin/gunicorn' pythonpath = '/opt/netbox/netbox' bind = 'your-server-ip:8001' workers = 3 user = 'www-data'
Enregistrez et fermez le fichier lorsque vous avez terminé.
Installer et configurer le superviseur
Supervisor est un système client/serveur qui vous permet de surveiller et de contrôler le service NetBox. Vous pouvez créer un nouveau fichier de configuration de superviseur pour Netbox avec la commande suivante :
nano /etc/supervisor/conf.d/netbox.conf
Ajoutez les lignes suivantes :
[program:netbox] command = gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi directory = /opt/netbox/netbox/ user = www-data
Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, redémarrez le service Superviseur avec la commande suivante :
systemctl restart supervisor
Vous pouvez également vérifier l'état du service Superviseur à l'aide de la commande suivante :
systemctl status supervisor
Vous devriez obtenir le résultat suivant :
? 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 en tant que proxy inverse pour accéder à la Netbox au port 80. Vous pouvez créer une nouvelle configuration d'hôte virtuel Nginx à l'aide de la commande suivante :
nano /etc/nginx/sites-available/netbox.conf
Ajoutez 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; } }
Enregistrez et fermez le fichier. Ensuite, créez 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érifiez Nginx pour toute erreur de syntaxe avec la commande suivante :
nginx -t
Si tout va bien, vous devriez obtenir le résultat suivant :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Enfin, redémarrez le service Nginx pour mettre en œuvre les modifications.
systemctl restart nginx
Vous pouvez également vérifier le Nginx avec la commande suivante :
systemctl status nginx
Vous devriez 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. Vous pouvez maintenant accéder à l'interface Web Netbox.
Accéder à l'interface Web Netbox
Ouvrez votre navigateur Web et visitez l'URL http://your-server-ip. Vous serez redirigé vers la page suivante :
Cliquez sur le Journal dans bouton. Vous devriez voir la page de connexion Netbox dans l'écran suivant :
Indiquez votre nom d'utilisateur et votre mot de passe d'administrateur Netbox, puis cliquez sur connexion bouton. Vous devriez voir le tableau de bord par défaut de la Netbox sur la page suivante :
Conclusion
Dans ce guide, vous avez appris à installer Netbox sur Ubuntu 20.04 avec Nginx. Vous pouvez maintenant commencer à documenter votre infrastructure réseau. Pour plus d'informations, consultez la documentation officielle de Netbox. N'hésitez pas à me demander si vous avez des questions.