Module to query NetBox
Zach Moody <zmoody@do.co>
new
pynetbox
The following config should be in the minion config file. In order to
work with secrets
you should provide a token and path to your
private key file:
netbox:
url: <NETBOX_URL>
token: <NETBOX_USERNAME_API_TOKEN (OPTIONAL)>
keyfile: </PATH/TO/NETBOX/KEY (OPTIONAL)>
New in version 2018.3.0.
New in version 2019.2.0.
Create a new Netbox circuit
Name of the circuit
The netbox id of the circuit provider
The name of the circuit type
The ASN of the circuit provider
The description of the circuit
CLI Example:
salt myminion netbox.create_circuit NEW_CIRCUIT_01 Telia Transit 1299 "New Telia circuit"
New in version 2019.2.0.
Create a new Netbox circuit provider
The name of the circuit provider
The ASN of the circuit provider
CLI Example:
salt myminion netbox.create_circuit_provider Telia 1299
New in version 2019.2.0.
Terminate a circuit on an interface
The name of the circuit
The name of the interface to terminate on
The name of the device the interface belongs to
The speed of the circuit, in Kbps
The cross-connect identifier
The side of the circuit termination
CLI Example:
salt myminion netbox.create_circuit_termination NEW_CIRCUIT_01 xe-0/0/1 myminion 10000 xconnect_id=XCON01
New in version 2019.2.0.
Create a new Netbox circuit type.
The name of the circuit type
CLI Example:
salt myminion netbox.create_circuit_type Transit
New in version 2019.2.0.
Create a new device with a name, role, model, manufacturer and site. All these components need to be already in Netbox.
The name of the device, e.g., edge_router
String of device role, e.g., router
String of device model, e.g., MX480
String of device manufacturer, e.g., Juniper
String of device site, e.g., BRU
CLI Example:
salt myminion netbox.create_device edge_router router MX480 Juniper BRU
New in version 2019.2.0.
Create a device role
String of device role, e.g., router
CLI Example:
salt myminion netbox.create_device_role router
New in version 2019.2.0.
Create a device type. If the manufacturer doesn't exist, create a new manufacturer.
String of device model, e.g., MX480
String of device manufacturer, e.g., Juniper
CLI Example:
salt myminion netbox.create_device_type MX480 Juniper
New in version 2019.2.0.
Attach an interface to a device. If not all arguments are provided, they will default to Netbox defaults.
The name of the device, e.g., edge_router
The name of the interface, e.g., TenGigE0/0/0/0
String of mac address, e.g., 50:87:89:73:92:C8
String of interface description, e.g., NTT
String of boolean interface status, e.g., True
Boolean of interface lag status, e.g., True
String of interface lag parent name, e.g., ae13
Integer of form factor id, obtained through _choices API endpoint, e.g., 200
CLI Example:
salt myminion netbox.create_interface edge_router ae13 description="Core uplink"
New in version 2019.2.0.
Create an interface connection between 2 interfaces
Interface id for Side A
Interface id for Side B
CLI Example:
salt myminion netbox.create_interface_connection 123 456
New in version 2019.2.0.
Add an inventory item to an existing device.
The name of the device, e.g., edge_router
.
String of inventory item name, e.g., Transceiver
.
String of inventory item manufacturer, e.g., Fiberstore
.
String of inventory item serial, e.g., FS1238931
.
String of inventory item part id, e.g., 740-01234
.
String of inventory item description, e.g., SFP+-10G-LR
.
CLI Example:
salt myminion netbox.create_inventory_item edge_router Transceiver part_id=740-01234
New in version 2019.2.0.
Add an IP address, and optionally attach it to an interface.
The IP address and CIDR, e.g., 192.168.1.1/24
Integer of IP family, e.g., 4
The name of the device to attach IP to, e.g., edge_router
The name of the interface to attach IP to, e.g., ae13
CLI Example:
salt myminion netbox.create_ipaddress 192.168.1.1/24 4 device=edge_router interface=ae13
New in version 2019.2.0.
Create a device manufacturer.
The name of the manufacturer, e.g., Juniper
CLI Example:
salt myminion netbox.create_manufacturer Juniper
New in version 2019.2.0.
Create a new device platform
String of device platform, e.g., junos
CLI Example:
salt myminion netbox.create_platform junos
New in version 2019.2.0.
Create a new device site
String of device site, e.g., BRU
CLI Example:
salt myminion netbox.create_site BRU
New in version 2019.2.0.
Delete an interface from a device.
The name of the device, e.g., edge_router
.
The name of the interface, e.g., ae13
CLI Example:
salt myminion netbox.delete_interface edge_router ae13
New in version 2019.2.0.
Remove an item from a devices inventory. Identified by the netbox id
Integer of item to be deleted
CLI Example:
salt myminion netbox.delete_inventory_item 1354
New in version 2019.2.0.
Delete an IP address. IP addresses in Netbox are a combination of address and the interface it is assigned to.
The Netbox id for the IP address.
CLI Example:
salt myminion netbox.delete_ipaddress 9002
Get a list of items from NetBox.
String of netbox app, e.g., dcim
, circuits
, ipam
String of app endpoint, e.g., sites
, regions
, devices
Optional arguments that can be used to filter.
All filter keywords are available in Netbox,
which can be found by surfing to the corresponding API endpoint,
and clicking Filters. e.g., role=router
Returns a list of dictionaries
salt myminion netbox.filter dcim devices status=1 role=router
Get a single item from NetBox.
String of netbox app, e.g., dcim
, circuits
, ipam
String of app endpoint, e.g., sites
, regions
, devices
Returns a single dictionary
To get an item based on ID.
salt myminion netbox.get dcim devices id=123
Or using named arguments that correspond with accepted filters on the NetBox endpoint.
salt myminion netbox.get dcim devices name=my-router
New in version 2019.2.0.
Get a circuit provider with a given name and optional ASN.
The name of the circuit provider
The ASN of the circuit provider
CLI Example:
salt myminion netbox.get_circuit_provider Telia 1299
New in version 2019.2.0.
Returns interfaces for a specific device using arbitrary netbox filters
The name of the device, e.g., edge_router
Optional arguments to be used for filtering
CLI Example:
salt myminion netbox.get_interfaces edge_router name="et-0/0/5"
New in version 2019.2.0.
Filters for an IP address using specified filters
The name of the device to check for the IP address
Optional arguments that can be used to filter, e.g., family=4
CLI Example:
salt myminion netbox.get_ipaddresses device_name family=4
New in version 2019.2.0.
Set an interface as part of a LAG.
The name of the device, e.g., edge_router
.
The name of the interface to be attached to LAG, e.g., xe-1/0/2
.
The name of the LAG interface, e.g., ae13
.
CLI Example:
salt myminion netbox.make_interface_child xe-1/0/2 ae13
New in version 2019.2.0.
Update an interface to be a LAG.
The name of the device, e.g., edge_router
.
The name of the interface, e.g., ae13
.
CLI Example:
salt myminion netbox.make_interface_lag edge_router ae13
New in version 2019.2.0.
Return a dictionary structured as standardised in the openconfig-interfaces YANG model, containing physical and configuration data available in Netbox, e.g., IP addresses, MTU, enabled / disabled, etc.
None
The name of the device to query the interface data for. If not provided, will use the Minion ID.
CLI Example:
salt '*' netbox.openconfig_interfaces
salt '*' netbox.openconfig_interfaces device_name=cr1.thn.lon
New in version 2019.2.0.
Return a dictionary structured as standardised in the openconfig-lacp YANG model, with configuration data for Link Aggregation Control Protocol (LACP) for aggregate interfaces.
Note
The interval
and lacp_mode
keys have the values set as SLOW
and ACTIVE
respectively, as this data is not currently available
in Netbox, therefore defaulting to the values defined in the standard.
See interval
and lacp-mode
for further details.
None
The name of the device to query the LACP information for. If not provided, will use the Minion ID.
CLI Example:
salt '*' netbox.openconfig_lacp
salt '*' netbox.openconfig_lacp device_name=cr1.thn.lon
' Slugify given value. Credit to Djangoproject https://docs.djangoproject.com/en/2.0/_modules/django/utils/text/#slugify
New in version 2019.2.0.
Add attributes to an existing device, identified by name.
The name of the device, e.g., edge_router
Arguments to change in device, e.g., serial=JN2932930
CLI Example:
salt myminion netbox.update_device edge_router serial=JN2932920
New in version 2019.2.0.
Update an existing interface with new attributes.
The name of the device, e.g., edge_router
The name of the interface, e.g., ae13
Arguments to change in interface, e.g., mac_address=50:87:69:53:32:D0
CLI Example:
salt myminion netbox.update_interface edge_router ae13 mac_address=50:87:69:53:32:D0