Files
docker-images/images/netbox/README.md
Damien Arnodo 277761107d
All checks were successful
Build and Push Docker Images / build (push) Successful in 5s
docs(netbox): add branching configuration and version compatibility matrix
2026-01-07 13:43:43 +00:00

132 lines
4.2 KiB
Markdown

# NetBox Docker Image avec Plugins
Image Docker NetBox personnalisée avec plugins pré-installés, construite automatiquement via Gitea Actions.
## Plugins inclus
Par défaut, les plugins suivants sont installés :
| Plugin | Description | Version (pour NetBox 4.4.x) |
|--------|-------------|----------------------------|
| `netbox-branching` | Branching et change management (NetBox Labs) | 0.7.x |
| `netbox-bgp` | Gestion des sessions BGP, peers, communities | 0.17.x |
| `netbox-secrets` | Gestion sécurisée des secrets et mots de passe | latest |
| `netbox-topology-views` | Visualisation de topologie réseau | latest |
## Utilisation
### Pull depuis le registry
```bash
# Dernière version
docker pull gitea.arnodo.fr/damien/netbox:latest
# Version spécifique
docker pull gitea.arnodo.fr/damien/netbox:v4.4
```
### Avec Docker Compose
Créer un `docker-compose.override.yml` pour utiliser l'image personnalisée :
```yaml
services:
netbox:
image: gitea.arnodo.fr/damien/netbox:v4.4
pull_policy: always
netbox-worker:
image: gitea.arnodo.fr/damien/netbox:v4.4
pull_policy: always
netbox-housekeeping:
image: gitea.arnodo.fr/damien/netbox:v4.4
pull_policy: always
```
## ⚠️ Configuration requise pour netbox-branching
Le plugin `netbox-branching` nécessite une configuration spéciale de la base de données. Tu dois modifier ta configuration NetBox pour wrapper `DATABASES` avec `DynamicSchemaDict`.
### Dans ton `configuration.py` ou via variables d'environnement :
```python
from netbox_branching.utilities import DynamicSchemaDict
DATABASES = DynamicSchemaDict({
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'netbox',
'USER': 'netbox',
'PASSWORD': 'password',
'HOST': 'postgres',
'PORT': '',
}
})
DATABASE_ROUTERS = [
'netbox_branching.database.BranchAwareRouter',
]
```
### Permissions PostgreSQL requises
L'utilisateur PostgreSQL doit avoir la permission de créer des schemas :
```sql
GRANT CREATE ON DATABASE netbox TO netbox;
```
Voir la [documentation officielle netbox-branching](https://netboxlabs.com/docs/extensions/branching/) pour plus de détails.
## Gestion des versions
La version de NetBox est définie dans le fichier `NETBOX_VERSION`. Pour changer de version :
1. Modifier le fichier `NETBOX_VERSION` avec la version souhaitée (ex: `v4.4`)
2. **Mettre à jour les versions des plugins** dans `plugin_requirements.txt` si nécessaire
3. Commit et push
4. Le CI va automatiquement :
- Builder l'image avec cette version de NetBox
- Tagger l'image avec `latest` ET avec la version (ex: `v4.4`)
### Compatibilité plugins / NetBox
| NetBox | netbox-branching | netbox-bgp |
|--------|------------------|------------|
| 4.4.x | 0.7.x | 0.17.x |
| 4.5.x | 0.8.x+ | 0.18.x+ |
## Personnalisation des plugins
### Ajouter un plugin
1. Éditer `plugin_requirements.txt` et ajouter le package PyPI
2. Éditer `plugins.py` et ajouter le plugin à la liste `PLUGINS`
3. Configurer le plugin dans `PLUGINS_CONFIG` si nécessaire
4. Commit et push - l'image sera rebuild automatiquement
## Structure des fichiers
```
images/netbox/
├── Dockerfile # Image principale
├── NETBOX_VERSION # Version de NetBox à utiliser
├── plugin_requirements.txt # Liste des plugins PyPI (avec versions)
├── plugins.py # Configuration des plugins
└── README.md # Cette documentation
```
## Plugins - Liens et documentation
- **netbox-branching** : https://github.com/netboxlabs/netbox-branching
- **netbox-bgp** : https://github.com/netbox-community/netbox-bgp
- **netbox-secrets** : https://github.com/Onemind-Services-LLC/netbox-secrets
- **netbox-topology-views** : https://github.com/netbox-community/netbox-topology-views
## Notes
- L'image utilise `uv pip` pour l'installation des plugins (méthode officielle NetBox Docker)
- Les assets statiques sont collectés au premier démarrage (pas au build)
- Compatible avec NetBox >= 4.0 (netbox-branching requiert NetBox 4.1+)
- Le fichier `NETBOX_VERSION` contrôle la version de base et le tag de l'image
- **Les versions des plugins sont fixées** pour garantir la compatibilité