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
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
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=u'A')¶New in version 2019.2.0.
Terminate a circuit on an interface
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.
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.
edge_routerrouterMX480JuniperBRUCLI 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
routerCLI 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.
MX480JuniperCLI 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.
edge_routerTenGigE0/0/0/050:87:89:73:92:C8NTTTrueTrueae13200CLI 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
CLI Example:
salt myminion netbox.create_interface_connection 123 456
salt.modules.netbox.create_inventory_item(device_name, item_name, manufacturer_name=None, serial=u'', part_id=u'', description=u'')¶New in version 2019.2.0.
Add an inventory item to an existing device.
edge_router.Transceiver.Fiberstore.FS1238931.740-01234.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.
192.168.1.1/244edge_routerae13CLI 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.
JuniperCLI Example:
salt myminion netbox.create_manufacturer Juniper
salt.modules.netbox.create_platform(platform)¶New in version 2019.2.0.
Create a new device platform
junosCLI Example:
salt myminion netbox.create_platform junos
salt.modules.netbox.create_site(site)¶New in version 2019.2.0.
Create a new device site
BRUCLI 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.
edge_router.ae13CLI 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
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.
CLI Example:
salt myminion netbox.delete_ipaddress 9002
salt.modules.netbox.filter_(app, endpoint, **kwargs)¶Get a list of items from NetBox.
dcim, circuits, ipamsites, regions, devicesrole=routerReturns 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.
dcim, circuits, ipamsites, regions, devicesReturns 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.
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
edge_routerCLI 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
family=4CLI 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.
edge_router.xe-1/0/2.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.
edge_router.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.
NoneCLI Example:
salt '*' netbox.openconfig_interfaces
salt '*' netbox.openconfig_interfaces device_name=cr1.thn.lon
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 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.
NoneCLI Example:
salt '*' netbox.openconfig_lacp
salt '*' netbox.openconfig_lacp device_name=cr1.thn.lon
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.
edge_routerserial=JN2932930CLI 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.
edge_routerae13mac_address=50:87:69:53:32:D0CLI Example:
salt myminion netbox.update_interface edge_router ae13 mac_address=50:87:69:53:32:D0