Heartbleed has reminded me what equipment and products I deal with that are difficult to upgrade. While most people think of DevOps as "rapidly deploying software that your coworkers wrote", it is really about creating a world where we are able to make changes... because change is required to experiment, and innovation requires experimentation... and that means being able to make changes. This includes not just in-house software releases, but all operational changes we do. This includes software and firmware releases we get from vendors.
My new(-ish) job at StackExchange has me actually touching hardware instead of living in the virtualized, everything-is-done-for-you, world of Google. All our networking gear is Cisco. Most of it is upgraded only when we have to.
I used to upgrade Cisco firmware in the 1990s (well, up until 2003 I guess). I figured, "How much different could it be?" (Wow, do I feel old for saying that).
Anyway...
The process hasn't changed much. It is still TFTP firmware from a server. The version numbers are all different, and much more complex selection process, but I can deal with that.
However I'm shocked that there isn't a Windows app that just does it all for me. Something where I enter the IP address of the router, my username and password, and it says:
"Hi Tom! It looks like you have a Cisco Wizbang 7600 running version 6.4.1.2.3.5(2)! The recommended release for this device is:
- If you are conservative: 7.4.1.2.3.5(2)
- If you live on the edge: 7.6.3.1.4(123)
- If you are insane: 8.0.0.0(0)
Then I click on one of those 3 and it just freaking does the right thing: Gets it from Cisco, uploads it to the device, asks me to confirm and reboots it.
Hasn't anyone thought of this before? It seems so obvious.
I talked with my friends at Cisco and they told me that the "Prime Infrastructure" product does this but it is one feature out of a huge, expensive, product.
Why hasn't there been an open source project to do this? It seems so obvious.
It's two parts: Helping choose the version and upgrading the firmware. The first might be difficult unless Cisco provides an API to their vast sea of IOS versions. I can forego that part for now. The second half seems to be pretty straight forward. Half of the code is already in RANCID.
I'm not a network engineer so maybe this already exists.
Post a comment if you know of one.
Most good Cisco admins (or network admins in general) are pretty conservative about doing things. Which is a good thing (IMHO).
Yes making software updates is painful. So is using any Cisco management applications (At least for me. I fail to see the promised simplicity and always run into bugs).
When I'm working on Cisco projects I do critical system (Core routers / switches) manually and not so critical systems (user access, TOR switches) via script (using RANCIDs clogin).
I still have to take a look at netconf (http://en.wikipedia.org/wiki/NETCONF).
And BTW: If you are brave you can also scp your software image to a router. On smaller devices: turn your phone off. Start the copy, go out for a good long lunch. It will take time and render the device almost useless.