salt.modules.netbox#
NetBox#
Module to query NetBox
- codeauthor:
Zach Moody <zmoody@do.co>
- maturity:
new
- depends:
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.
- salt.modules.netbox.create_circuit(name, provider_id, circuit_type, description=None)#
New in version 2019.2.0.
Create a new Netbox circuit
- name
Name of the circuit
- provider_id
The netbox id of the circuit provider
- circuit_type
The name of the circuit type
- asn
The ASN of the circuit provider
- description
The description of the circuit
CLI Example:
salt myminion netbox.create_circuit NEW_CIRCUIT_01 Telia Transit 1299 "New Telia circuit"
- salt.modules.netbox.create_circuit_provider(name, asn=None)#
New in version 2019.2.0.
Create a new Netbox circuit provider
- name
The name of the circuit provider
- asn
The ASN of the circuit provider
CLI Example:
salt myminion netbox.create_circuit_provider Telia 1299
- salt.modules.netbox.create_circuit_termination(circuit, interface, device, speed, xconnect_id=None, term_side='A')#
New in version 2019.2.0.
Terminate a circuit on an interface
- circuit
The name of the circuit
- interface
The name of the interface to terminate on
- device
The name of the device the interface belongs to
- speed
The speed of the circuit, in Kbps
- xconnect_id
The cross-connect identifier
- term_side
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
- salt.modules.netbox.create_circuit_type(name)#
New in version 2019.2.0.
Create a new Netbox circuit type.
- name
The name of the circuit type
CLI Example:
salt myminion netbox.create_circuit_type Transit
- salt.modules.netbox.create_device(name, role, model, manufacturer, site)#
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.
- name
The name of the device, e.g.,
edge_router- role
String of device role, e.g.,
router- model
String of device model, e.g.,
MX480- manufacturer
String of device manufacturer, e.g.,
Juniper- site
String of device site, e.g.,
BRU
CLI Example:
salt myminion netbox.create_device edge_router router MX480 Juniper BRU
- salt.modules.netbox.create_device_role(role, color)#
New in version 2019.2.0.
Create a device role
- role
String of device role, e.g.,
router
CLI Example:
salt myminion netbox.create_device_role router
- salt.modules.netbox.create_device_type(model, manufacturer)#
New in version 2019.2.0.
Create a device type. If the manufacturer doesn't exist, create a new manufacturer.
- model
String of device model, e.g.,
MX480- manufacturer
String of device manufacturer, e.g.,
Juniper
CLI Example:
salt myminion netbox.create_device_type MX480 Juniper
- salt.modules.netbox.create_interface(device_name, interface_name, mac_address=None, description=None, enabled=None, lag=None, lag_parent=None, form_factor=None)#
New in version 2019.2.0.
Attach an interface to a device. If not all arguments are provided, they will default to Netbox defaults.
- device_name
The name of the device, e.g.,
edge_router- interface_name
The name of the interface, e.g.,
TenGigE0/0/0/0- mac_address
String of mac address, e.g.,
50:87:89:73:92:C8- description
String of interface description, e.g.,
NTT- enabled
String of boolean interface status, e.g.,
True- lag:
Boolean of interface lag status, e.g.,
True- lag_parent
String of interface lag parent name, e.g.,
ae13- form_factor
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"
- salt.modules.netbox.create_interface_connection(interface_a, interface_b)#
New in version 2019.2.0.
Create an interface connection between 2 interfaces
- interface_a
Interface id for Side A
- interface_b
Interface id for Side B
CLI Example:
salt myminion netbox.create_interface_connection 123 456
- salt.modules.netbox.create_inventory_item(device_name, item_name, manufacturer_name=None, serial='', part_id='', description='')#
New in version 2019.2.0.
Add an inventory item to an existing device.
- device_name
The name of the device, e.g.,
edge_router.- item_name
String of inventory item name, e.g.,
Transceiver.- manufacturer_name
String of inventory item manufacturer, e.g.,
Fiberstore.- serial
String of inventory item serial, e.g.,
FS1238931.- part_id
String of inventory item part id, e.g.,
740-01234.- description
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
- salt.modules.netbox.create_ipaddress(ip_address, family, device=None, interface=None)#
New in version 2019.2.0.
Add an IP address, and optionally attach it to an interface.
- ip_address
The IP address and CIDR, e.g.,
192.168.1.1/24- family
Integer of IP family, e.g.,
4- device
The name of the device to attach IP to, e.g.,
edge_router- interface
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
- salt.modules.netbox.create_manufacturer(name)#
New in version 2019.2.0.
Create a device manufacturer.
- name
The name of the manufacturer, e.g.,
Juniper
CLI Example:
salt myminion netbox.create_manufacturer Juniper
- salt.modules.netbox.create_platform(platform)#
New in version 2019.2.0.
Create a new device platform
- platform
String of device platform, e.g.,
junos
CLI Example:
salt myminion netbox.create_platform junos
- salt.modules.netbox.create_site(site)#
New in version 2019.2.0.
Create a new device site
- site
String of device site, e.g.,
BRU
CLI Example:
salt myminion netbox.create_site BRU
- salt.modules.netbox.delete_interface(device_name, interface_name)#
New in version 2019.2.0.
Delete an interface from a device.
- device_name
The name of the device, e.g.,
edge_router.- interface_name
The name of the interface, e.g.,
ae13
CLI Example:
salt myminion netbox.delete_interface edge_router ae13
- salt.modules.netbox.delete_inventory_item(item_id)#
New in version 2019.2.0.
Remove an item from a devices inventory. Identified by the netbox id
- item_id
Integer of item to be deleted
CLI Example:
salt myminion netbox.delete_inventory_item 1354
- salt.modules.netbox.delete_ipaddress(ipaddr_id)#
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.
- id
The Netbox id for the IP address.
CLI Example:
salt myminion netbox.delete_ipaddress 9002
- salt.modules.netbox.filter_(app, endpoint, **kwargs)#
Get a list of items from NetBox.
- app
String of netbox app, e.g.,
dcim,circuits,ipam- endpoint
String of app endpoint, e.g.,
sites,regions,devices- kwargs
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
- salt.modules.netbox.get_(app, endpoint, id=None, **kwargs)#
Get a single item from NetBox.
- app
String of netbox app, e.g.,
dcim,circuits,ipam- endpoint
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
- salt.modules.netbox.get_circuit_provider(name, asn=None)#
New in version 2019.2.0.
Get a circuit provider with a given name and optional ASN.
- name
The name of the circuit provider
- asn
The ASN of the circuit provider
CLI Example:
salt myminion netbox.get_circuit_provider Telia 1299
- salt.modules.netbox.get_interfaces(device_name=None, **kwargs)#
New in version 2019.2.0.
Returns interfaces for a specific device using arbitrary netbox filters
- device_name
The name of the device, e.g.,
edge_router- kwargs
Optional arguments to be used for filtering
CLI Example:
salt myminion netbox.get_interfaces edge_router name="et-0/0/5"
- salt.modules.netbox.get_ipaddresses(device_name=None, **kwargs)#
New in version 2019.2.0.
Filters for an IP address using specified filters
- device_name
The name of the device to check for the IP address
- kwargs
Optional arguments that can be used to filter, e.g.,
family=4
CLI Example:
salt myminion netbox.get_ipaddresses device_name family=4
- salt.modules.netbox.make_interface_child(device_name, interface_name, parent_name)#
New in version 2019.2.0.
Set an interface as part of a LAG.
- device_name
The name of the device, e.g.,
edge_router.- interface_name
The name of the interface to be attached to LAG, e.g.,
xe-1/0/2.- parent_name
The name of the LAG interface, e.g.,
ae13.
CLI Example:
salt myminion netbox.make_interface_child xe-1/0/2 ae13
- salt.modules.netbox.make_interface_lag(device_name, interface_name)#
New in version 2019.2.0.
Update an interface to be a LAG.
- device_name
The name of the device, e.g.,
edge_router.- interface_name
The name of the interface, e.g.,
ae13.
CLI Example:
salt myminion netbox.make_interface_lag edge_router ae13
- salt.modules.netbox.openconfig_interfaces(device_name=None)#
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.
- device_name:
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
- device_name:
- salt.modules.netbox.openconfig_lacp(device_name=None)#
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
intervalandlacp_modekeys have the values set asSLOWandACTIVErespectively, 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.- device_name:
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
- device_name:
- salt.modules.netbox.slugify(value)#
' Slugify given value. Credit to Djangoproject https://docs.djangoproject.com/en/2.0/_modules/django/utils/text/#slugify
- salt.modules.netbox.update_device(name, **kwargs)#
New in version 2019.2.0.
Add attributes to an existing device, identified by name.
- name
The name of the device, e.g.,
edge_router- kwargs
Arguments to change in device, e.g.,
serial=JN2932930
CLI Example:
salt myminion netbox.update_device edge_router serial=JN2932920
- salt.modules.netbox.update_interface(device_name, interface_name, **kwargs)#
New in version 2019.2.0.
Update an existing interface with new attributes.
- device_name
The name of the device, e.g.,
edge_router- interface_name
The name of the interface, e.g.,
ae13- kwargs
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