For those of you who are new to SuzieQ, its an:
open-source platform that polls your network stores the data in a DB, allowing you to query and analyse your data in lots of cool ways. Think troubleshooting and config compliance testing.
One of the biggest releases to date has been 0.16.0 (current release at the time of writing). Therefore today, I wanted to show you 3 top features included within this release that you may find useful. Let's go:
Remote DB Support
SuzieQ provides both a Python library and CLI. Prior to 0.16.0 to run either of these you needed direct access to the DB. With 0.16.0, you can run them locally. This is great for 2 things:
- Having a local SuzieQ CLI available to quickly lookup and check "things" within the network.
- Being able to run test scripts (think Pytest) from a CI platform using just the Python library.
For example, I've added the command to run the CLI locally to a Makefile, so to get all the versions of my devices, I just do:
$ make sq-cli
root> device show columns="hostname model version"
hostname model version
0 leaf1-ios IOSv 15.6(2)T
1 leaf2-ios IOSv 15.6(2)T
2 leaf3-qfx vqfx-10000 18.1R3-S2.5
3 leaf4-qfx vqfx-10000 18.1R3-S2.5
4 leaf5-eos vEOS 4.23.8M
5 leaf6-eos vEOS 4.23.8M
6 spine1-nxos Nexus9000 C9300v Chassis 9.3(7a)
7 spine2-nxos Nexus9000 C9300v Chassis 9.3(7a)
Dynamic Inventory Support
SuzieQ's inventory now supports dynamic based inventory e.g. Netbox.
Therefore to have SuzieQ pull from Netbox, you just need to add the following to your inventory file and tag any Netbox device with the source tag.
sources:
- name: inventory-source
type: netbox
token: <token>
url: http://<nb_address>:8080
tag: your_nb_tag
auths:
- name: device-password
username: lab
password: env:LAB_PASSWORD
devices:
- name: default
ignore-known-hosts: true
namespaces:
- name: nebula
source: inventory-source
auth: device-password
device: default
Address Prefix Support
The final great addition to SuzieQ 0.16.0 is the ability to perform an address lookup for a prefix. For example, to see all addresses within the network that are configured, including the interface and MAC details, we can do:
rick> address show prefix="10.0.0.0/8"
namespace hostname ifname ipAddressList macaddr ip6AddressList state vrf
0 nebula leaf1-ios GigabitEthernet0/0 [10.1.1.2/30] 50:00:00:09:00:00 [] up default
1 nebula leaf1-ios GigabitEthernet0/1 [10.2.1.2/30] 50:00:00:09:00:01 [] up default
2 nebula leaf2-ios GigabitEthernet0/0 [10.1.2.2/30] 50:00:00:0a:00:00 [] up default
3 nebula leaf2-ios GigabitEthernet0/1 [10.2.2.2/30] 50:00:00:0a:00:01 [] up default
4 nebula leaf3-qfx xe-0/0/0.0 [10.1.3.2/30] 02:05:86:71:64:03 [] up default
5 nebula leaf3-qfx xe-0/0/1.0 [10.2.3.2/30] 02:05:86:71:64:07 [] up default
6 nebula leaf4-qfx xe-0/0/0.0 [10.1.4.2/30] 02:05:86:71:27:03 [] up default
7 nebula leaf4-qfx xe-0/0/1.0 [10.2.4.2/30] 02:05:86:71:27:07 [] up default
8 nebula leaf5-eos Ethernet1 [10.1.5.2/30] 50:00:00:e4:72:94 [] up default
9 nebula leaf5-eos Ethernet2 [10.2.5.2/30] 50:00:00:e4:72:94 [] up default
10 nebula leaf6-eos Ethernet1 [10.1.6.2/30] 50:00:00:ca:39:cc [] up default
11 nebula leaf6-eos Ethernet2 [10.2.6.2/30] 50:00:00:ca:39:cc [] up default
12 nebula spine1-nxos Ethernet1/1 [10.1.1.1/30] 50:0b:00:00:1b:08 [] up default
13 nebula spine1-nxos Ethernet1/2 [10.1.2.1/30] 50:0b:00:00:1b:08 [] up default
14 nebula spine1-nxos Ethernet1/3 [10.1.3.1/30] 50:0b:00:00:1b:08 [] up default
...