#!/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`" # this doesn't work on squeeze release="`facter | grep lsbdistcodename | sed -e 's/lsbdistcodename => //'`" nextrelease="`hydra_next_debian_release $release`" # Ensure puppet is stopped during the process echo "Disabling puppet during the upgrade..." service puppet stop sed -i -e 's/START=yes/START=no/' /etc/default/puppet # 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/* rm -f /etc/apt/preferences # Update package listing and download new packages echo "" echo "Updating package listing..." apt-get update echo "" echo "Downloading packages..." apt-get dist-upgrade -d # Upgrade the system echo "" echo "Upgrading the system..." apt-get dist-upgrade # Enable puppet again echo "" echo "Starting puppet again..." sed -i -e 's/START=no/START=yes/' /etc/default/puppet service puppet start