#!/bin/bash # **get_uec_image.sh** # Download and prepare Ubuntu UEC images CACHEDIR=${CACHEDIR:-/opt/stack/cache} ROOTSIZE=${ROOTSIZE:-2000M} # Keep track of the current directory TOOLS_DIR=$(cd $(dirname "$0") && pwd) TOP_DIR=$(cd $TOOLS_DIR/..; pwd) # Import common functions . $TOP_DIR/functions # Exit on error to stop unexpected errors set -o errexit set -o xtrace usage() { echo "Usage: $0 - Download and prepare Ubuntu UEC images" echo "" echo "$0 [-r rootsize] release imagefile [kernel]" echo "" echo "-r size - root fs size (min 2000MB)" echo "release - Ubuntu release: lucid - quantal" echo "imagefile - output image file" echo "kernel - output kernel" exit 1 } # Clean up any resources that may be in use cleanup() { set +o errexit # Mop up temporary files if [ -n "$IMG_FILE_TMP" -a -e "$IMG_FILE_TMP" ]; then rm -f $IMG_FILE_TMP fi # Kill ourselves to signal any calling process trap 2; kill -2 $$ } while getopts hr: c; do case $c in h) usage ;; r) ROOTSIZE=$OPTARG ;; esac done shift `expr $OPTIND - 1` if [[ ! "$#" -eq "2" && ! "$#" -eq "3" ]]; then usage fi # Default args DIST_NAME=$1 IMG_FILE=$2 IMG_FILE_TMP=`mktemp $IMG_FILE.XXXXXX` KERNEL=$3 case $DIST_NAME in quantal) ;; precise) ;; oneiric) ;; natty) ;; maverick) ;; lucid) ;; *) echo "Unknown release: $DIST_NAME" usage ;; esac trap cleanup SIGHUP SIGINT SIGTERM SIGQUIT EXIT # Check dependencies if [ ! -x "`which qemu-img`" -o -z "`dpkg -l | grep cloud-utils`" ]; then # Missing KVM? apt_get install qemu-kvm cloud-utils fi # Find resize script RESIZE=`which resize-part-image || which uec-resize-image` if [ -z "$RESIZE" ]; then echo "resize tool from cloud-utils not found" exit 1 fi # Get the UEC image UEC_NAME=$DIST_NAME-server-cloudimg-amd64 if [ ! -d $CACHEDIR/$DIST_NAME ]; then mkdir -p $CACHEDIR/$DIST_NAME fi if [ ! -e $CACHEDIR/$DIST_NAME/$UEC_NAME.tar.gz ]; then (cd $CACHEDIR/$DIST_NAME && wget -N http://uec-images.ubuntu.com/$DIST_NAME/current/$UEC_NAME.tar.gz) (cd $CACHEDIR/$DIST_NAME && tar Sxvzf $UEC_NAME.tar.gz) fi $RESIZE $CACHEDIR/$DIST_NAME/$UEC_NAME.img ${ROOTSIZE} $IMG_FILE_TMP mv $IMG_FILE_TMP $IMG_FILE # Copy kernel to destination if [ -n "$KERNEL" ]; then cp -p $CACHEDIR/$DIST_NAME/*-vmlinuz-virtual $KERNEL fi trap - SIGHUP SIGINT SIGTERM SIGQUIT EXIT