From 6e49cab0913c13cb2fbf2620a9abe20cfc5f7ce3 Mon Sep 17 00:00:00 2001 From: Jianghua Wang Date: Wed, 22 Feb 2017 11:42:22 +0800 Subject: [PATCH] Xen: support Ubuntu Xenial for xen DevStack Upgrade xen tool to install Ubuntu Xenial; change the upstart task to systemd task to finish the OpenStack installation by using devstack. Change-Id: I8129923be3c41e7f60e9d32348a5ea8e07d4845b --- tools/xen/build_xva.sh | 72 ++++++++++---------- tools/xen/install_os_domU.sh | 2 +- tools/xen/scripts/install_ubuntu_template.sh | 2 +- tools/xen/xenrc | 4 +- 4 files changed, 39 insertions(+), 41 deletions(-) diff --git a/tools/xen/build_xva.sh b/tools/xen/build_xva.sh index 25bf58cb8a..34ef719ab9 100755 --- a/tools/xen/build_xva.sh +++ b/tools/xen/build_xva.sh @@ -96,48 +96,27 @@ mkdir -p $STAGING_DIR/opt/stack/devstack tar xf /tmp/devstack.tar -C $STAGING_DIR/opt/stack/devstack cd $TOP_DIR -# Create an upstart job (task) for devstack, which can interact with the console -cat >$STAGING_DIR/etc/init/devstack.conf << EOF -start on stopped rc RUNLEVEL=[2345] +# Create an systemd task for devstack +cat >$STAGING_DIR/etc/systemd/system/devstack.service << EOF +[Unit] +Description=Install OpenStack by DevStack -console output -task +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStartPre=/bin/rm -f /opt/stack/runsh.succeeded +ExecStart=/bin/su -c "/opt/stack/run.sh" stack +StandardOutput=tty +StandardError=tty -pre-start script - rm -f /opt/stack/runsh.succeeded -end script +[Install] +WantedBy=multi-user.target -script - initctl stop hvc0 || true - - # Read any leftover characters from standard input - while read -n 1 -s -t 0.1 -r ignored; do - true - done - - clear - - chown -R $STACK_USER /opt/stack - - su -c "/opt/stack/run.sh" $STACK_USER - - # Update /etc/issue - { - echo "OpenStack VM - Installed by DevStack" - IPADDR=\$(ip -4 address show eth0 | sed -n 's/.*inet \\([0-9\.]\\+\\).*/\1/p') - echo " Management IP: \$IPADDR" - echo -n " Devstack run: " - if [ -e /opt/stack/runsh.succeeded ]; then - echo "SUCCEEDED" - else - echo "FAILED" - fi - echo "" - } > /etc/issue - initctl start hvc0 > /dev/null 2>&1 -end script EOF +# enable this service +ln -s $STAGING_DIR/etc/systemd/system/devstack.service $STAGING_DIR/etc/systemd/system/multi-user.target.wants/devstack.service + # Configure the hostname echo $GUEST_NAME > $STAGING_DIR/etc/hostname @@ -178,6 +157,8 @@ set -eux ( flock -n 9 || exit 1 + sudo chown -R stack /opt/stack + [ -e /opt/stack/runsh.succeeded ] && rm /opt/stack/runsh.succeeded echo \$\$ >> /opt/stack/run_sh.pid @@ -187,7 +168,24 @@ set -eux # Got to the end - success touch /opt/stack/runsh.succeeded + + # Update /etc/issue + ( + echo "OpenStack VM - Installed by DevStack" + IPADDR=$(ip -4 address show eth0 | sed -n 's/.*inet \([0-9\.]\+\).*/\1/p') + echo " Management IP: $IPADDR" + echo -n " Devstack run: " + if [ -e /opt/stack/runsh.succeeded ]; then + echo "SUCCEEDED" + else + echo "FAILED" + fi + echo "" + ) > /opt/stack/issue + sudo cp /opt/stack/issue /etc/issue + rm /opt/stack/run_sh.pid ) 9> /opt/stack/.runsh_lock EOF + chmod 755 $STAGING_DIR/opt/stack/run.sh diff --git a/tools/xen/install_os_domU.sh b/tools/xen/install_os_domU.sh index 66b9eda474..d2e2c572c6 100755 --- a/tools/xen/install_os_domU.sh +++ b/tools/xen/install_os_domU.sh @@ -424,7 +424,7 @@ else echo "looking at the console of your domU / checking the log files." echo "" echo "ssh into your domU now: 'ssh stack@$OS_VM_MANAGEMENT_ADDRESS' using your password" - echo "and then do: 'sudo service devstack status' to check if devstack is still running." + echo "and then do: 'sudo systemctl status devstack' to check if devstack is still running." echo "Check that /opt/stack/runsh.succeeded exists" echo "" echo "When devstack completes, you can visit the OpenStack Dashboard" diff --git a/tools/xen/scripts/install_ubuntu_template.sh b/tools/xen/scripts/install_ubuntu_template.sh index d80ed095e8..6ea364255e 100755 --- a/tools/xen/scripts/install_ubuntu_template.sh +++ b/tools/xen/scripts/install_ubuntu_template.sh @@ -50,7 +50,7 @@ disk_size=$(($OSDOMU_VDI_GB * 1024 * 1024 * 1024)) # however these need to be answered before the netinstall # is ready to fetch the preseed file, and as such must be here # to get a fully automated install -pvargs="-- quiet console=hvc0 partman/default_filesystem=ext3 \ +pvargs="quiet console=hvc0 partman/default_filesystem=ext3 \ console-setup/ask_detect=false locale=${UBUNTU_INST_LOCALE} \ keyboard-configuration/layoutcode=${UBUNTU_INST_KEYBOARD} \ netcfg/choose_interface=eth0 \ diff --git a/tools/xen/xenrc b/tools/xen/xenrc index 2161247b76..60be02f3fe 100644 --- a/tools/xen/xenrc +++ b/tools/xen/xenrc @@ -63,8 +63,8 @@ PUB_IP=${PUB_IP:-172.24.4.10} PUB_NETMASK=${PUB_NETMASK:-255.255.255.0} # Ubuntu install settings -UBUNTU_INST_RELEASE="trusty" -UBUNTU_INST_TEMPLATE_NAME="Ubuntu 14.04 (64-bit) for DevStack" +UBUNTU_INST_RELEASE="xenial" +UBUNTU_INST_TEMPLATE_NAME="Ubuntu 16.04 (64-bit) for DevStack" # For 12.04 use "precise" and update template name # However, for 12.04, you should be using # XenServer 6.1 and later or XCP 1.6 or later