I want to share a story of a recent issue I encountered with a customer. The customer is using Namespaces, which act like a VRF for the management interface. This operates just fine, but in the release the customer is running, 2.1, when you upgrade your interface configuration is lost. In 2.5 a feature was added to backup the configuration, but now I’m in a bit of a Catch-22: I need to upgrade to get my bug fix, but I trigger the bug by upgrading.
I just need to figure out a way to upgrade only that feature before we upgrade the platform.
Most of the software running on Cumulus comes as a package. Packages provide an easy way to update and install software on Linux.
Unfortunately a package can contain multiple programs, so the package I’m looking for may not be the same name as my program. The first thing to do is figure out which package contains my program. A little Google-fu and voilà, dpkg -S [application] will tell me the package I need. Since I need to upgrade the cl-ns-mgmt program, I can find it with
cumulus@switch$ dpkg -S cl-ns-mgmt
This tells me the cl-utilities program contains the cl-ns-mgmt program I need to upgrade.
Next, I need to figure out where I can find the version of the package with the fix. To do this I start at the Cumulus Linux app repo. A little poking around and I’m able to find the updated version of the cl-utilities package I’m looking for.
Now I download (with wget) and install (with dpkg -i) the updated package. Now I’ve updated the namespace feature so I can upgrade the rest of the platform without issue.
My Take Away
This is cool. Cumulus isn’t the first or only company to have patching, but this is my first exposure to having that kind of flexibility and it’s awesome. I wish software was bug-free but that will never happen. This example was simple, given the feature, but this can be applied to almost any piece of software on the system. These kinds of things are fundamental to Linux people coming from the server world, but as a network person, it feels revolutionary.