diff --git a/tools/xen/devstackubuntu_latecommand.sh b/tools/xen/devstackubuntu_latecommand.sh new file mode 100644 index 0000000000..2afbe2cdf3 --- /dev/null +++ b/tools/xen/devstackubuntu_latecommand.sh @@ -0,0 +1,14 @@ +#!/bin/bash +set -eux + +# Need to set barrier=0 to avoid a Xen bug +# https://bugs.launchpad.net/ubuntu/+source/linux/+bug/824089 +sed -i -e 's/errors=/barrier=0,errors=/' /etc/fstab + +# Allow root to login with a password +sed -i -e 's/.*PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config + +# Install the XenServer tools so IP addresses are reported +wget --no-proxy @XS_TOOLS_URL@ -O /root/tools.deb +dpkg -i /root/tools.deb +rm /root/tools.deb diff --git a/tools/xen/devstackubuntupreseed.cfg b/tools/xen/devstackubuntupreseed.cfg index 94e6e96625..80f334ba8e 100644 --- a/tools/xen/devstackubuntupreseed.cfg +++ b/tools/xen/devstackubuntupreseed.cfg @@ -331,10 +331,11 @@ d-i apt-setup/backports boolean true tasksel tasksel/first multiselect openssh-server # Individual additional packages to install -#d-i pkgsel/include string openssh-server build-essential +d-i pkgsel/include string cracklib-runtime curl wget ssh openssh-server tcpdump ethtool git sudo python-netaddr coreutils + # Whether to upgrade packages after debootstrap. # Allowed values: none, safe-upgrade, full-upgrade -#d-i pkgsel/upgrade select none +d-i pkgsel/upgrade select safe-upgrade # Language pack selection #d-i pkgsel/language-packs multiselect de, en, zh @@ -467,4 +468,4 @@ xserver-xorg xserver-xorg/config/monitor/mode-list \ # still a usable /target directory. You can chroot to /target and use it # directly, or use the apt-install and in-target commands to easily install # packages and run commands in the target system. -#d-i preseed/late_command string apt-install zsh; in-target chsh -s /bin/zsh +d-i preseed/late_command string diff --git a/tools/xen/install_os_domU.sh b/tools/xen/install_os_domU.sh index 546ead6127..8a0725152f 100755 --- a/tools/xen/install_os_domU.sh +++ b/tools/xen/install_os_domU.sh @@ -178,12 +178,32 @@ if [ -z "$templateuuid" ]; then PRESEED_URL=${PRESEED_URL:-""} if [ -z "$PRESEED_URL" ]; then PRESEED_URL="${HOST_IP}/devstackubuntupreseed.cfg" + HTTP_SERVER_LOCATION="/opt/xensource/www" if [ ! -e $HTTP_SERVER_LOCATION ]; then HTTP_SERVER_LOCATION="/var/www/html" mkdir -p $HTTP_SERVER_LOCATION fi + + # Copy the tools DEB to the XS web server + XS_TOOLS_URL="https://github.com/downloads/citrix-openstack/warehouse/xe-guest-utilities_5.6.100-651_amd64.deb" + 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 -1 $ISO_DIR/xs-tools-*.iso | head -1) + TMP_DIR=/tmp/temp.$RANDOM + mkdir -p $TMP_DIR + mount -o loop $TOOLS_ISO $TMP_DIR + DEB_FILE=$(ls $TMP_DIR/Linux/*amd64.deb) + cp $DEB_FILE $HTTP_SERVER_LOCATION + umount $TMP_DIR + rmdir $TMP_DIR + XS_TOOLS_URL=${HOST_IP}/$(basename $DEB_FILE) + fi + cp -f $THIS_DIR/devstackubuntupreseed.cfg $HTTP_SERVER_LOCATION + cp -f $THIS_DIR/devstackubuntu_latecommand.sh $HTTP_SERVER_LOCATION/latecommand.sh sed \ -e "s,\(d-i mirror/http/hostname string\).*,\1 $UBUNTU_INST_HTTP_HOSTNAME,g" \ @@ -191,7 +211,12 @@ if [ -z "$templateuuid" ]; then -e "s,\(d-i mirror/http/proxy string\).*,\1 $UBUNTU_INST_HTTP_PROXY,g" \ -e "s,\(d-i passwd/root-password password\).*,\1 $GUEST_PASSWORD,g" \ -e "s,\(d-i passwd/root-password-again password\).*,\1 $GUEST_PASSWORD,g" \ + -e "s,\(d-i preseed/late_command string\).*,\1 in-target mkdir -p /tmp; in-target wget --no-proxy ${HOST_IP}/latecommand.sh -O /root/latecommand.sh; in-target bash /root/latecommand.sh,g" \ -i "${HTTP_SERVER_LOCATION}/devstackubuntupreseed.cfg" + + sed \ + -e "s,@XS_TOOLS_URL@,$XS_TOOLS_URL,g" \ + -i "${HTTP_SERVER_LOCATION}/latecommand.sh" fi # Update the template diff --git a/tools/xen/prepare_guest.sh b/tools/xen/prepare_guest.sh index 7fe032a064..6de1afc199 100755 --- a/tools/xen/prepare_guest.sh +++ b/tools/xen/prepare_guest.sh @@ -16,9 +16,8 @@ set -o xtrace # Configurable nuggets GUEST_PASSWORD="$1" -XS_TOOLS_PATH="$2" -STACK_USER="$3" -DOMZERO_USER="$4" +STACK_USER="$2" +DOMZERO_USER="$3" function setup_domzero_user { @@ -70,16 +69,6 @@ EOF } -# Install basics -apt-get update -apt-get install -y cracklib-runtime curl wget ssh openssh-server tcpdump ethtool -apt-get install -y git sudo python-netaddr coreutils - -# Install XenServer guest utilities -dpkg -i $XS_TOOLS_PATH -update-rc.d -f xe-linux-distribution remove -update-rc.d xe-linux-distribution defaults - # Make a small cracklib dictionary, so that passwd still works, but we don't # have the big dictionary. mkdir -p /usr/share/cracklib diff --git a/tools/xen/prepare_guest_template.sh b/tools/xen/prepare_guest_template.sh index 6cb2ca7099..6cddddaa84 100755 --- a/tools/xen/prepare_guest_template.sh +++ b/tools/xen/prepare_guest_template.sh @@ -46,28 +46,6 @@ 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 -1 $ISO_DIR/xs-tools-*.iso | head -1) - 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="https://github.com/downloads/citrix-openstack/warehouse/xe-guest-utilities_5.6.100-651_amd64.deb" - curl --no-sessionid -L -o "$XS_TOOLS_FILE_NAME" $TOOLS_URL - 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 @@ -79,14 +57,10 @@ cp $STAGING_DIR/etc/rc.local $STAGING_DIR/etc/rc.local.preparebackup cat <$STAGING_DIR/etc/rc.local #!/bin/sh -e bash /opt/stack/prepare_guest.sh \\ - "$GUEST_PASSWORD" "$XS_TOOLS_PATH" "$STACK_USER" "$DOMZERO_USER" \\ + "$GUEST_PASSWORD" "$STACK_USER" "$DOMZERO_USER" \\ > /opt/stack/prepare_guest.log 2>&1 EOF -# Need to set barrier=0 to avoid a Xen bug -# https://bugs.launchpad.net/ubuntu/+source/linux/+bug/824089 -sed -i -e 's/errors=/barrier=0,errors=/' $STAGING_DIR/etc/fstab - # Update ubuntu repositories cat > $STAGING_DIR/etc/apt/sources.list << EOF deb http://${UBUNTU_INST_HTTP_HOSTNAME}${UBUNTU_INST_HTTP_DIRECTORY} ${UBUNTU_INST_RELEASE} main restricted