# Buildsheet autogenerated by ravenadm tool -- Do not edit. NAMEBASE= python-netbox-agent VERSION= 0.7.1 KEYWORDS= python VARIANTS= v11 v12 SDESC[v11]= NetBox agent for server (3.11) SDESC[v12]= NetBox agent for server (3.12) HOMEPAGE= https://github.com/solvik/netbox_agent CONTACT= Python_Automaton[python@ironwolf.systems] DOWNLOAD_GROUPS= main SITES[main]= PYPI/n/netbox-agent DISTFILE[1]= netbox_agent-0.7.1.tar.gz:main DF_INDEX= 1 SPKGS[v11]= single SPKGS[v12]= single OPTIONS_AVAILABLE= PY311 PY312 OPTIONS_STANDARD= none VOPTS[v11]= PY311=ON PY312=OFF VOPTS[v12]= PY311=OFF PY312=ON DISTNAME= netbox_agent-0.7.1 GENERATED= yes [PY311].BUILDRUN_DEPENDS_ON= python-pynetbox:single:v11 python-netaddr:single:v11 python-netifaces:single:v11 python-PyYAML:single:v11 python-jsonargparse:single:v11 python-python-slugify:single:v11 python-packaging:single:v11 python-distro:single:v11 [PY311].USES_ON= python:v11,sutools [PY312].BUILDRUN_DEPENDS_ON= python-pynetbox:single:v12 python-netaddr:single:v12 python-netifaces:single:v12 python-PyYAML:single:v12 python-jsonargparse:single:v12 python-python-slugify:single:v12 python-packaging:single:v12 python-distro:single:v12 [PY312].USES_ON= python:v12,sutools [FILE:3044:descriptions/desc.single] # Netbox agent [Build Status] This project aims to create hardware automatically into [Netbox] based on standard tools (dmidecode, lldpd, parsing /sys/, etc). The goal is to generate an existing infrastructure on Netbox and have the ability to update it regularly by executing the agent. # Features * Create virtual machines, servers, chassis and blade through standard tools (`dmidecode`) * Create physical, bonding and vlan network interfaces with IPs (IPv4 & IPv6) * Create IPMI interface if found * Create or get existing VLAN and associate it to interfaces * Generic ability to guess datacenters and rack location through drivers (`cmd` and `file` and custom ones) * Update existing `Device` and `Interface` * Handle blade moving (new slot, new chassis) * Handle blade GPU expansions * Automatic cabling (server's interface to switch's interface) using lldp * Local inventory using `Inventory Item` for CPU, GPU, RAM, RAID cards, physical disks (behind raid cards) * PSUs creation and power consumption reporting (based on vendor's tools) # Requirements - Netbox >= 2.6 - Python >= 3.4 - [pynetbox] - [python3-netaddr] - [python3-netifaces] - [jsonargparse] - ethtool - dmidecode - ipmitool - lldpd - lshw ## Inventory requirement - hpassacli - storcli - omreport # Installation ``` # pip3 install netbox-agent ``` # Usage The agent can be run from a shell and get its configuration from either the configuration file or environment variables. Configuration values are overridden based on the following precedence: command line arguments (might include config file) > environment variables > default config file > defaults. ``` # netbox_agent -c /etc/netbox_agent.yaml --register INFO:root:Creating chassis blade (serial: QTFCQ574502EF) INFO:root:Creating blade (serial: QTFCQ574502D2) myserver on chassis QTFCQ574502EF INFO:root:Setting device (QTFCQ574502D2) new slot on Slot 9 (Chassis QTFCQ574502EF).. INFO:root:Interface a8:1e:84:f2:9e:6a not found, creating.. INFO:root:Creating NIC enp1s0f1 (a8:1e:84:f2:9e:6a) on myserver INFO:root:Interface 02:42:7a:89:cf:a4 not found, creating.. INFO:root:Creating NIC br-07ea1e4a2f0e (02:42:7a:89:cf:a4) on myserver INFO:root:Create new IP 172.19.0.1/16 on br-07ea1e4a2f0e INFO:root:Interface a8:1e:84:f2:9e:69 not found, creating.. INFO:root:Creating NIC enp1s0f0 (a8:1e:84:f2:9e:69) on myserver INFO:root:Create new IP 42.42.42.42/24 on enp1s0f0 INFO:root:Create new IP fe80::aa1e:84ff:fef2:9e69/64 on enp1s0f0 INFO:root:Interface a8:1e:84:cd:9d:d6 not found, creating.. INFO:root:Creating NIC IPMI (a8:1e:84:cd:9d:d6) on myserver INFO:root:Create new IP 10.191.122.10/24 on IPMI ``` If you need, you can update only specific informations like: * Network * Inventory * Location * PSUs ``` # ip a add 42.42.42.43/24 dev enp1s0f1 # netbox_agent -c /etc/netbox_agent.yaml --update-network INFO:root:Create new IP 42.42.42.43/24 on enp1s0f1 # netbox_agent --update-inventory INFO:root:Creating Disk Samsung SSD 850 S2RBNX0K101698D ``` # Configuration ``` # Netbox configuration [FILE:104:distinfo] 1ca117bea69d6635e826789cf0aa6b7b6883515b9aaef1f0a7ac8c730d539dbc 45388 netbox_agent-0.7.1.tar.gz