From 6610a0d6b283393c59df03bf19a27e524149f5f4 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Thu, 14 Feb 2013 12:35:39 -0200 Subject: Adding system-upgrade subcommand --- lib/hydra/misc | 14 ++++++++++++ share/hydractl/system-upgrade | 53 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100755 share/hydractl/system-upgrade diff --git a/lib/hydra/misc b/lib/hydra/misc index 24db45b..9aca158 100644 --- a/lib/hydra/misc +++ b/lib/hydra/misc @@ -106,3 +106,17 @@ function hydra_safe_run { $* hydra_exit_on_error $* } + +# Determine the next debian release +function hydra_next_debian_release { + local release="$1" + + if [ "$release" == "lenny" ]; then + echo "squeeze" + elif [ "$release" == "squeeze" ]; then + echo "wheezy" + else + echo "Unsupported release" + exit 1 + fi +} diff --git a/share/hydractl/system-upgrade b/share/hydractl/system-upgrade new file mode 100755 index 0000000..770f058 --- /dev/null +++ b/share/hydractl/system-upgrade @@ -0,0 +1,53 @@ +#!/bin/bash +# +# Do a system upgrade, from a version to the next. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public +# License along with this program. If not, see +# . + +# Load +source $APP_BASE/lib/hydra/functions || exit 1 +hydra_config_load + +# Command line arguments +BASENAME="`basename $0`" + +# Available releases +release="`facter lsbdistcodename`" +nextrelease="`hydra_next_debian_release $release`" + +# Ensure puppet is stopped during the process +service puppet stop +sed -i -e 's/START=yes/START=no/' /etc/default/puppet + +# Configure apt for the next debian release +sed -i -e "s/$release/$nextrelease/g" /etc/apt/sources.list +sed -i -e "s/$release/$nextrelease/g" /etc/apt/preferences +sed -i -e 's|^deb http://backports.debian.org/debian-backports|#deb http://backports.debian.org/debian-backports|' /etc/apt/sources.list + +# These will be generated by puppet and can be safely removed +rm -f /etc/apt/sources.list.d/* +rm -f /etc/apt/preferences.d/* +rm -f /etc/apt/preferences + +# Update package listing and download new packages +apt-get update +apt-get dist-upgrade -d + +# Upgrade the system +apt-get dist-upgrade + +# Enable puppet again +sed -i -e 's/START=no/START=yes/' /etc/default/puppet +service puppet start -- cgit v1.2.3