summaryrefslogtreecommitdiff
path: root/share
diff options
context:
space:
mode:
Diffstat (limited to 'share')
-rwxr-xr-xshare/hydractl/dist-upgrade190
l---------[-rwxr-xr-x]share/hydractl/system-upgrade191
2 files changed, 191 insertions, 190 deletions
diff --git a/share/hydractl/dist-upgrade b/share/hydractl/dist-upgrade
new file mode 100755
index 0000000..f0c42b1
--- /dev/null
+++ b/share/hydractl/dist-upgrade
@@ -0,0 +1,190 @@
+#!/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
+# <http://www.gnu.org/licenses/>.
+
+# Load
+source $APP_BASE/lib/hydra/functions || exit 1
+hydra_config_load
+
+# Parameters
+TMP="/tmp"
+STATE="$TMP/system-upgrade"
+ENV="$TMP/system-upgrade-env"
+
+# Command line arguments
+BASENAME="`basename $0`"
+NEXTRELEASE="$1"
+
+# Proceed to the next upgrade stage
+function hydra_system_upgrade_stage {
+ STAGE="$1"
+ echo $STAGE > $STATE
+ hydra_system_upgrade_$STAGE
+}
+
+# Set and check upgrade environment
+function hydra_system_upgrade_env {
+ # Set initial state
+ hydra_system_upgrade_stage env
+
+ # Available releases
+ #release="`facter lsbdistcodename`" # this doesn't work on squeeze
+ release="`facter 2> /dev/null | grep lsbdistcodename | sed -e 's/lsbdistcodename => //'`"
+ nextrelease="`hydra_next_debian_release $release`"
+
+ # Is a virtual machine?
+ virtual="`facter 2> /dev/null | grep virtual | grep -v '^is_virtual' | sed -e 's/virtual => //'`"
+
+ # Save environment
+ echo "release=$release" > $ENV
+ echo "nextrelease=$nextrelease" >> $ENV
+ echo "nextrelease=$nextrelease" >> $ENV
+ echo "virtual=$virtual" >> $ENV
+
+ # Check release
+ if [ "$?" != "0" ]; then
+ echo "Unsupported release"
+ exit 1
+ fi
+
+ # Check optional parameter
+ if [ ! -z "$NEXTRELEASE" ]; then
+ if [ "$NEXTRELEASE" == "$release" ]; then
+ echo "System is already upgraded to $NEXTRELEASE"
+ exit 1
+ fi
+
+ if [ "$NEXTRELEASE" != "$nextrelease" ]; then
+ echo "Cannot upgrade: next release for this system is $nextrelease"
+ exit 1
+ fi
+ fi
+
+ # Set next state
+ hydra_system_upgrade_stage prepare
+}
+
+# Prepare the environment for a system upgrade
+function hydra_system_upgrade_prepare {
+ # Ensure puppet is stopped during the process
+ if [ -e "/etc/default/puppet" ]; then
+ echo "Disabling puppet agent..."
+ sed -i -e 's/START=yes/START=no/' /etc/default/puppet
+ service puppet stop
+ fi
+
+ # Configure apt for the next debian release
+ echo ""
+ echo "Updating apt configuration..."
+ 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/*
+
+ # These might lead in upgrade errors
+ if [ "$virtual" == "vserver" ] && [ "$nextrelease" == "wheezy" ]; then
+ apt-get remove makedev -y
+ apt-get remove colord -y
+ fi
+
+ # Set next state
+ hydra_system_upgrade_stage download
+}
+
+# Update package listing and download new packages
+function hydra_system_upgrade_download {
+ echo ""
+ echo "Updating package listing..."
+ apt-get update
+ echo ""
+ echo "Downloading packages..."
+ apt-get dist-upgrade -d -y
+ hydra_system_upgrade_stage upgrade
+}
+
+# Proceed with the actual upgrade
+function hydra_system_upgrade_upgrade {
+ echo ""
+ echo "Upgrading the system..."
+ DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade
+
+ if [ "$?" != "0" ]; then
+ echo "Upgrade failed. Please fix it manually and run this command again."
+ exit 1
+ fi
+
+ hydra_system_upgrade_stage custom
+}
+
+# Custom upgrade procedures
+function hydra_system_upgrade_custom {
+ if [ "$nextrelease" == "wheezy" ]; then
+ # Old suhosin config
+ rm -f /etc/php5/conf.d/suhosin.ini
+
+ # This has to be manually installed again
+ if [ -f "/etc/php5/cli/conf.d/uploadprogress.ini" ]; then
+ pecl uninstall uploadprogress
+ pecl install uploadprogress
+ fi
+ fi
+
+ if [ "$nextrelease" == "jessie" ]; then
+ # We're using a masterless puppet setup, so no agent
+ apt-get install puppet-common
+ apt-get purge puppet
+
+ # Purge old monitoring infrastructure
+ apt-get purge 'munin*' 'nagios*'
+ rm -rf /etc/nagios* /etc/munin* /etc/munin* /usr/share/munin*
+
+ # Cleanup old scripts
+ rm -f /usr/local/sbin/check-puppetd.sh
+ rm -f remove /etc/cron.d/puppetd
+ fi
+
+ hydractl trac-upgrade
+ hydra_system_upgrade_stage cleanup
+}
+
+# Cleanup procedures
+function hydra_system_upgrade_cleanup {
+ apt-get autoremove --purge -y
+ apt-get clean
+}
+
+# Initialize
+if [ ! -e "$STATE" ]; then
+ hydra_system_upgrade_env
+else
+ # Resume from the previous state
+ STAGE="`cat $STATE`"
+
+ # Restore environment
+ if [ -e "$ENV" ]; then
+ source $ENV
+ fi
+
+ hydra_system_upgrade_$STAGE
+fi
+
+# Teardown
+rm -f $STATE
+rm -f $ENV
diff --git a/share/hydractl/system-upgrade b/share/hydractl/system-upgrade
index f0c42b1..bb7a06e 100755..120000
--- a/share/hydractl/system-upgrade
+++ b/share/hydractl/system-upgrade
@@ -1,190 +1 @@
-#!/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
-# <http://www.gnu.org/licenses/>.
-
-# Load
-source $APP_BASE/lib/hydra/functions || exit 1
-hydra_config_load
-
-# Parameters
-TMP="/tmp"
-STATE="$TMP/system-upgrade"
-ENV="$TMP/system-upgrade-env"
-
-# Command line arguments
-BASENAME="`basename $0`"
-NEXTRELEASE="$1"
-
-# Proceed to the next upgrade stage
-function hydra_system_upgrade_stage {
- STAGE="$1"
- echo $STAGE > $STATE
- hydra_system_upgrade_$STAGE
-}
-
-# Set and check upgrade environment
-function hydra_system_upgrade_env {
- # Set initial state
- hydra_system_upgrade_stage env
-
- # Available releases
- #release="`facter lsbdistcodename`" # this doesn't work on squeeze
- release="`facter 2> /dev/null | grep lsbdistcodename | sed -e 's/lsbdistcodename => //'`"
- nextrelease="`hydra_next_debian_release $release`"
-
- # Is a virtual machine?
- virtual="`facter 2> /dev/null | grep virtual | grep -v '^is_virtual' | sed -e 's/virtual => //'`"
-
- # Save environment
- echo "release=$release" > $ENV
- echo "nextrelease=$nextrelease" >> $ENV
- echo "nextrelease=$nextrelease" >> $ENV
- echo "virtual=$virtual" >> $ENV
-
- # Check release
- if [ "$?" != "0" ]; then
- echo "Unsupported release"
- exit 1
- fi
-
- # Check optional parameter
- if [ ! -z "$NEXTRELEASE" ]; then
- if [ "$NEXTRELEASE" == "$release" ]; then
- echo "System is already upgraded to $NEXTRELEASE"
- exit 1
- fi
-
- if [ "$NEXTRELEASE" != "$nextrelease" ]; then
- echo "Cannot upgrade: next release for this system is $nextrelease"
- exit 1
- fi
- fi
-
- # Set next state
- hydra_system_upgrade_stage prepare
-}
-
-# Prepare the environment for a system upgrade
-function hydra_system_upgrade_prepare {
- # Ensure puppet is stopped during the process
- if [ -e "/etc/default/puppet" ]; then
- echo "Disabling puppet agent..."
- sed -i -e 's/START=yes/START=no/' /etc/default/puppet
- service puppet stop
- fi
-
- # Configure apt for the next debian release
- echo ""
- echo "Updating apt configuration..."
- 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/*
-
- # These might lead in upgrade errors
- if [ "$virtual" == "vserver" ] && [ "$nextrelease" == "wheezy" ]; then
- apt-get remove makedev -y
- apt-get remove colord -y
- fi
-
- # Set next state
- hydra_system_upgrade_stage download
-}
-
-# Update package listing and download new packages
-function hydra_system_upgrade_download {
- echo ""
- echo "Updating package listing..."
- apt-get update
- echo ""
- echo "Downloading packages..."
- apt-get dist-upgrade -d -y
- hydra_system_upgrade_stage upgrade
-}
-
-# Proceed with the actual upgrade
-function hydra_system_upgrade_upgrade {
- echo ""
- echo "Upgrading the system..."
- DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade
-
- if [ "$?" != "0" ]; then
- echo "Upgrade failed. Please fix it manually and run this command again."
- exit 1
- fi
-
- hydra_system_upgrade_stage custom
-}
-
-# Custom upgrade procedures
-function hydra_system_upgrade_custom {
- if [ "$nextrelease" == "wheezy" ]; then
- # Old suhosin config
- rm -f /etc/php5/conf.d/suhosin.ini
-
- # This has to be manually installed again
- if [ -f "/etc/php5/cli/conf.d/uploadprogress.ini" ]; then
- pecl uninstall uploadprogress
- pecl install uploadprogress
- fi
- fi
-
- if [ "$nextrelease" == "jessie" ]; then
- # We're using a masterless puppet setup, so no agent
- apt-get install puppet-common
- apt-get purge puppet
-
- # Purge old monitoring infrastructure
- apt-get purge 'munin*' 'nagios*'
- rm -rf /etc/nagios* /etc/munin* /etc/munin* /usr/share/munin*
-
- # Cleanup old scripts
- rm -f /usr/local/sbin/check-puppetd.sh
- rm -f remove /etc/cron.d/puppetd
- fi
-
- hydractl trac-upgrade
- hydra_system_upgrade_stage cleanup
-}
-
-# Cleanup procedures
-function hydra_system_upgrade_cleanup {
- apt-get autoremove --purge -y
- apt-get clean
-}
-
-# Initialize
-if [ ! -e "$STATE" ]; then
- hydra_system_upgrade_env
-else
- # Resume from the previous state
- STAGE="`cat $STATE`"
-
- # Restore environment
- if [ -e "$ENV" ]; then
- source $ENV
- fi
-
- hydra_system_upgrade_$STAGE
-fi
-
-# Teardown
-rm -f $STATE
-rm -f $ENV
+dist-upgrade \ No newline at end of file