Situation
Today at work, I needed to prepare the patching of a two-nodes cluster. Not only I should patch this cluster, but I should also mimic the same patching level as the currently used prod server. Well Well. Instead of making a diff of the showrev and try to sort out which patch is installed on this node, not on the other and so on, I tried to define a new way of doing this kind of things. I’ll describe my method here, don’t hesitate to comment, suggest or criticize something 🙂
The Idea
The idea is to use PCA to achieve everything. As you may (or may not) know, PCA is based upon patchdiag.xref files, which are provided by SUN Oracle once a day.
They contain the list of latest released patches as well as dependencies. The Idea of my solution is to generate a patchdiag.xref based on the patching level I should match. I could then use PCA together with this patchdiag.xref on the two nodes I need to patch. Child-Game!
WeSunSolve to the rescue
Again, you may (or not) know that WeSunSolve allow you to register yourself and use the Panel as a little server dashboard. You can enter some server name and link some patching level to them. This is being done using a simple “showrev -p” output that you can paste on the website to add patch level to a server.
Once you got two (or more) server, you can use the newly added feature Server Upgrade. You can choose two patching level there to generate a patchdiag.xref file:
- Source patching level, is the patch level of the server you’ll need to patch.
- Destination patching level, is the patch level of the server you want to mimic.
Use PCA, and voila!
Next step is known by you all! Just use pca together with the patchdiag.xref file and see the output:
$ ./pca -X . -f explorer.XXXXXXXXX.YYYYYYYYY-2011.12.17.02.00 -l Using /home/wildcat/YYYYYYYYYYY/./patchdiag.xref from Feb/03/12 Host: XXXXXXXXXXX (SunOS 5.9/Generic_122300-05/sparc/sun4u) List: missing (133/210205) Patch IR CR RSB Age Synopsis - --- 112951 13 < 14 RS- 999 SunOS 5.9: patchadd and patchrm Patch 111711 16 < 18 R-- 999 SunOS 5.9: 32-bit Shared library patch for C++ 111712 16 < 18 R-- 999 SunOS 5.9: 64-Bit Shared library patch for C++ **SNIPPED**