94 lines
3.0 KiB
Markdown
94 lines
3.0 KiB
Markdown
# NetBox-Export
|
|
|
|
NetBox-Export ist ein Plugin für NetBox 4.6.x. Es exportiert einen abgegrenzten
|
|
Mandanten- oder Standortbereich als portables ZIP-Archiv und importiert ihn in
|
|
eine zweite NetBox-Instanz.
|
|
|
|
Unterstützte Startpunkte:
|
|
|
|
- Mandantengruppe einschließlich Untergruppen und Mandanten
|
|
- einzelner Mandant
|
|
- Region einschließlich Unterregionen und Standorten
|
|
- einzelner Standort
|
|
- Lokation einschließlich Unterlokationen
|
|
|
|
Der Export folgt den Besitzbeziehungen zu DCIM-, IPAM-, Circuit-,
|
|
Virtualisierungs-, VPN-, Wireless-, Kontakt-, Tag- und Bilddaten. Benötigte
|
|
Stammdaten werden als Abhängigkeiten mitgenommen. Primärschlüssel der
|
|
Quellinstanz werden nie direkt als Zielschlüssel verwendet.
|
|
|
|
## Installation
|
|
|
|
Das Plugin muss auf beiden NetBox-Instanzen installiert sein.
|
|
|
|
```bash
|
|
cd /opt/netbox
|
|
source venv/bin/activate
|
|
pip install --upgrade --force-reinstall \
|
|
"git+https://git.mrblake.cc/MrBlake/Netbox-Utilities.git@main"
|
|
```
|
|
|
|
In `configuration.py` ergänzen:
|
|
|
|
```python
|
|
PLUGINS = [
|
|
"netbox_export",
|
|
]
|
|
|
|
PLUGINS_CONFIG = {
|
|
"netbox_export": {
|
|
"max_objects": 50000,
|
|
"max_archive_size_mb": 250,
|
|
# Auf beiden Instanzen identisch setzen, um Archive zu signieren.
|
|
"archive_signing_key": "eine-lange-zufaellige-geheime-zeichenfolge",
|
|
},
|
|
}
|
|
```
|
|
|
|
Anschließend:
|
|
|
|
```bash
|
|
cd /opt/netbox/netbox
|
|
python manage.py migrate netbox_export
|
|
python manage.py collectstatic --no-input
|
|
sudo systemctl restart netbox netbox-rq
|
|
```
|
|
|
|
Bei einer Docker-Installation wird das Paket in das eigene NetBox-Image
|
|
aufgenommen; danach wird der Container mit dem aktivierten Plugin neu gebaut und
|
|
die Migration ausgeführt.
|
|
|
|
## Verwendung
|
|
|
|
Die Oberfläche liegt unter **Plugins > NetBox-Export > Export / Import** und ist
|
|
aus Sicherheitsgründen nur für Superuser sichtbar.
|
|
|
|
1. Auf Instanz A den Typ und das konkrete Objekt wählen und das ZIP exportieren.
|
|
2. Auf Instanz B das ZIP zunächst mit **Nur prüfen** verarbeiten.
|
|
3. Nach erfolgreichem Prüflauf **Nur prüfen** deaktivieren, den schreibenden
|
|
Import bestätigen und das Archiv erneut hochladen.
|
|
|
|
Der Import läuft atomar. Bei einem Fehler werden alle Datenbankänderungen
|
|
zurückgerollt. Die Konfliktstrategie **Aktualisieren** nutzt zuerst die dauerhaft
|
|
gespeicherte Zuordnung aus Quellinstanz, Modell und Quell-ID; bei einem ersten
|
|
Import werden vorhandene Objekte über ihre eindeutigen Fachschlüssel erkannt.
|
|
|
|
## Verhalten und Grenzen
|
|
|
|
- Quelle und Ziel müssen NetBox 4.6.x und dieselben Plugins/Modelle verwenden.
|
|
- Benutzerkonten und Berechtigungen werden nicht exportiert. Referenzen auf
|
|
Benutzer oder Gruppen müssen auf dem Ziel bereits eindeutig vorhanden sein.
|
|
- Der Import erstellt und aktualisiert Objekte. Zielobjekte, die im Archiv nicht
|
|
vorkommen, werden bewusst nicht gelöscht.
|
|
- Fehlende Bilddateien werden im Archiv vermerkt, können aber nicht rekonstruiert
|
|
werden.
|
|
- Große Exporte werden synchron verarbeitet. `max_objects` begrenzt Laufzeit und
|
|
Speicherverbrauch.
|
|
|
|
## Tests
|
|
|
|
```bash
|
|
python -m pytest
|
|
```
|
|
|