Package: netbox-network-importer
Netbox Network ImporterTool to analyze and synchronize an existing network with a Netbox (SOT).The main use cases for the network importer:Import an existing network into a NetboxCheck the differences between the running network and the NetboxInstallClone repositorygit clone git@gitlab.cesnet.cz:701/done/netbox_network_importer.gitGo into the repositorycd netbox_network_importerCreatevirtualenvpython3 -m venv venvActivate itsource venv/bin/activateInstall the toolpip install .Pre-requisiteTo operate, the Netbox Network Importer is dependent on the following items:Access to Netbox APIAccess to Network Devices via SSHCreated Custom Field on Netbox{"display":"Ignore Importer","content_types":["dcim.interface",],"type":{"value":"boolean","label":"Boolean (true/false)"},"object_type":null,"data_type":"boolean","name":"ignore_importer","label":"Ignore Importer","description":"Will be ignored when processed by Network Importer","required":true,"filter_logic":{"value":"exact","label":"Exact"},"default":false,"weight":100,}InventoryA device inventory must be available in NetBox.To be able to connect to the device the following information needs to be defined :Primary ip addressPlatform (must be a one of the following ['iosxr', 'ios', 'iosxe'])Configuration fileThe information to connect to NetBox must be provided via the configuration file. The configuration file below present standard options that can be provided to control the behavior of the Netbox Network Importer.Netbox Network Importer try to find the configuration file at:/home/<user>/.config/netbox_network_importer/config.yml/etc/netbox_network_importer/config.ymlOr you can set path to configuratin file like:netbox_network_importer --config path_to_dir_with_config/ synchronize---
netbox:
  NETBOX_API_TOKEN: "API_TOKEN"
  NETBOX_INSTANCE_URL: "https://netbox.done-test.cesnet.cz/"
  NETBOX_GRAPHQL_URL: "https://netbox.done-test.cesnet.cz/graphql/"
tacacs:
  TACACS_USERNAME: "username"
  TACACS_PASSWORD: "password"

config:
  LOG_DIR: "path_where_output.log_will_be_stored"
  LOG_LEVEL: "DEBUG"
  OUTPUT_DIR: "output_folder_where_results_will_be_stored"ExecuteThe Netbox Network Importer runs only in apply mode.In check mode, no modification will be made to the SOT, the differences will be printed on the screenIn apply mode, the NETBOX will be updated with:interfacesIPsvlansLAGsApply ModeThe Netbox Network Importer will attempt to create/update or delete all elements in the Netbox that do not match what has been observed in the network.
It will ignore devices or interfaces on certain circumstances:Devicestatusmust beActive, otherwise the device is skippedDeviceprimary_ipmust be properly set, otherwise the device is skippedDeviceplatformmust include one of the following values[ios, iosxr, iosxe], otherwise the device is skippedIf interface has attributeIgnore Importerset toTrue, then the processing on the Interface will be skipped and ignoredExecution:netbox_network_importer synchronize# runs the importernetbox_network_importer synchronize -d Rxx# runs importer on device Rxx from Netboxnetbox_network_importer synchronize -p iosxe# runs importer on all devices with platform iosxenetbox_network_importer synchronize -d Rxx -d Ryy# runs importer on devices Rxx and RyyHelp~/netbox_network_importer$ netbox_network_importer --help
Usage: netbox_network_importer [OPTIONS] COMMAND [ARGS]...

Options:
  -c, --configs PATH  path to folder with configurations
  --help              Show this message and exit.

Commands:
  pyats        Connect to device using pyats and pynetbox and print...
  synchronize  Run set of Nornir task to update data in Netbox from...

~/NETBOX/netbox_network_importer$ netbox_network_importer synchronize --help
Usage: netbox_network_importer synchronize [OPTIONS]

  Run set of Nornir task to update data in Netbox from network devices

  Args:     devices (str): device name filter, can be used multiple times
  platforms (str): platform name filter, can be used multiple times
  no_progress_bar (bool): use to hide progress bar Returns:     dict:
  Dictionary of hosts, it's actions and results

Options:
  -d, --devices TEXT    Run on specificied devices
  -p, --platforms TEXT  Run on specificied platforms
  --no-progress-bar
  --help                Show this message and exit.```
---