| ... | ... |
@@ -18,6 +18,7 @@ set -o xtrace |
| 18 | 18 |
GUEST_PASSWORD=${GUEST_PASSWORD:-secrete}
|
| 19 | 19 |
STAGING_DIR=${STAGING_DIR:-stage}
|
| 20 | 20 |
DO_TGZ=${DO_TGZ:-1}
|
| 21 |
+XS_TOOLS_PATH=${XS_TOOLS_PATH:-"/root/xs-tools.deb"}
|
|
| 21 | 22 |
|
| 22 | 23 |
# Install basics |
| 23 | 24 |
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 |
| 26 | 26 |
chroot $STAGING_DIR pip install xenapi |
| 27 | 27 |
|
| 28 | 28 |
# Install XenServer guest utilities |
| 29 |
-XEGUEST=xe-guest-utilities_5.6.100-651_amd64.deb |
|
| 30 |
-wget http://images.ansolabs.com/xen/$XEGUEST -O $XEGUEST |
|
| 31 |
-cp $XEGUEST $STAGING_DIR/root |
|
| 32 |
-chroot $STAGING_DIR dpkg -i /root/$XEGUEST |
|
| 29 |
+cp $XS_TOOLS_PATH ${STAGING_DIR}${XS_TOOLS_PATH}
|
|
| 30 |
+chroot $STAGING_DIR dpkg -i $XS_TOOLS_PATH |
|
| 33 | 31 |
chroot $STAGING_DIR update-rc.d -f xe-linux-distribution remove |
| 34 | 32 |
chroot $STAGING_DIR update-rc.d xe-linux-distribution defaults |
| 35 | 33 |
|
| ... | ... |
@@ -44,6 +44,28 @@ if [ ! -d $STAGING_DIR/etc ]; then |
| 44 | 44 |
exit 1 |
| 45 | 45 |
fi |
| 46 | 46 |
|
| 47 |
+# Copy XenServer tools deb into the VM |
|
| 48 |
+ISO_DIR="/opt/xensource/packages/iso" |
|
| 49 |
+XS_TOOLS_FILE_NAME="xs-tools.deb" |
|
| 50 |
+XS_TOOLS_PATH="/root/$XS_TOOLS_FILE_NAME" |
|
| 51 |
+if [ -e "$ISO_DIR" ]; then |
|
| 52 |
+ TOOLS_ISO=$(ls $ISO_DIR/xs-tools-*.iso) |
|
| 53 |
+ TMP_DIR=/tmp/temp.$RANDOM |
|
| 54 |
+ mkdir -p $TMP_DIR |
|
| 55 |
+ mount -o loop $TOOLS_ISO $TMP_DIR |
|
| 56 |
+ DEB_FILE=$(ls $TMP_DIR/Linux/*amd64.deb) |
|
| 57 |
+ echo "Copying XenServer tools into VM from: $DEB_FILE" |
|
| 58 |
+ cp $DEB_FILE "${STAGING_DIR}${XS_TOOLS_PATH}"
|
|
| 59 |
+ umount $TMP_DIR |
|
| 60 |
+ rm -rf $TMP_DIR |
|
| 61 |
+else |
|
| 62 |
+ echo "WARNING: no XenServer tools found, falling back to 5.6 tools" |
|
| 63 |
+ TOOLS_URL="http://images.ansolabs.com/xen/xe-guest-utilities_5.6.100-651_amd64.deb" |
|
| 64 |
+ wget $TOOLS_URL -O $XS_TOOLS_FILE_NAME |
|
| 65 |
+ cp $XS_TOOLS_FILE_NAME "${STAGING_DIR}${XS_TOOLS_PATH}"
|
|
| 66 |
+ rm -rf $XS_TOOLS_FILE_NAME |
|
| 67 |
+fi |
|
| 68 |
+ |
|
| 47 | 69 |
# Copy prepare_guest.sh to VM |
| 48 | 70 |
mkdir -p $STAGING_DIR/opt/stack/ |
| 49 | 71 |
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 |
| 53 | 53 |
|
| 54 | 54 |
# run prepare_guest.sh on boot |
| 55 | 55 |
cat <<EOF >$STAGING_DIR/etc/rc.local |
| 56 |
-GUEST_PASSWORD=$GUEST_PASSWORD STAGING_DIR=/ DO_TGZ=0 bash /opt/stack/prepare_guest.sh > /opt/stack/prepare_guest.log 2>&1 |
|
| 56 |
+GUEST_PASSWORD=$GUEST_PASSWORD STAGING_DIR=/ \ |
|
| 57 |
+ DO_TGZ=0 XS_TOOLS_PATH=$XS_TOOLS_PATH \ |
|
| 58 |
+ bash /opt/stack/prepare_guest.sh > /opt/stack/prepare_guest.log 2>&1 |
|
| 57 | 59 |
EOF |