Merge "Make it easier to use Precise or Oneric with XenServer DevStack"
This commit is contained in:
commit
d85e965104
@ -44,19 +44,14 @@ if [ ! -d $STAGING_DIR/etc ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Directory where our conf files are stored
|
|
||||||
FILES_DIR=$TOP_DIR/files
|
|
||||||
TEMPLATES_DIR=$TOP_DIR/templates
|
|
||||||
|
|
||||||
# Directory for supporting script files
|
|
||||||
SCRIPT_DIR=$TOP_DIR/scripts
|
|
||||||
|
|
||||||
# Version of ubuntu with which we are working
|
|
||||||
UBUNTU_VERSION=`cat $STAGING_DIR/etc/lsb-release | grep "DISTRIB_CODENAME=" | sed "s/DISTRIB_CODENAME=//"`
|
|
||||||
KERNEL_VERSION=`ls $STAGING_DIR/boot/vmlinuz* | head -1 | sed "s/.*vmlinuz-//"`
|
|
||||||
|
|
||||||
# Configure dns (use same dns as dom0)
|
# Configure dns (use same dns as dom0)
|
||||||
cp /etc/resolv.conf $STAGING_DIR/etc/resolv.conf
|
# but only when not precise
|
||||||
|
if [ "$UBUNTU_INST_RELEASE" != "precise" ]; then
|
||||||
|
cp /etc/resolv.conf $STAGING_DIR/etc/resolv.conf
|
||||||
|
elif [ "$MGT_IP" != "dhcp" ] && [ "$PUB_IP" != "dhcp" ]; then
|
||||||
|
echo "Configuration without DHCP not supported on Precise"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Copy over devstack
|
# Copy over devstack
|
||||||
rm -f /tmp/devstack.tar
|
rm -f /tmp/devstack.tar
|
||||||
@ -90,6 +85,7 @@ EOF
|
|||||||
|
|
||||||
# Configure the network
|
# Configure the network
|
||||||
INTERFACES=$STAGING_DIR/etc/network/interfaces
|
INTERFACES=$STAGING_DIR/etc/network/interfaces
|
||||||
|
TEMPLATES_DIR=$TOP_DIR/templates
|
||||||
cp $TEMPLATES_DIR/interfaces.in $INTERFACES
|
cp $TEMPLATES_DIR/interfaces.in $INTERFACES
|
||||||
if [ $VM_IP == "dhcp" ]; then
|
if [ $VM_IP == "dhcp" ]; then
|
||||||
echo 'eth1 on dhcp'
|
echo 'eth1 on dhcp'
|
||||||
|
@ -169,7 +169,7 @@ fi
|
|||||||
HOST_IP=${HOST_IP:-`ifconfig xenbr0 | grep "inet addr" | cut -d ":" -f2 | sed "s/ .*//"`}
|
HOST_IP=${HOST_IP:-`ifconfig xenbr0 | grep "inet addr" | cut -d ":" -f2 | sed "s/ .*//"`}
|
||||||
|
|
||||||
# Set up ip forwarding, but skip on xcp-xapi
|
# Set up ip forwarding, but skip on xcp-xapi
|
||||||
if [ -a /etc/sysconfig/network]; then
|
if [ -a /etc/sysconfig/network ]; then
|
||||||
if ! grep -q "FORWARD_IPV4=YES" /etc/sysconfig/network; then
|
if ! grep -q "FORWARD_IPV4=YES" /etc/sysconfig/network; then
|
||||||
# FIXME: This doesn't work on reboot!
|
# FIXME: This doesn't work on reboot!
|
||||||
echo "FORWARD_IPV4=YES" >> /etc/sysconfig/network
|
echo "FORWARD_IPV4=YES" >> /etc/sysconfig/network
|
||||||
@ -218,7 +218,7 @@ fi
|
|||||||
#
|
#
|
||||||
|
|
||||||
GUEST_NAME=${GUEST_NAME:-"DevStackOSDomU"}
|
GUEST_NAME=${GUEST_NAME:-"DevStackOSDomU"}
|
||||||
TNAME="devstack_template_folsom_11.10"
|
TNAME="devstack_template"
|
||||||
SNAME_PREPARED="template_prepared"
|
SNAME_PREPARED="template_prepared"
|
||||||
SNAME_FIRST_BOOT="before_first_boot"
|
SNAME_FIRST_BOOT="before_first_boot"
|
||||||
|
|
||||||
@ -242,19 +242,6 @@ if [ -z "$templateuuid" ]; then
|
|||||||
# Install Ubuntu over network
|
# Install Ubuntu over network
|
||||||
#
|
#
|
||||||
|
|
||||||
# try to find ubuntu template
|
|
||||||
ubuntu_template_name="Ubuntu 11.10 for DevStack (64-bit)"
|
|
||||||
ubuntu_template=$(xe_min template-list name-label="$ubuntu_template_name")
|
|
||||||
|
|
||||||
# remove template, if we are in CLEAN_TEMPLATE mode
|
|
||||||
if [ -n "$ubuntu_template" ]; then
|
|
||||||
if $CLEAN_TEMPLATES; then
|
|
||||||
xe template-param-clear param-name=other-config uuid=$ubuntu_template
|
|
||||||
xe template-uninstall template-uuid=$ubuntu_template force=true
|
|
||||||
ubuntu_template=""
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# always update the preseed file, incase we have a newer one
|
# always update the preseed file, incase we have a newer one
|
||||||
PRESEED_URL=${PRESEED_URL:-""}
|
PRESEED_URL=${PRESEED_URL:-""}
|
||||||
if [ -z "$PRESEED_URL" ]; then
|
if [ -z "$PRESEED_URL" ]; then
|
||||||
@ -272,13 +259,12 @@ if [ -z "$templateuuid" ]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "$ubuntu_template" ]; then
|
# Update the template
|
||||||
$TOP_DIR/scripts/xenoneirictemplate.sh $PRESEED_URL
|
$TOP_DIR/scripts/install_ubuntu_template.sh $PRESEED_URL
|
||||||
fi
|
|
||||||
|
|
||||||
# create a new VM with the given template
|
# create a new VM with the given template
|
||||||
# creating the correct VIFs and metadata
|
# creating the correct VIFs and metadata
|
||||||
$TOP_DIR/scripts/install-os-vpx.sh -t "$ubuntu_template_name" -v $VM_BR -m $MGT_BR -p $PUB_BR -l $GUEST_NAME -r $OSDOMU_MEM_MB -k "flat_network_bridge=${VM_BR}"
|
$TOP_DIR/scripts/install-os-vpx.sh -t "$UBUNTU_INST_TEMPLATE_NAME" -v $VM_BR -m $MGT_BR -p $PUB_BR -l $GUEST_NAME -r $OSDOMU_MEM_MB -k "flat_network_bridge=${VM_BR}"
|
||||||
|
|
||||||
# wait for install to finish
|
# wait for install to finish
|
||||||
wait_for_VM_to_halt
|
wait_for_VM_to_halt
|
||||||
|
78
tools/xen/scripts/install_ubuntu_template.sh
Executable file
78
tools/xen/scripts/install_ubuntu_template.sh
Executable file
@ -0,0 +1,78 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# This creates an Ubuntu Server 32bit or 64bit template
|
||||||
|
# on Xenserver 5.6.x, 6.0.x and 6.1.x
|
||||||
|
# The template does a net install only
|
||||||
|
#
|
||||||
|
# Based on a script by: David Markey <david.markey@citrix.com>
|
||||||
|
#
|
||||||
|
|
||||||
|
# Exit on errors
|
||||||
|
set -o errexit
|
||||||
|
# Echo commands
|
||||||
|
set -o xtrace
|
||||||
|
|
||||||
|
# This directory
|
||||||
|
BASE_DIR=$(cd $(dirname "$0") && pwd)
|
||||||
|
|
||||||
|
# For default setings see xenrc
|
||||||
|
source $BASE_DIR/../xenrc
|
||||||
|
|
||||||
|
# Get the params
|
||||||
|
preseed_url=$1
|
||||||
|
|
||||||
|
# Delete template or skip template creation as required
|
||||||
|
previous_template=$(xe template-list name-label="$UBUNTU_INST_TEMPLATE_NAME" \
|
||||||
|
params=uuid --minimal)
|
||||||
|
if [ -n "$previous_template" ]; then
|
||||||
|
if $CLEAN_TEMPLATES; then
|
||||||
|
xe template-param-clear param-name=other-config uuid=$previous_template
|
||||||
|
xe template-uninstall template-uuid=$previous_template force=true
|
||||||
|
else
|
||||||
|
echo "Template $UBUNTU_INST_TEMPLATE_NAME already present"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get built-in template
|
||||||
|
builtin_name="Debian Squeeze 6.0 (32-bit)"
|
||||||
|
builtin_uuid=$(xe template-list name-label="$builtin_name" --minimal)
|
||||||
|
if [[ -z $builtin_uuid ]]; then
|
||||||
|
echo "Cant find the Debian Squeeze 32bit template on your XenServer."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Clone built-in template to create new template
|
||||||
|
new_uuid=$(xe vm-clone uuid=$builtin_uuid \
|
||||||
|
new-name-label="$UBUNTU_INST_TEMPLATE_NAME")
|
||||||
|
|
||||||
|
# Some of these settings can be found in example preseed files
|
||||||
|
# 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 \
|
||||||
|
console-setup/ask_detect=false locale=${UBUNTU_INST_LOCALE} \
|
||||||
|
keyboard-configuration/layoutcode=${UBUNTU_INST_KEYBOARD} \
|
||||||
|
netcfg/choose_interface=${HOST_IP_IFACE} \
|
||||||
|
netcfg/get_hostname=os netcfg/get_domain=os auto \
|
||||||
|
url=${preseed_url}"
|
||||||
|
|
||||||
|
if [ "$NETINSTALLIP" != "dhcp" ]; then
|
||||||
|
netcfgargs="netcfg/disable_autoconfig=true \
|
||||||
|
netcfg/get_nameservers=${UBUNTU_INST_NAMESERVERS} \
|
||||||
|
netcfg/get_ipaddress=${UBUNTU_INST_IP} \
|
||||||
|
netcfg/get_netmask=${UBUNTU_INST_NETMASK} \
|
||||||
|
netcfg/get_gateway=${UBUNTU_INST_GATEWAY} \
|
||||||
|
netcfg/confirm_static=true"
|
||||||
|
pvargs="${pvargs} ${netcfgargs}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
xe template-param-set uuid=$new_uuid \
|
||||||
|
other-config:install-methods=http \
|
||||||
|
other-config:install-repository="$UBUNTU_INST_REPOSITORY" \
|
||||||
|
PV-args="$pvargs" \
|
||||||
|
other-config:debian-release="$UBUNTU_INST_RELEASE" \
|
||||||
|
other-config:default_template=true \
|
||||||
|
other-config:install-arch="$UBUNTU_INST_ARCH"
|
||||||
|
|
||||||
|
echo "Ubuntu template installed uuid:$new_uuid"
|
@ -1,63 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
## makeubuntu.sh, this creates Ubuntu server 11.10 32 and 64 bit templates
|
|
||||||
## on Xenserver 6.0.2 Net install only
|
|
||||||
## Original Author: David Markey <david.markey@citrix.com>
|
|
||||||
## Author: Renuka Apte <renuka.apte@citrix.com>
|
|
||||||
## This is not an officially supported guest OS on XenServer 6.0.2
|
|
||||||
|
|
||||||
BASE_DIR=$(cd $(dirname "$0") && pwd)
|
|
||||||
source $BASE_DIR/../../../localrc
|
|
||||||
|
|
||||||
LENNY=$(xe template-list name-label=Debian\ Squeeze\ 6.0\ \(32-bit\) --minimal)
|
|
||||||
|
|
||||||
if [[ -z $LENNY ]] ; then
|
|
||||||
echo "Cant find Squeeze 32bit template."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
distro="Ubuntu 11.10 for DevStack"
|
|
||||||
arches=("32-bit" "64-bit")
|
|
||||||
|
|
||||||
preseedurl=${1:-"http://images.ansolabs.com/devstackubuntupreseed.cfg"}
|
|
||||||
|
|
||||||
NETINSTALL_LOCALE=${NETINSTALL_LOCALE:-en_US}
|
|
||||||
NETINSTALL_KEYBOARD=${NETINSTALL_KEYBOARD:-us}
|
|
||||||
NETINSTALL_IFACE=${NETINSTALL_IFACE:-eth3}
|
|
||||||
|
|
||||||
for arch in ${arches[@]} ; do
|
|
||||||
echo "Attempting $distro ($arch)"
|
|
||||||
if [[ -n $(xe template-list name-label="$distro ($arch)" params=uuid --minimal) ]] ; then
|
|
||||||
echo "$distro ($arch)" already exists, Skipping
|
|
||||||
else
|
|
||||||
if [ -z $NETINSTALLIP ]
|
|
||||||
then
|
|
||||||
echo "NETINSTALLIP not set in localrc"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
# Some of these settings can be found in example preseed files
|
|
||||||
# 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 locale=${NETINSTALL_LOCALE} console-setup/ask_detect=false keyboard-configuration/layoutcode=${NETINSTALL_KEYBOARD} netcfg/choose_interface=${NETINSTALL_IFACE} netcfg/get_hostname=os netcfg/get_domain=os auto url=${preseedurl}"
|
|
||||||
if [ "$NETINSTALLIP" != "dhcp" ]
|
|
||||||
then
|
|
||||||
netcfgargs="netcfg/disable_autoconfig=true netcfg/get_nameservers=${NAMESERVERS} netcfg/get_ipaddress=${NETINSTALLIP} netcfg/get_netmask=${NETMASK} netcfg/get_gateway=${GATEWAY} netcfg/confirm_static=true"
|
|
||||||
pvargs="${pvargs} ${netcfgargs}"
|
|
||||||
fi
|
|
||||||
NEWUUID=$(xe vm-clone uuid=$LENNY new-name-label="$distro ($arch)")
|
|
||||||
xe template-param-set uuid=$NEWUUID other-config:install-methods=http,ftp \
|
|
||||||
other-config:install-repository=http://archive.ubuntu.net/ubuntu \
|
|
||||||
PV-args="$pvargs" \
|
|
||||||
other-config:debian-release=oneiric \
|
|
||||||
other-config:default_template=true
|
|
||||||
|
|
||||||
if [[ "$arch" == "32-bit" ]] ; then
|
|
||||||
xe template-param-set uuid=$NEWUUID other-config:install-arch="i386"
|
|
||||||
else
|
|
||||||
xe template-param-set uuid=$NEWUUID other-config:install-arch="amd64"
|
|
||||||
fi
|
|
||||||
echo "Success"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "Done"
|
|
@ -1,5 +1,10 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
#
|
||||||
|
# XenServer specific defaults for the /tools/xen/ scripts
|
||||||
|
# Similar to stackrc, you can override these in your localrc
|
||||||
|
#
|
||||||
|
|
||||||
# Name of this guest
|
# Name of this guest
|
||||||
GUEST_NAME=${GUEST_NAME:-DevStackOSDomU}
|
GUEST_NAME=${GUEST_NAME:-DevStackOSDomU}
|
||||||
|
|
||||||
@ -10,13 +15,18 @@ OSDOMU_MEM_MB=1024
|
|||||||
# VM Password
|
# VM Password
|
||||||
GUEST_PASSWORD=${GUEST_PASSWORD:-secrete}
|
GUEST_PASSWORD=${GUEST_PASSWORD:-secrete}
|
||||||
|
|
||||||
# Host Interface, i.e. the interface on the nova vm you want to expose the services on
|
# Host Interface, i.e. the interface on the nova vm you want to expose the
|
||||||
# Usually either eth2 (management network) or eth3 (public network)
|
# services on. Usually eth2 (management network) or eth3 (public network) and
|
||||||
# not eth0 (private network with XenServer host) or eth1 (VM traffic network)
|
# not eth0 (private network with XenServer host) or eth1 (VM traffic network)
|
||||||
|
# This is also used as the interface for the Ubuntu install
|
||||||
HOST_IP_IFACE=${HOST_IP_IFACE:-eth3}
|
HOST_IP_IFACE=${HOST_IP_IFACE:-eth3}
|
||||||
|
|
||||||
|
#
|
||||||
# Our nova host's network info
|
# Our nova host's network info
|
||||||
VM_IP=${VM_IP:-10.255.255.255} # A host-only ip that let's the interface come up, otherwise unused
|
#
|
||||||
|
|
||||||
|
# A host-only ip that let's the interface come up, otherwise unused
|
||||||
|
VM_IP=${VM_IP:-10.255.255.255}
|
||||||
MGT_IP=${MGT_IP:-172.16.100.55}
|
MGT_IP=${MGT_IP:-172.16.100.55}
|
||||||
PUB_IP=${PUB_IP:-192.168.1.55}
|
PUB_IP=${PUB_IP:-192.168.1.55}
|
||||||
|
|
||||||
@ -38,8 +48,28 @@ MGT_BR=${MGT_BR:-""}
|
|||||||
MGT_VLAN=${MGT_VLAN:-101}
|
MGT_VLAN=${MGT_VLAN:-101}
|
||||||
MGT_DEV=${MGT_DEV:-eth0}
|
MGT_DEV=${MGT_DEV:-eth0}
|
||||||
|
|
||||||
# Guest installer network
|
# Decide if you should enable eth0,
|
||||||
|
# the guest installer network
|
||||||
|
# You need to disable this on xcp-xapi on Ubuntu 12.04
|
||||||
ENABLE_GI=true
|
ENABLE_GI=true
|
||||||
|
|
||||||
# Source params
|
# Ubuntu install settings
|
||||||
|
UBUNTU_INST_RELEASE="oneiric"
|
||||||
|
UBUNTU_INST_TEMPLATE_NAME="Ubuntu 11.10 (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
|
||||||
|
# 11.10 is only really supported with XenServer 6.0.2 and later
|
||||||
|
UBUNTU_INST_ARCH="amd64"
|
||||||
|
UBUNTU_INST_REPOSITORY="http://archive.ubuntu.net/ubuntu"
|
||||||
|
UBUNTU_INST_LOCALE="en_US"
|
||||||
|
UBUNTU_INST_KEYBOARD="us"
|
||||||
|
# network configuration for HOST_IP_IFACE during install
|
||||||
|
UBUNTU_INST_IP="dhcp"
|
||||||
|
UBUNTU_INST_NAMESERVERS=""
|
||||||
|
UBUNTU_INST_NETMASK=""
|
||||||
|
UBUNTU_INST_GATEWAY=""
|
||||||
|
|
||||||
|
# Load stackrc defaults
|
||||||
|
# then override with settings from localrc
|
||||||
cd ../.. && source ./stackrc && cd $TOP_DIR
|
cd ../.. && source ./stackrc && cd $TOP_DIR
|
||||||
|
Loading…
Reference in New Issue
Block a user