Blog Detail
This is part 2 of an ongoing series about using Nautobot and Nautobot’s Lifecycle Management Application to help you with your device hardware/software planning. You can visit Hardware – (Part 1) if you haven’t or want to revisit that portion.
In this part we will dive into how Nautobot can help you with device lifecycle planning by looking at the software object in Nautobot. You will need to install the Lifecycle Management Application in order to create a relationship between the devices/device_type and the software objects in Nautobot. In part 3 I will dive deeper on how to use the application to populate hardware notices and software attributes.
Software Lifecycle
When considering what you should look for in lifecycle management of software you should do quite a bit of research. Some questions you might ask yourself are:
- Does the software have features that are needed for your network?
- If you are running OSPF in your network does the software support that?
- If you are want to run LACP on interfaces, does the software support that?
- What current version is this software on?
- Are there many hotfixes or patches that have been done to the software?
- What build is the software on?
- Are there any upcoming patches/hotfixes to be released?
- What are the current security issues that have not been fixed?
- Are there any security flaws in features/protocols that you have in your network such as BGP/BFD/LACP?
- If there is a flaw in a protocol/feature and it’s not something you use currently, will you encounter it in the future?
- Search for CVEs and bugs in the software.
- How old is the software?
- You will most likely want to research software that has been out for at least one year so you can verify the security issues and bugs.
- You will most likely want to research software that has been out for at least one year so you can verify the security issues and bugs.
- What is the EoX data for the software?
- What is the End of Support (EoS) date?
- What is the End of Security Vulnerability Support date?
- What is the End of Maintenance Releases date?
- What is the End of Service Contract Renewal date?
The best process would be to talk with your vendor on what software is best for your network if you are able to.
Nautobot’s Software Homepage
Here is an overview of what attributes a Nautobot software object can have:
- Device Platform – This is usually the manufacturer/vendor of the software.
- Software Version – Current software version number. This should be the current semantic version.
- Release Date – Date that the software was released from the vendor.
- End of Support – Date from the vendor when they will stop supporting the software with patches, fixes, etc.
- Documentation URL – Documentation of the version provided by the vendor to help with security/hotfix/EoX announcements.
- Long-Term Support – Will the software be in the network for some time?
- PreRelease – Boolean if the software is currently in the prereleases stage so engineers know not to add to production devices.
- Running on Devices – What devices in Nautobot are running the software?
- Running on Inventory Items – What inventory items in Nautobot are running the software?
- Corresponding CVEs – CVE that can be attached using the Device Lifecycle Management application.
The above attributes can be filtered by using Nautobot’s API or GraphQL queries. In part 3 I will discuss the plugin and have some examples of queries that can be used to filter out specific information that you could use to create a csv file or Excel file, for example.
Nautobot Relationship Associations
As seen before in the software homepage, you can click on the “Running on devices” link to see what devices are running the software. In part 3 we will discuss further on how to build this relationship in the lifecycle application.
Software Image Information
Looking at the software attributes screenshot, there is a tab for software image. You can assign different attributes to this Nautobot object, and you can see all the information pertaining to the software image when you click on this tab.
- Software Version – Current software version number. This should be the current semantic version.
- Image Filename – The image filename of the software.
- Download URL – URL or server path to follow to download the software. When onboarding new devices, this can come in handy for quick reference.
- Image File Checksum – Checksum to validate once the software has been uploaded to the device to ensure it wasn’t corrupted during transfer.
- Default Image – Boolean of whether the image is the default or not.
- Assignments – Device, Inventory Items, and Object tags assignment.
What Can You Do with All This Information?
- Create a custom Nautobot job to pull software that is coming to End of Support in the next month and write that data to a csv/Excel file for review.
- Create a custom Nautobot job to query vendor’s website for updated information regarding the software and update Nautobot’s software object.
- Easily filter what devices are running what software to focus on upgrading devices.
- Create an Ansible playbook to query Nautobot’s API to find software that is about to expire. Then upload the future software to the device by polling the software’s filename, file path, and checksum.
- Create a GraphQL query for software with upcoming expiring date and use the results to craft an email to certain teams with a Nautobot job.
Conclusion
In the coming months I will be creating a specific blog post on each of the concepts mentioned below.
- Nautobot and Device Lifecycle – Hardware (Part 1)
- Nautobot and Device Lifecycle – Software (Part 2)
- Nautobot and Device Lifecycle – Nautobot’s Lifecycle Application (Part 3)
- Nautobot and Device Lifecycle – Vendor APIs and Nautobot Jobs (Part 4)
-Zack Tobar
Contact Us to Learn More
Share details about yourself & someone from our team will reach out to you ASAP!