Merge "XenAPI: Move some boot-time functions to install-time"
This commit is contained in:
commit
b2b19040d4
14
tools/xen/devstackubuntu_latecommand.sh
Normal file
14
tools/xen/devstackubuntu_latecommand.sh
Normal file
@ -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
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 <<EOF >$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
|
||||
|
Loading…
x
Reference in New Issue
Block a user