Configurer NetBox pour ton équipe

Les réglages à faire avant d'ouvrir NetBox aux collègues : fuseau et bandeaux, envoi de mail, groupes et permissions, premiers plugins, et les champs personnalisés dont tes données ont besoin.

intermédiaire~40 min de manipulation
#netbox#permissions#plugins#api

Pas encore validée de bout en bout — sois le premier.Signaler un problème

Brouillon — pas encore exécuté de bout en bout. Cette page est écrite mais son auteur ne l'a pas encore déroulée sur une vraie machine. Des commandes peuvent être fausses : lis avant de lancer, et dis-nous ce qui casse.

En un coup d'œilToi, l'API, et ce que tu actives
Serveur NetBox
HTTPSssh
Toi (admin)curl · token
API RESThttps:///api
configuration.py/netbox/netbox/
Groupes et permissionsnetops · readers
Pluginslocal_requirements.txt
Relais mail:

L'essentiel de cette page passe par l'API REST avec un jeton, pour pouvoir être rejoué sur la prochaine instance. Mail, groupes LDAP et plugins sont des briques optionnelles que tu décides dans la marge.

La page précédente t'a laissé un NetBox qui tourne et un administrateur. Avant que les collègues reçoivent l'URL, une poignée de réglages transforment une installation en ton instance. La plupart vivent dans configuration.py ; le reste passe par l'API REST, pour pouvoir le rejouer sur la prochaine instance.

Avant de commencer

Vérification
$curl -sf -H 'Authorization: Token ' https:///api/status/ | python3 -m json.tool | head -3
Retour attendu
{
"django-version": "5.x",

Réglages de l'instance

Ajoute à la fin de /netbox/netbox/configuration.py :

python
TIME_ZONE = ''
BANNER_TOP = ''
LOGIN_REQUIRED = True
CHANGELOG_RETENTION = 180

Envoi de mail

python
EMAIL = {
'SERVER': '',
'PORT': ,
'USE_TLS': True,
'FROM_EMAIL': '',
'TIMEOUT': 10,
}

Après redémarrage (section suivante), envoie-toi un message de test :

Vérification
$sudo /venv/bin/python /netbox/manage.py sendtestemail toi@example.com
Retour attendu
Test email sent to: toi@example.com

Groupes et permissions

$API=https:///api
$AUTH="Authorization: Token "
$curl -sf -H "$AUTH" -H 'Content-Type: application/json' "$API/users/groups/" -d '{"name": "netops"}'
$curl -sf -H "$AUTH" -H 'Content-Type: application/json' "$API/users/groups/" -d '{"name": "readers"}'

Plugins

$echo netbox-topology-views | sudo tee -a /local_requirements.txt

Active-les dans configuration.py (les noms de modules utilisent des tirets bas) :

python
PLUGINS = ['netbox_topology_views']

Puis installe et migre :

$sudo /upgrade.sh

Champs personnalisés

$curl -sf -H "$AUTH" -H 'Content-Type: application/json' "$API/extras/custom-fields/" -d '{
$ "name": "asset_tag_internal",
$ "label": "Numéro d'\''inventaire interne",
$ "type": "text",
$ "object_types": ["dcim.device"],
$ "required": false,
$ "filter_logic": "exact"
$}'

Redémarrer et vérifier

$sudo systemctl restart netbox netbox-rq
Vérification
$systemctl is-active netbox netbox-rq
Retour attendu
active
active
Vérification
$curl -sf -H 'Authorization: Token ' https:///api/users/groups/ | python3 -c 'import sys,json; print([g["name"] for g in json.load(sys.stdin)["results"]])'
Retour attendu
['netops', 'readers']
Vérification
$curl -sf -H 'Authorization: Token ' https:///api/plugins/ | grep -o '"name": "[^"]*"'
Retour attendu
"name": "Topology views"

Terminé

Ton instance a un nom sur chaque page, envoie des mails, sait qui peut modifier quoi, et porte les premiers champs dont tes données ont besoin. Suite : la garder dans cet état, avec mises à jour, sauvegardes et supervision.

Tout a fonctionné ?

Si tu as suivi cette page jusqu'au bout sur une vraie machine, dis-le. Ta validation est datée et enregistre ta stack : le prochain lecteur sur le même chemin sait que ça marche toujours.

Cette copie est en lecture seule. Pour dire que ça marche, ou que ça ne marche pas, ouvre une issue

Seuls tes choix de stack sont enregistrés, jamais tes valeurs. Le pseudo reste sur ce navigateur.