Install XenServer tools from the iso on XenServer

Fixes bug 1032122 by ensuring, where possible, we use the tools
shipped with XenServer rather than downloading the tools from
images.ansolabs.com

Change-Id: I4592eca315b4700e73097d678309d00323923c8b
This commit is contained in:
John Garbutt 2012-08-02 12:34:03 +01:00
parent 6836977582
commit b6c8714408
2 changed files with 28 additions and 5 deletions

View File

@ -18,6 +18,7 @@ set -o xtrace
GUEST_PASSWORD=${GUEST_PASSWORD:-secrete}
STAGING_DIR=${STAGING_DIR:-stage}
DO_TGZ=${DO_TGZ:-1}
XS_TOOLS_PATH=${XS_TOOLS_PATH:-"/root/xs-tools.deb"}
# Install basics
chroot $STAGING_DIR apt-get update
@ -26,10 +27,8 @@ chroot $STAGING_DIR apt-get install -y curl wget ssh openssh-server python-pip g
chroot $STAGING_DIR pip install xenapi
# Install XenServer guest utilities
XEGUEST=xe-guest-utilities_5.6.100-651_amd64.deb
wget http://images.ansolabs.com/xen/$XEGUEST -O $XEGUEST
cp $XEGUEST $STAGING_DIR/root
chroot $STAGING_DIR dpkg -i /root/$XEGUEST
cp $XS_TOOLS_PATH ${STAGING_DIR}${XS_TOOLS_PATH}
chroot $STAGING_DIR dpkg -i $XS_TOOLS_PATH
chroot $STAGING_DIR update-rc.d -f xe-linux-distribution remove
chroot $STAGING_DIR update-rc.d xe-linux-distribution defaults

View File

@ -44,6 +44,28 @@ if [ ! -d $STAGING_DIR/etc ]; then
exit 1
fi
# Copy XenServer tools deb into the VM
ISO_DIR="/opt/xensource/packages/iso"
XS_TOOLS_FILE_NAME="xs-tools.deb"
XS_TOOLS_PATH="/root/$XS_TOOLS_FILE_NAME"
if [ -e "$ISO_DIR" ]; then
TOOLS_ISO=$(ls $ISO_DIR/xs-tools-*.iso)
TMP_DIR=/tmp/temp.$RANDOM
mkdir -p $TMP_DIR
mount -o loop $TOOLS_ISO $TMP_DIR
DEB_FILE=$(ls $TMP_DIR/Linux/*amd64.deb)
echo "Copying XenServer tools into VM from: $DEB_FILE"
cp $DEB_FILE "${STAGING_DIR}${XS_TOOLS_PATH}"
umount $TMP_DIR
rm -rf $TMP_DIR
else
echo "WARNING: no XenServer tools found, falling back to 5.6 tools"
TOOLS_URL="http://images.ansolabs.com/xen/xe-guest-utilities_5.6.100-651_amd64.deb"
wget $TOOLS_URL -O $XS_TOOLS_FILE_NAME
cp $XS_TOOLS_FILE_NAME "${STAGING_DIR}${XS_TOOLS_PATH}"
rm -rf $XS_TOOLS_FILE_NAME
fi
# Copy prepare_guest.sh to VM
mkdir -p $STAGING_DIR/opt/stack/
cp $TOP_DIR/prepare_guest.sh $STAGING_DIR/opt/stack/prepare_guest.sh
@ -53,5 +75,7 @@ cp $STAGING_DIR/etc/rc.local $STAGING_DIR/etc/rc.local.preparebackup
# run prepare_guest.sh on boot
cat <<EOF >$STAGING_DIR/etc/rc.local
GUEST_PASSWORD=$GUEST_PASSWORD STAGING_DIR=/ DO_TGZ=0 bash /opt/stack/prepare_guest.sh > /opt/stack/prepare_guest.log 2>&1
GUEST_PASSWORD=$GUEST_PASSWORD STAGING_DIR=/ \
DO_TGZ=0 XS_TOOLS_PATH=$XS_TOOLS_PATH \
bash /opt/stack/prepare_guest.sh > /opt/stack/prepare_guest.log 2>&1
EOF