Logo

NetBox Datenprovider

Der NetBox Datenprovider verbindet eine NetBox-Instanz direkt mit Matrix42 – einfach, sicher und effizient. Die Erweiterung ermöglicht den automatisierten Import sowie die Synchronisation von IT-Assets wie Computern und Netzwerkgeräten aus NetBox in die Matrix42-Umgebung. Durch gezieltes Rollen-Mapping bleibt die Infrastruktur jederzeit transparent und konsistent im IT-Service-Management abgebildet.

abstract background

Beschreibung

Der NetBox Datenprovider verbindet eine NetBox-Instanz mit Matrix42 – in beide Richtungen:

  • Import (NetBox → Matrix42): Computer und Netzwerkgeräte werden samt Herstellern, Bestandsartikeln und Rollen aus NetBox in Matrix42 importiert und synchronisiert. Über das Rollen-Mapping wird gesteuert, welche NetBox-Rollen als welcher Asset-Typ übernommen werden.
  • Export (Matrix42 → NetBox): Regionen, Sites, Standorte, Bestandsartikel (Gerätetypen) und Assets (Geräte) werden aus Matrix42 in NetBox angelegt und aktualisiert. Welche Objekte und Felder übertragen werden, wird vollständig in Matrix42 konfiguriert.

1 Installation

1.1 Voraussetzungen

Komponente Anforderung
Matrix42 ab Version 26.1.0
Worker On-Premise-Worker (Data Provider Pool) mit Netzwerkzugriff auf NetBox – wird für den Import benötigt
NetBox über HTTP(S) erreichbare NetBox-Instanz mit API-Token; für den Export NetBox 4.x
Export zusätzliche Voraussetzungen siehe 3.2 Voraussetzungen

1.2 Erweiterung installieren

Die Erweiterung NetBox Datenprovider wird über die Extension Gallery installiert (Administration > Extension Gallery).

Mit der Installation stehen unter anderem zur Verfügung:

  • der Datenprovider NetBox (Generischer Konnektor) mit dem Konfigurationsdialog NetBox Configuration,
  • die Workflows für Import und Export,
  • die Modulaktivierungen Netbox - Import und Netbox - Export (gesperrt, ohne Zeitplan),
  • der Webservice für den Export und das NetBox-Skript zum Download.

1.3 Datenprovider konfigurieren

  1. Administration > Integration > Datenprovider öffnen.Datenprovider-Liste
  2. Den NetBox-Datenprovider auswählen (im Beispiel „NetBox DEMO“) und Bearbeiten wählen.Vorschau des Datenproviders
  3. Im Bereich Konfigurationen über + eine neue Konfiguration anlegen oder eine vorhandene Konfiguration per Doppelklick öffnen.Generischer Konnektor mit Konfigurationen
  4. Im Dialog NetBox Configuration im Tab General die Verbindung zu NetBox hinterlegen und mit Speichern & Schließen speichern.Tab General

Der Dialog NetBox Configuration hat vier Tabs:

Tab Inhalt
General Aktivierung der Konfiguration und Verbindung zu NetBox
Import Einstellungen für den Import NetBox → Matrix42, Rollen-Konfiguration (Kapitel 2)
Import History Aufträge, Workflows und Protokolle der Importläufe
Export Einstellungen für den Export Matrix42 → NetBox (Kapitel 3)

Tab General

Feld Beschreibung
Konfiguration Aktivieren Aktiviert die Konfiguration. Ohne diese Aktivierung wird die Konfiguration weder für den Import noch für den Export verwendet.
Netbox Url URL, unter der NetBox erreichbar ist, z. B. https://netbox.example.com.
Token NetBox-API-Token. Es muss ein v1-Token sein. Für den Import sind Leserechte erforderlich. Wird der Export aus Matrix42 gestartet (siehe 3.8.3), muss der Token zusätzlich NetBox-Skripte ausführen dürfen.
Json Dll Path Vollständiger Pfad zur System.Json.dll von Matrix42 auf dem Worker-Server, z. B. C:\Program Files (x86)\Matrix42\Matrix42 Workplace Management\bin\System.Json.dll.

2 Import

Der Import liest Geräte und Geräterollen über die NetBox-REST-API (/api/dcim/devices, /api/dcim/device-roles/) und legt daraus in Matrix42 Computer, Netzwerkgeräte, Hersteller, Bestandsartikel und Rollen an bzw. aktualisiert sie. Er wird vom Generischen Konnektor auf dem gewählten Data Provider Pool ausgeführt.

2.1 Import konfigurieren

Die Import-Einstellungen befinden sich im Tab Import der NetBox Configuration.

Tab Import

Allgemein

Feld Beschreibung
Import aktivieren Aktivierung des Datenimports.
Data Provider Pool Auswahl des On-Premise-Workers mit Zugriff auf NetBox.
Datenprovider Auswahl des NetBox-Datenproviders.
Beschreibung Optionale Beschreibung der Konfiguration.
Letztes Ergebnis, Letzter Lauf Ergebnis und Zeitpunkt des letzten Importlaufs (nur Anzeige).

Importeinstellungen Inventarisierung

Feld Beschreibung
Status der neuen Computer Status für neu importierte Geräte.
Status der gelöschten Computer Status für gelöschte Computer.
Computer hinzufügen Aktivierung zur Erstellung neuer Computer.
Computer aktualisieren Aktivierung zur Aktualisierung bestehender Computer.
Netzwerkgeräte erstellen Aktivierung zur Erstellung neuer Netzwerkgeräte.
Netzwerkgeräte aktualisieren Aktivierung zur Aktualisierung bestehender Netzwerkgeräte.

2.2 Rollen konfigurieren

Im Bereich Rollen konfigurieren wird festgelegt, welche Rollen aus NetBox welchen Asset-Typen in Matrix42 zugeordnet werden. Die Liste zeigt je Rolle Name, Slug und Asset Typ.

Rollen konfigurieren

NetBox-Rollen importieren

Vor der eigentlichen Rollen-Konfiguration ist ein einmaliger Lauf des Datenproviders mit gültiger Grundkonfiguration erforderlich, ohne aktiviertes Rollen-Mapping. Dadurch werden die Rollen aus NetBox in Matrix42 importiert.

NetBox-Rollen zuordnen

Nach erfolgreichem Rollenimport wird den benötigten Rollen im Bereich Rollen konfigurieren der passende Asset Typ zugeordnet. Beim nächsten Lauf des Datenproviders werden alle Geräte importiert, deren NetBox-Rolle ein Asset Typ zugeordnet ist.

2.3 Automatische Ausführung (Modulaktivierung „Netbox - Import“)

Modulaktivierungen der Erweiterung

Die mitgelieferte Modulaktivierung ist wie folgt vorkonfiguriert:

Tab Vorkonfiguration
Allgemein Name Netbox - Import, Gesamte Aktivierung abschalten ist gesetzt
Aktivierte Dienste Dienst Generic Connector, Parameter für Engine Aktivierung: Konnektoren: NetBox
Zeitpläne kein Zeitplan

Einrichtung:

  1. Administration > Dienste & Prozesse > Alle Modulaktivierungen anzeigen öffnen, Netbox - Import auswählen und Bearbeiten wählen.
  2. Tab Aktivierte Dienste: Den Dienst Generic Connector öffnen und prüfen, dass unter Konnektoren der verwendete NetBox-Datenprovider eingetragen ist. Wird ein anderer Datenprovider als „NetBox“ verwendet, diesen hier auswählen.
  3. Tab Zeitpläne: Über + einen Zeitplan anlegen (Name, Starte von, Laufzeit, Zeitzone, Frequenz, Wiederholung, Ende) und mit Beenden übernehmen.
  4. Tab Allgemein: Gesamte Aktivierung abschalten entfernen.
  5. Mit Speichern & Schließen speichern.

2.4 Attribut-Mapping

Die folgenden Tabellen zeigen, welche NetBox-Attribute in welche Matrix42-Felder importiert werden. Mit (matching) gekennzeichnete Felder dienen zur Wiedererkennung bestehender Objekte.

Computer (Asset-Gruppe 1)

API-Aufruf: GET https://{NetBoxUrl}/api/dcim/devices

NetBox Quellspalte Ziel in Matrix42
Konstante / im Import gesetzt ManagementTypeNetbox SPSAssetClassBase.ManagementType
SKUManufacturer + SKUModel [Transform] SPSAssetClassBase.SKU
primary_ip.address ip SPSComputerClassBase.IPAddress
site.name location SPSCommonClassBase.Location
device_type.manufacturer.name manufacturer [Source] SKUManufacturer
device_type.model model [Source] SKUModel
name name SPSComputerClassBase.Name
in der Erweiterung konfiguriert ($NewDeviceState) newDeviceState SPSCommonClassBase.State
serial serial SPSAssetClassBase.SerialNumber (matching)

Netzwerkgeräte (Asset-Gruppe 8)

API-Aufruf: GET https://{NetBoxUrl}/api/dcim/devices

NetBox Quellspalte Ziel in Matrix42
Konstante / im Import gesetzt ManagementTypeNetbox SPSAssetClassBase.ManagementType
SKUManufacturer + SKUModel [Transform] SPSAssetClassBase.SKU
primary_ip.address ip SPSPeripheralClassBase.IPAddress
site.name location SPSCommonClassBase.Location
device_type.manufacturer.name manufacturer [Source] SKUManufacturer
device_type.model model [Source] SKUModel
name name SPSAssetClassBase.Name
in der Erweiterung konfiguriert ($NewDeviceState) newDeviceState SPSCommonClassBase.State
serial serial SPSAssetClassBase.SerialNumber (matching)

Hersteller

Die Hersteller ergeben sich aus den eindeutigen Werten von device_type.manufacturer.name.

NetBox Quellspalte Ziel in Matrix42
Konstante / im Import gesetzt IsManufacturer SPSSupplierClassBase.IsManufacturer
device_type.manufacturer.name manufacturer SPSSupplierClassBase.Name (matching)
device_type.manufacturer.name manufacturer SPSSupplierClassBase.ShortName

Rollen

API-Aufruf: GET https://{NetBoxUrl}/api/dcim/device-roles/

NetBox Quellspalte Ziel in Matrix42
name name MTX_NetboxDeviceRolesClassBase.MTX_Name
slug slug MTX_NetboxDeviceRolesClassBase.MTX_Slug (matching)

Bestandsartikel (Device Types)

Die Bestandsartikel ergeben sich aus den eindeutigen Kombinationen von device_type.model und device_type.manufacturer.name.

NetBox Quellspalte Ziel in Matrix42
Konstante / im Import gesetzt StateActive SPSCommonClassBase.State
je Rolle in der Erweiterung konfiguriert (Asset Typ) assetType SPSStockKeepingUnitClassBase.Type
device_type.manufacturer.name manufacturer SPSStockKeepingUnitClassBase.Manufacturer (matching)
device_type.model model SPSStockKeepingUnitClassBase.Model (matching)

3 Export

3.1 Überblick

Beim Export werden Regionen, Sites, Standorte, Bestandsartikel und Assets aus Matrix42 in NetBox angelegt und aktualisiert. Im Tab Export der NetBox Configuration wird festgelegt, welche Objekte mit welchen Feldern übertragen werden. Die Übernahme in NetBox führt das NetBox-Skript Matrix42 Sync aus, das Konfiguration und Daten beim Webservice der Erweiterung abruft.

Komponente Ort Aufgabe
Tab Export der NetBox Configuration Matrix42 Auswahl der Entitäten, Filter, Status- und Feld-Mappings
Webservice MountX.NetBoxDataProvider Matrix42, /m42Services/api/mountx/netbox Liefert Konfiguration und Daten je Entität und stellt das Sync-Skript zum Download bereit
Skriptmodul netbox_sync.py NetBox (Custom Scripts) Enthält die Skripte Matrix42 Sync und Matrix42 Link Existing Objects
Workflow Netbox - Trigger Export und Modulaktivierung Netbox - Export Matrix42 Starten den Sync zeitgesteuert aus Matrix42 und speichern das Ergebnis im Tab Export

Ablauf eines aus Matrix42 gestarteten Exports:

Ablauf des Exports

3.2 Voraussetzungen

  • NetBox 4.x mit aktivierten Custom Scripts. Das Python-Paket requests muss in NetBox verfügbar sein (im offiziellen NetBox-Docker-Image enthalten).
  • Netzwerk: NetBox muss Matrix42 per HTTPS erreichen. Für den Start aus Matrix42 muss umgekehrt Matrix42 NetBox unter der Netbox Url erreichen.
  • Matrix42-API-Token (Administration > Integration > Web Services Tokens) eines Benutzers, der die exportierten Daten lesen darf.
  • Umgebungsvariablen M42_BASE_URL und M42_API_TOKEN in NetBox (siehe 3.3).
  • Geräterollen: Die im Field Mapping für role gelieferten Slugs müssen in NetBox als Geräterollen existieren.
  • Custom Fields: Werden über cf_<name> weitere Custom Fields befüllt, müssen diese in NetBox angelegt und dem jeweiligen Objekttyp zugewiesen sein. Das Custom Field matrix42_eoid legt das Skript selbst an.
  • NetBox-API-Token (v1) im Tab General mit der Berechtigung, Skripte auszuführen (nur für den Start aus Matrix42).

3.3 Einrichtung

  1. Matrix42-API-Token erstellen unter Administration > Integration > Web Services Tokens.
  2. Export aktivieren: Im Tab Export der NetBox Configuration Export aktivieren setzen und speichern. Die Configuration ID wird später in NetBox benötigt.
  3. Sync-Skript herunterladen: Im Tab Export DOWNLOAD SCRIPT wählen. Die heruntergeladene Datei netbox_sync.py passt immer zur installierten Version des Webservice.
  4. Umgebungsvariablen in NetBox setzen und NetBox neu starten. Bei Docker-Installationen müssen die Variablen sowohl im NetBox-Container als auch im Worker-Container gesetzt sein, da Skripte als Hintergrundjob laufen:
    environment:
      M42_BASE_URL: 'https://matrix42.example.com'   # Basis-URL ohne /m42Services
      M42_API_TOKEN: '<Matrix42-API-Token>'
  5. Skript in NetBox hochladen: In NetBox unter Customization > Scripts über Add die Datei netbox_sync.py hochladen. Danach erscheinen die Skripte Matrix42 Sync und Matrix42 Link Existing Objects.
  6. Script-ID eintragen: Die numerische ID des Skripts Matrix42 Sync ermitteln (sichtbar in der URL /extras/scripts/<ID>/ oder über GET /api/extras/scripts/) und im Tab Export unter Netbox Script Id eintragen.
  7. Geräterollen in NetBox anlegen, die im Field Mapping der Assets verwendet werden.
  8. Entitäten konfigurieren: Im Tab Export je Entität Export-Haken, Filter, Status Mapping und Field Mapping festlegen (siehe 3.5 bis 3.7).
  9. Bestehende NetBox-Daten verknüpfen: Enthält NetBox bereits Objekte, die aus Matrix42 kommen sollen, diese einmalig mit Matrix42 Link Existing Objects verknüpfen (siehe 3.8.1).
  10. Testlauf: Matrix42 Sync in NetBox ohne Commit ausführen, das Protokoll prüfen und danach mit Commit ausführen (siehe 3.8.2).
  11. Automatisieren über die Modulaktivierung Netbox - Export (siehe 3.8.3).

3.4 Tab Export – Einstellungen

Tab Export

Feld Beschreibung
Export aktivieren Gibt den Export für diese Konfiguration frei. Ist der Export nicht freigegeben oder die Konfiguration im Tab General deaktiviert, lehnt der Webservice alle Abfragen ab.
Configuration ID Eindeutige ID (GUID) dieser Konfiguration (nur Anzeige). Sie wird beim Start der NetBox-Skripte als Configuration ID angegeben.
Netbox Script Id Numerische ID des Skripts Matrix42 Sync in NetBox. Wird für den Start aus Matrix42 benötigt.
DOWNLOAD SCRIPT Lädt das Skriptmodul netbox_sync.py herunter.
Last Export Status Status des letzten aus Matrix42 gestarteten NetBox-Jobs, z. B. completed.
Last Export Date Zeitpunkt des letzten aus Matrix42 gestarteten Exports.
Last Export Result Zusammenfassung des Laufs je Entität (created, updated, unchanged, failed, disappeared).
Last Export Log Protokoll des NetBox-Jobs.

3.5 Entitäten

Der Tab Export enthält je Entität einen eigenen Bereich. Die Entitäten werden in der folgenden Reihenfolge verarbeitet, damit Verweise auf bereits übertragene Objekte aufgelöst werden können:

Reihenfolge Bereich im Tab Export NetBox-Objekt Data Definition Status Mapping
1 Region Region wählbar: SPSOrgUnitClassBase, SPSLocationClassBase, SPSCostCenterClassBase
2 Site Site wählbar: SPSOrgUnitClassBase, SPSLocationClassBase, SPSCostCenterClassBase ja
3 Standort Location wählbar: SPSOrgUnitClassBase, SPSLocationClassBase, SPSCostCenterClassBase ja
4 Bestandsartikel Device Type SPSStockKeepingUnitClassBase
5 Assets Device SPSAssetClassBase ja

Jeder Bereich enthält folgende Felder:

Feld Beschreibung
Export Regions / Sites / Locations / Skus / Assets Entität exportieren. Ist der Haken nicht gesetzt, liefert der Webservice keine Daten und das Skript überspringt die Entität.
… Data Definition Matrix42-Datendefinition, aus der die Objekte gelesen werden.
… Filter Optionale ASQL-Bedingung, die die exportierten Objekte einschränkt, z. B. SerialNumber IS NOT NULL. Ohne Filter werden alle Objekte der Datendefinition exportiert.
Status Mapping Zuordnung der Matrix42-Status zu NetBox-Status (nur Site, Standort und Assets), siehe 3.7.
Field Mapping Zuordnung von Matrix42-Werten zu NetBox-Feldern, siehe 3.6.

3.6 Field Mapping

Jede Zeile im Field Mapping ordnet einem NetBox-Feld einen Wert aus Matrix42 zu.

Spalte Beschreibung
Columns Expression ASQL-Ausdruck, der auf der Data Definition ausgewertet wird: ein Attribut (Name), ein Pfad über Beziehungen (Manufacturer.Name), eine Funktion (ISNULL(…)) oder eine Konstante ('default-role', 1).
Netbox Target Name des NetBox-Felds, z. B. name, serial oder cf_<name> für Custom Fields.
Field Policy Legt fest, wann der Wert in NetBox geschrieben wird (siehe unten).

Zeilen ohne Columns Expression oder Netbox Target werden ignoriert. Für jede exportierte Entität muss mindestens eine vollständige Zeile vorhanden sein.

Pflichtzeile: Jede Entität benötigt die Zeile [Expression-ObjectID]cf_matrix42_eoid. Darüber wird das Matrix42-Objekt dem NetBox-Objekt zugeordnet. Datensätze ohne diesen Wert werden nicht übertragen.

Field Policy

Field Policy Der Wert wird geschrieben …
Always bei jedem Lauf, sobald er vom Wert in NetBox abweicht
On Create nur beim Anlegen des Objekts in NetBox
If Empty nur, wenn das Feld in NetBox leer ist
Never nie (der Wert wird nur geliefert, z. B. als Match field für die Verknüpfung)

Ist keine Field Policy angegeben, gilt Always.

NetBox-Felder mit besonderer Behandlung

Netbox Target Entitäten Erwarteter Wert Verhalten
cf_matrix42_eoid alle [Expression-ObjectID] Verknüpfung zwischen Matrix42 und NetBox (Pflicht)
status Site, Standort, Assets Matrix42-Status, z. B. State.Value Wird über das Status Mapping übersetzt
region Site ID ([Expression-ObjectID]) einer exportierten Region Verweis auf die in NetBox übertragene Region
site Standort, Assets ID einer exportierten Site Verweis auf die in NetBox übertragene Site
device_type Assets ID eines exportierten Bestandsartikels Verweis auf den in NetBox übertragenen Device Type
manufacturer Bestandsartikel Herstellername Hersteller wird in NetBox angelegt, falls er fehlt
role Assets Slug einer NetBox-Geräterolle Die Rolle muss in NetBox existieren
tenant Site, Standort, Assets Name des Mandanten Mandant wird in NetBox angelegt, falls er fehlt
tags alle kommagetrennte Tag-Namen Fehlende Tags werden angelegt und ergänzt; vorhandene Tags bleiben erhalten
cf_<name> alle beliebig Wird in das Custom Field <name> geschrieben

Alle anderen Netbox Targets werden direkt in das gleichnamige NetBox-Feld geschrieben (z. B. name, serial, asset_tag, description, comments, model, u_height, part_number, facility). Weitere Verweisfelder wie location, parent oder platform werden nicht unterstützt.

Welche Felder NetBox beim Anlegen verlangt, hängt vom Objekt ab. Der Slug wird bei Regionen, Sites, Standorten und Device Types automatisch als m42-<ID> gesetzt.

NetBox-Objekt Mindestens zu mappen (neben cf_matrix42_eoid)
Region name
Site name
Location name, site
Device Type manufacturer, model
Device device_type, role, site

Beispiel: Field Mapping der Assets

Columns Expression Netbox Target Field Policy
ISNULL(T(SPSComputerClassBase).Name, Name) name Always
SerialNumber serial Always
[Expression-ObjectID] cf_matrix42_eoid On Create
SKU.[Expression-ObjectID] device_type Always
'default-role' role On Create
T(SPSCommonClassBase).Location.[Expression-ObjectID] site Always
T(SPSCommonClassBase).State.Value status Always

Beispiel: Field Mapping der Bestandsartikel

Columns Expression Netbox Target Field Policy
Model model Always
Manufacturer.Name manufacturer Always
[Expression-ObjectID] cf_matrix42_eoid On Create
1 u_height On Create

3.7 Status Mapping

Das Status Mapping ordnet jedem Matrix42-Status einen NetBox-Status zu. Es ist für Site, Standort und Assets vorhanden und wird verwendet, wenn das Field Mapping das Feld status liefert.

  • Status ohne zugeordneten NetBox-Status werden ignoriert. Objekte mit einem solchen Status werden nicht übertragen und im Protokoll als Fehler gemeldet.
  • Der NetBox-Status muss für das jeweilige Objekt gültig sein:
NetBox-Objekt Gültige Status
Device Offline, Active, Planned, Staged, Failed, Inventory, Decommissioning
Site, Location Planned, Staging, Active, Decommissioning, Retired

3.8 Export ausführen

3.8.1 Einmalig: bestehende NetBox-Objekte verknüpfen

Enthält NetBox bereits Regionen, Sites, Standorte, Device Types oder Geräte, die künftig aus Matrix42 gepflegt werden sollen, müssen diese vor dem ersten Sync verknüpft werden. Andernfalls legt der Sync Duplikate an oder scheitert an bereits vergebenen Namen.

Das Skript Matrix42 Link Existing Objects ordnet die aus Matrix42 gelieferten Datensätze noch nicht verknüpften NetBox-Objekten zu. Dazu vergleicht es je Entität ein wählbares Feld und schreibt bei Übereinstimmung das Custom Field matrix42_eoid sowie das Tag m42-managed. Es legt keine Objekte an und ändert keine anderen Felder.

Bereich Feld Standard Beschreibung
Matrix42 connection Configuration ID Configuration ID aus dem Tab Export
Matrix42 connection Verify TLS aktiv TLS-Zertifikat von Matrix42 prüfen. Nur für Testsysteme mit selbstsignierten Zertifikaten deaktivieren.
Regions, Sites, Locations, Device types, Devices Enabled aktiv Entität in diesem Lauf verknüpfen
Regions, Sites, Locations, Device types, Devices Match field name, name, name, model, serial NetBox-Feld, über das verglichen wird, z. B. serial, asset_tag, name oder cf_<Custom Field>
Commit inaktiv Ohne Commit werden alle Änderungen am Ende zurückgenommen (Simulation).

Regeln:

  • Verglichen wird ohne Beachtung von Groß-/Kleinschreibung und führenden oder abschließenden Leerzeichen.
  • Das Match field muss im Field Mapping der Entität als Netbox Target geliefert werden. Soll der Wert beim Sync nicht geschrieben werden, die Field Policy Never verwenden.
  • Kommt ein Wert bei mehreren unverknüpften NetBox-Objekten vor, wird keines davon verknüpft.
  • Bereits verknüpfte Objekte bleiben unverändert. Abweichungen im Match field werden als Warnung gemeldet.

Empfohlener Ablauf:

  1. Skript ohne Commit ausführen.
  2. Gemeldete Abweichungen in Matrix42 oder NetBox bereinigen und Schritt 1 wiederholen, bis das Protokoll sauber ist.
  3. Skript mit Commit ausführen.
  4. Anschließend Matrix42 Sync ausführen.

3.8.2 Manuell in NetBox

In NetBox unter Customization > Scripts das Skript Matrix42 Sync öffnen, die Parameter angeben und ausführen:

Feld Standard Beschreibung
Configuration ID Configuration ID aus dem Tab Export
Verify TLS aktiv TLS-Zertifikat von Matrix42 prüfen. Nur für Testsysteme mit selbstsignierten Zertifikaten deaktivieren.
Commit inaktiv Ohne Commit werden alle Änderungen am Ende zurückgenommen (Simulation).

Das Ergebnis enthält je Entität die Anzahl der angelegten (created), aktualisierten (updated), unveränderten (unchanged), fehlgeschlagenen (failed) und nicht mehr gelieferten (disappeared) Objekte, z. B.:

regions: 0 created, 0 updated, 1 unchanged, 0 failed, 0 disappeared | sites: … | assets: 0 created, 0 updated, 1 unchanged, 0 failed, 0 disappeared

Alternativ kann Matrix42 Sync in NetBox direkt zeitgesteuert ausgeführt werden (Optionen Schedule at und Recurs every beim Ausführen).

3.8.3 Automatisch aus Matrix42 (Modulaktivierung „Netbox - Export“)

Die Erweiterung liefert die Modulaktivierung Netbox - Export mit. Sie startet den Workflow Netbox - Trigger Export. Dieser startet in NetBox das unter Netbox Script Id hinterlegte Skript für diese Konfiguration, wartet auf das Ende des NetBox-Jobs und speichert Status, Zeitpunkt, Ergebnis und Protokoll in den Feldern Last Export … im Tab Export.

Tab Vorkonfiguration
Allgemein Name Netbox - Export, Gesamte Aktivierung abschalten ist gesetzt
Aktivierte Dienste Dienst Start Workflow, Parameter für Engine Aktivierung: Workflow-ID: Netbox - Trigger Export
Zeitpläne kein Zeitplan

Die Einrichtung erfolgt wie beim Import (siehe 2.3): Zeitplan im Tab Zeitpläne anlegen, im Tab Allgemein Gesamte Aktivierung abschalten entfernen und speichern.

Voraussetzungen für den Start aus Matrix42:

  • Netbox Url und Token (v1) im Tab General sind gesetzt; der Token darf Skripte ausführen.
  • Netbox Script Id im Tab Export enthält die ID des Skripts Matrix42 Sync.
  • Export aktivieren ist gesetzt.

3.9 Verhalten beim Abgleich

  • Verknüpfung: Matrix42-Objekte und NetBox-Objekte werden ausschließlich über das Custom Field matrix42_eoid (Label „Matrix42 EOID“) zugeordnet. Das Skript legt das Custom Field beim ersten Lauf an und weist es Region, Site, Location, Device Type und Device zu.
  • Kennzeichnung: Alle vom Sync angelegten oder geänderten Objekte erhalten das Tag m42-managed. Auch automatisch angelegte Hersteller, Mandanten und Tags werden damit gekennzeichnet.
  • Neue Objekte: Objekte ohne passendes matrix42_eoid werden neu angelegt. Regionen, Sites, Standorte und Device Types erhalten den Slug m42-<ID>.
  • Unveränderte Objekte werden nicht gespeichert und erzeugen keinen Changelog-Eintrag.
  • Nicht mehr gelieferte Objekte (z. B. durch einen geänderten Filter oder gelöschte Objekte in Matrix42) werden nur im Protokoll gemeldet. Sie werden in NetBox weder geändert noch gelöscht.
  • Fehler: Verbindungs-, HTTP- oder Formatfehler beim Abruf brechen den gesamten Lauf ab, damit nie mit unvollständigen Daten abgeglichen wird. Fehler bei einzelnen Datensätzen werden protokolliert; die übrigen Datensätze werden weiter verarbeitet.
  • Simulation: Ohne Commit werden alle Änderungen am Ende zurückgenommen. Das Ergebnis endet dann mit SIMULATION - nothing was saved.

3.10 Webservice-Referenz

Basis-URL: https://<Matrix42-Server>/m42Services/api/mountx/netbox

Authentifizierung

  1. POST /m42Services/api/ApiToken/GenerateAccessTokenFromApiToken mit dem Header Authorization: Bearer <Matrix42-API-Token>. Die Antwort enthält im Feld RawToken ein Access-Token.
  2. Alle weiteren Aufrufe mit dem Header Authorization: Bearer <RawToken>.

Endpunkte

Methode Pfad Parameter Antwort
GET /config configurationId Export-Konfiguration: Export-Haken, Data Definitions, Filter, Field Mappings und Status Mappings
GET /regions configurationId { "Regions": [ … ] }
GET /sites configurationId { "Sites": [ … ] }
GET /locations configurationId { "Locations": [ … ] }
GET /skus configurationId { "Skus": [ … ] }
GET /assets configurationId { "Assets": [ … ] }
GET /script Download des Skriptmoduls netbox_sync.py

Jeder Datensatz enthält die im Field Mapping definierten Netbox Targets als Schlüssel. Ist eine Entität nicht zum Export freigegeben, ist die Liste leer.

Beispiel:

GET https://matrix42.example.com/m42Services/api/mountx/netbox/skus?configurationId=<Configuration ID>
Authorization: Bearer <RawToken>
Accept: application/json
{
  "Skus": [
    {
      "model": "Catalyst 9300",
      "manufacturer": "Cisco",
      "cf_matrix42_eoid": "<ID des Bestandsartikels>",
      "u_height": 1
    }
  ]
}

Fehlermeldungen des Webservice

Meldung Ursache
NetBox sync configuration '<ID>' not found Die Configuration ID existiert nicht.
NetBox sync configuration '<ID>' is disabled Konfiguration Aktivieren im Tab General ist nicht gesetzt.
NetBox sync configuration '<ID>': export is not enabled Export aktivieren im Tab Export ist nicht gesetzt.
NetBox sync configuration '<ID>': no <entity> field mappings configured Für eine exportierte Entität fehlt ein vollständiges Field Mapping.
… MTX_StatusMapping is not valid JSON / … MTX_FieldMappingPolicy is not valid JSON Die gespeicherten Mappings sind beschädigt; Mappings im Dialog prüfen und erneut speichern.

3.11 Fehlerbehebung

Die folgenden Meldungen erscheinen im Protokoll des NetBox-Jobs bzw. im Feld Last Export Log.

Meldung Ursache Lösung
environment variable M42_API_TOKEN is not set on the NetBox container (analog M42_BASE_URL) Umgebungsvariable fehlt Variable setzen und NetBox inklusive Worker neu starten
configuration ID is not a valid GUID Configuration ID fehlt oder ist falsch Configuration ID aus dem Tab Export übernehmen
…/GenerateAccessTokenFromApiToken: 401 … oder response contains no RawToken Matrix42-API-Token ungültig oder abgelaufen Neuen API-Token erstellen und M42_API_TOKEN aktualisieren
… CERTIFICATE_VERIFY_FAILED … Zertifikat von Matrix42 wird nicht vertraut Zertifikatskette in NetBox hinterlegen; nur in Testumgebungen Verify TLS deaktivieren
<entity>: export disabled in configuration, skipped Entität nicht zum Export freigegeben Hinweis; bei Bedarf Export … im Tab Export setzen
record has no cf_matrix42_eoid Pflichtzeile fehlt Zeile [Expression-ObjectID]cf_matrix42_eoid anlegen
duplicate EOID in payload Objekt wird mehrfach geliefert Columns Expressions und Filter prüfen
status: no mapping for Matrix42 status <Wert> Status nicht zugeordnet Status Mapping ergänzen
role: no device role with slug '<slug>' in NetBox - create it first Geräterolle fehlt in NetBox Geräterolle in NetBox anlegen
<feld>: no synced <entity> entry for EOID '<ID>' Referenziertes Objekt wurde nicht nach NetBox übertragen Übergeordnete Entität zum Export freigeben, Filter und deren Fehler prüfen
<feld>: cannot be applied to <Objekt> Netbox Target existiert nicht Feldnamen im Field Mapping korrigieren
unknown field policy '<policy>' Ungültige Field Policy Field Policy korrigieren
validation failed: … NetBox-Validierung, z. B. Pflichtfeld fehlt oder Name bereits vergeben Field Mapping ergänzen; bestehende Objekte zuerst verknüpfen (siehe 3.8.1)
… no longer delivered by Matrix42 (left untouched) Objekt wird nicht mehr geliefert Hinweis; das Objekt wird in NetBox nicht verändert
the field mappings deliver no '<feld>' column, add a mapping row for it first Match field fehlt im Field Mapping (Link Existing Objects) Mapping-Zeile für das Match field ergänzen
Logo

Starte deine Prozessverbesserung

Kontaktiere uns und erfahre mehr.

Get started