Upgrading ubuntu release on a cluster of servers

I have a cluster of about 50 ubuntu nodes which are currently running maverick release. I'd like to upgrade them to oneiric, but I'm having a difficulty choosing the right tools.

I know ubuntu has the 'unattended-upgrade' utility, but it's only meant for security upgrades and cannot switch the whole release. Is there anything similar that can?

For now it seems that the only choice is to use something like fabric/pssh/capistrano and make it run 'do-release-upgrade' on each of the servers. But 'do-release-upgrade' is interactive and requires some input from the user during the upgrade. There doesn't seem to be any --unattended parameter for the 'do-release-upgrade' tool.

What kind of tactics do you use in situations like this?

Thanks!


Solution 1:

I'm the one who wrote that guide about using apt-get dist-upgrade and yes it's certainly true that there are many differences between dist-upgrade and do-release-upgrade. I have now written a new guide on how to do the release upgrade automatically with the do-release-upgrade and it's actually very simple. You can find the new guide here:

http://awaseroot.wordpress.com/2012/04/29/ubuntu-release-upgrade-fully-automatic-non-interactive-upgrade/

Also in this one I'm answering yes to all questions during the upgrade but you can define the answers in the command if you know the exact order of the questions that require interaction. You should try it first in test environment as that way you could also find out the questions.

The guide includes a Fabric example as well.

Solution 2:

In situations like this, assuming all your machines are identical (or minimally different) I would suggest using a tool like Puppet, Chef, or radmind to manage your systems.

This requires more time investment up front, but as a long-term solution it will be tremendously beneficial for you.


Speaking chiefly from my experience with radmind the general principle is to upgrade a template machine, then make all your other hosts look like the template. The major advantages being consistency across hosts & automation of the actual upgrade steps.
Both puppet and chef offer many additional features compared to radmind, and have larger user communities.
Search around on ServerFault for additional information on these tools

Solution 3:

A little Googling brought me to this:

http://awaseconfigurations.wordpress.com/2011/11/21/automated-ubuntu-release-upgrade/

Should work from Maverick to Oneiric as well.