Merge "xenapi - cleanup"
This commit is contained in:
commit
23bdb93293
@ -1,5 +1,4 @@
|
|||||||
Getting Started With XenServer 5.6 and Devstack
|
# Getting Started With XenServer 5.6 and Devstack
|
||||||
===============================================
|
|
||||||
The purpose of the code in this directory it to help developers bootstrap
|
The purpose of the code in this directory it to help developers bootstrap
|
||||||
a XenServer 5.6 (or greater) + Openstack development environment. This file gives
|
a XenServer 5.6 (or greater) + Openstack development environment. This file gives
|
||||||
some pointers on how to get started.
|
some pointers on how to get started.
|
||||||
@ -9,8 +8,7 @@ The Openstack services are configured to run within a "privileged" virtual
|
|||||||
machine on the Xenserver host (called OS domU). The VM uses the XAPI toolstack
|
machine on the Xenserver host (called OS domU). The VM uses the XAPI toolstack
|
||||||
to communicate with the host.
|
to communicate with the host.
|
||||||
|
|
||||||
Step 1: Install Xenserver
|
## Step 1: Install Xenserver
|
||||||
------------------------
|
|
||||||
Install XenServer 5.6+ on a clean box. You can get XenServer by signing
|
Install XenServer 5.6+ on a clean box. You can get XenServer by signing
|
||||||
up for an account on citrix.com, and then visiting:
|
up for an account on citrix.com, and then visiting:
|
||||||
https://www.citrix.com/English/ss/downloads/details.asp?downloadId=2311504&productId=683148
|
https://www.citrix.com/English/ss/downloads/details.asp?downloadId=2311504&productId=683148
|
||||||
@ -25,16 +23,14 @@ getting started (Settings like this have been used with a laptop + cheap wifi ro
|
|||||||
* XenServer Gateway: 192.168.1.1
|
* XenServer Gateway: 192.168.1.1
|
||||||
* XenServer DNS: 192.168.1.1
|
* XenServer DNS: 192.168.1.1
|
||||||
|
|
||||||
Step 2: Download devstack
|
## Step 2: Download devstack
|
||||||
--------------------------
|
|
||||||
On your XenServer host, run the following commands as root:
|
On your XenServer host, run the following commands as root:
|
||||||
|
|
||||||
wget --no-check-certificate https://github.com/openstack-dev/devstack/zipball/master
|
wget --no-check-certificate https://github.com/openstack-dev/devstack/zipball/master
|
||||||
unzip -o master -d ./devstack
|
unzip -o master -d ./devstack
|
||||||
cd devstack/*/
|
cd devstack/*/
|
||||||
|
|
||||||
Step 3: Configure your localrc inside the devstack directory
|
## Step 3: Configure your localrc inside the devstack directory
|
||||||
------------------------------------------------------------
|
|
||||||
Devstack uses a localrc for user-specific configuration. Note that
|
Devstack uses a localrc for user-specific configuration. Note that
|
||||||
the XENAPI_PASSWORD must be your dom0 root password.
|
the XENAPI_PASSWORD must be your dom0 root password.
|
||||||
Of course, use real passwords if this machine is exposed.
|
Of course, use real passwords if this machine is exposed.
|
||||||
@ -43,12 +39,18 @@ Of course, use real passwords if this machine is exposed.
|
|||||||
MYSQL_PASSWORD=my_super_secret
|
MYSQL_PASSWORD=my_super_secret
|
||||||
SERVICE_TOKEN=my_super_secret
|
SERVICE_TOKEN=my_super_secret
|
||||||
ADMIN_PASSWORD=my_super_secret
|
ADMIN_PASSWORD=my_super_secret
|
||||||
SERVICE_PASSWORD=$ADMIN_PASSWORD
|
SERVICE_PASSWORD=my_super_secret
|
||||||
RABBIT_PASSWORD=my_super_secret
|
RABBIT_PASSWORD=my_super_secret
|
||||||
# This is the password for your guest (for both stack and root users)
|
SWIFT_HASH="66a3d6b56c1f479c8b4e70ab5c2000f5"
|
||||||
|
# This is the password for the OpenStack VM (for both stack and root users)
|
||||||
GUEST_PASSWORD=my_super_secret
|
GUEST_PASSWORD=my_super_secret
|
||||||
|
|
||||||
|
# XenAPI parameters
|
||||||
# IMPORTANT: The following must be set to your dom0 root password!
|
# IMPORTANT: The following must be set to your dom0 root password!
|
||||||
XENAPI_PASSWORD=my_super_secret
|
XENAPI_PASSWORD=my_xenserver_root_password
|
||||||
|
XENAPI_CONNECTION_URL="http://address_of_your_xenserver"
|
||||||
|
VNCSERVER_PROXYCLIENT_ADDRESS=address_of_your_xenserver
|
||||||
|
|
||||||
# Do not download the usual images yet!
|
# Do not download the usual images yet!
|
||||||
IMAGE_URLS=""
|
IMAGE_URLS=""
|
||||||
# Explicitly set virt driver here
|
# Explicitly set virt driver here
|
||||||
@ -60,34 +62,32 @@ Of course, use real passwords if this machine is exposed.
|
|||||||
# Host Interface, i.e. the interface on the nova vm you want to expose the
|
# Host Interface, i.e. the interface on the nova vm you want to expose the
|
||||||
# services on. Usually eth2 (management network) or eth3 (public network) and
|
# 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
|
|
||||||
# The default is eth3.
|
# The default is eth3.
|
||||||
# HOST_IP_IFACE=eth3
|
# HOST_IP_IFACE=eth3
|
||||||
|
|
||||||
|
# Settings for netinstalling Ubuntu
|
||||||
|
# UBUNTU_INST_RELEASE=precise
|
||||||
|
|
||||||
# First time Ubuntu network install params
|
# First time Ubuntu network install params
|
||||||
NETINSTALLIP="dhcp"
|
# UBUNTU_INST_IFACE="eth3"
|
||||||
NAMESERVERS=""
|
# UBUNTU_INST_IP="dhcp"
|
||||||
NETMASK=""
|
|
||||||
GATEWAY=""
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
Step 4: Run ./install_os_domU.sh from the tools/xen directory
|
## Step 4: Run `./install_os_domU.sh` from the `tools/xen` directory
|
||||||
-------------------------------------------------------------
|
|
||||||
cd tools/xen
|
cd tools/xen
|
||||||
./install_os_domU.sh
|
./install_os_domU.sh
|
||||||
|
|
||||||
Once this script finishes executing, log into the VM (openstack domU)
|
Once this script finishes executing, log into the VM (openstack domU) that it
|
||||||
that it installed and tail the run.sh.log file. You will need to wait
|
installed and tail the run.sh.log file. You will need to wait until it run.sh
|
||||||
until it run.sh has finished executing.
|
has finished executing.
|
||||||
|
|
||||||
|
## Step 5: Do cloudy stuff!
|
||||||
Step 5: Do cloudy stuff!
|
|
||||||
--------------------------
|
|
||||||
* Play with horizon
|
* Play with horizon
|
||||||
* Play with the CLI
|
* Play with the CLI
|
||||||
* Log bugs to devstack and core projects, and submit fixes!
|
* Log bugs to devstack and core projects, and submit fixes!
|
||||||
|
|
||||||
Step 6: Run from snapshot
|
## Step 6: Run from snapshot
|
||||||
-------------------------
|
|
||||||
If you want to quicky re-run devstack from a clean state,
|
If you want to quicky re-run devstack from a clean state,
|
||||||
using the same settings you used in your previous run,
|
using the same settings you used in your previous run,
|
||||||
you can revert the DomU to the snapshot called "before_first_boot"
|
you can revert the DomU to the snapshot called `before_first_boot`
|
||||||
|
@ -1,15 +1,13 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# This script is a level script
|
# This script must be run on a XenServer or XCP machine
|
||||||
# It must be run on a XenServer or XCP machine
|
|
||||||
#
|
#
|
||||||
# It creates a DomU VM that runs OpenStack services
|
# It creates a DomU VM that runs OpenStack services
|
||||||
#
|
#
|
||||||
# For more details see: README.md
|
# For more details see: README.md
|
||||||
|
|
||||||
# Exit on errors
|
|
||||||
set -o errexit
|
set -o errexit
|
||||||
# Echo commands
|
set -o nounset
|
||||||
set -o xtrace
|
set -o xtrace
|
||||||
|
|
||||||
# Abort if localrc is not set
|
# Abort if localrc is not set
|
||||||
@ -31,13 +29,12 @@ THIS_DIR=$(cd $(dirname "$0") && pwd)
|
|||||||
# xapi functions
|
# xapi functions
|
||||||
. $THIS_DIR/functions
|
. $THIS_DIR/functions
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Get Settings
|
# Get Settings
|
||||||
#
|
#
|
||||||
|
|
||||||
# Source params - override xenrc params in your localrc to suit your taste
|
# Source params - override xenrc params in your localrc to suit your taste
|
||||||
source xenrc
|
source $THIS_DIR/xenrc
|
||||||
|
|
||||||
xe_min()
|
xe_min()
|
||||||
{
|
{
|
||||||
|
@ -10,54 +10,51 @@
|
|||||||
# creating the user called "stack",
|
# creating the user called "stack",
|
||||||
# and shuts down the VM to signal the script has completed
|
# and shuts down the VM to signal the script has completed
|
||||||
|
|
||||||
set -x
|
set -o errexit
|
||||||
# Echo commands
|
set -o nounset
|
||||||
set -o xtrace
|
set -o xtrace
|
||||||
|
|
||||||
# Configurable nuggets
|
# Configurable nuggets
|
||||||
GUEST_PASSWORD=${GUEST_PASSWORD:-secrete}
|
GUEST_PASSWORD="$1"
|
||||||
STAGING_DIR=${STAGING_DIR:-stage}
|
XS_TOOLS_PATH="$2"
|
||||||
DO_TGZ=${DO_TGZ:-1}
|
STACK_USER="$3"
|
||||||
XS_TOOLS_PATH=${XS_TOOLS_PATH:-"/root/xs-tools.deb"}
|
|
||||||
STACK_USER=${STACK_USER:-stack}
|
|
||||||
|
|
||||||
# Install basics
|
# Install basics
|
||||||
chroot $STAGING_DIR apt-get update
|
apt-get update
|
||||||
chroot $STAGING_DIR apt-get install -y cracklib-runtime curl wget ssh openssh-server tcpdump ethtool
|
apt-get install -y cracklib-runtime curl wget ssh openssh-server tcpdump ethtool
|
||||||
chroot $STAGING_DIR apt-get install -y curl wget ssh openssh-server python-pip git vim-nox sudo
|
apt-get install -y curl wget ssh openssh-server python-pip git vim-nox sudo
|
||||||
chroot $STAGING_DIR pip install xenapi
|
pip install xenapi
|
||||||
|
|
||||||
# Install XenServer guest utilities
|
# Install XenServer guest utilities
|
||||||
cp $XS_TOOLS_PATH ${STAGING_DIR}${XS_TOOLS_PATH}
|
dpkg -i $XS_TOOLS_PATH
|
||||||
chroot $STAGING_DIR dpkg -i $XS_TOOLS_PATH
|
update-rc.d -f xe-linux-distribution remove
|
||||||
chroot $STAGING_DIR update-rc.d -f xe-linux-distribution remove
|
update-rc.d xe-linux-distribution defaults
|
||||||
chroot $STAGING_DIR update-rc.d xe-linux-distribution defaults
|
|
||||||
|
|
||||||
# Make a small cracklib dictionary, so that passwd still works, but we don't
|
# Make a small cracklib dictionary, so that passwd still works, but we don't
|
||||||
# have the big dictionary.
|
# have the big dictionary.
|
||||||
mkdir -p $STAGING_DIR/usr/share/cracklib
|
mkdir -p /usr/share/cracklib
|
||||||
echo a | chroot $STAGING_DIR cracklib-packer
|
echo a | cracklib-packer
|
||||||
|
|
||||||
# Make /etc/shadow, and set the root password
|
# Make /etc/shadow, and set the root password
|
||||||
chroot $STAGING_DIR "pwconv"
|
pwconv
|
||||||
echo "root:$GUEST_PASSWORD" | chroot $STAGING_DIR chpasswd
|
echo "root:$GUEST_PASSWORD" | chpasswd
|
||||||
|
|
||||||
# Put the VPX into UTC.
|
# Put the VPX into UTC.
|
||||||
rm -f $STAGING_DIR/etc/localtime
|
rm -f /etc/localtime
|
||||||
|
|
||||||
# Add stack user
|
# Add stack user
|
||||||
chroot $STAGING_DIR groupadd libvirtd
|
groupadd libvirtd
|
||||||
chroot $STAGING_DIR useradd $STACK_USER -s /bin/bash -d /opt/stack -G libvirtd
|
useradd $STACK_USER -s /bin/bash -d /opt/stack -G libvirtd
|
||||||
echo $STACK_USER:$GUEST_PASSWORD | chroot $STAGING_DIR chpasswd
|
echo $STACK_USER:$GUEST_PASSWORD | chpasswd
|
||||||
echo "$STACK_USER ALL=(ALL) NOPASSWD: ALL" >> $STAGING_DIR/etc/sudoers
|
echo "$STACK_USER ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
|
||||||
|
|
||||||
# Give ownership of /opt/stack to stack user
|
# Give ownership of /opt/stack to stack user
|
||||||
chroot $STAGING_DIR chown -R $STACK_USER /opt/stack
|
chown -R $STACK_USER /opt/stack
|
||||||
|
|
||||||
# Make our ip address hostnames look nice at the command prompt
|
# Make our ip address hostnames look nice at the command prompt
|
||||||
echo "export PS1='${debian_chroot:+($debian_chroot)}\\u@\\H:\\w\\$ '" >> $STAGING_DIR/opt/stack/.bashrc
|
echo "export PS1='${debian_chroot:+($debian_chroot)}\\u@\\H:\\w\\$ '" >> /opt/stack/.bashrc
|
||||||
echo "export PS1='${debian_chroot:+($debian_chroot)}\\u@\\H:\\w\\$ '" >> $STAGING_DIR/root/.bashrc
|
echo "export PS1='${debian_chroot:+($debian_chroot)}\\u@\\H:\\w\\$ '" >> /root/.bashrc
|
||||||
echo "export PS1='${debian_chroot:+($debian_chroot)}\\u@\\H:\\w\\$ '" >> $STAGING_DIR/etc/profile
|
echo "export PS1='${debian_chroot:+($debian_chroot)}\\u@\\H:\\w\\$ '" >> /etc/profile
|
||||||
|
|
||||||
function setup_vimrc {
|
function setup_vimrc {
|
||||||
if [ ! -e $1 ]; then
|
if [ ! -e $1 ]; then
|
||||||
@ -72,20 +69,15 @@ EOF
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Setup simple .vimrcs
|
# Setup simple .vimrcs
|
||||||
setup_vimrc $STAGING_DIR/root/.vimrc
|
setup_vimrc /root/.vimrc
|
||||||
setup_vimrc $STAGING_DIR/opt/stack/.vimrc
|
setup_vimrc /opt/stack/.vimrc
|
||||||
|
|
||||||
if [ "$DO_TGZ" = "1" ]; then
|
|
||||||
# Compress
|
|
||||||
rm -f stage.tgz
|
|
||||||
tar cfz stage.tgz stage
|
|
||||||
fi
|
|
||||||
|
|
||||||
# remove self from local.rc
|
# remove self from local.rc
|
||||||
# so this script is not run again
|
# so this script is not run again
|
||||||
rm -rf /etc/rc.local
|
rm -rf /etc/rc.local
|
||||||
mv /etc/rc.local.preparebackup /etc/rc.local
|
|
||||||
cp $STAGING_DIR/etc/rc.local $STAGING_DIR/etc/rc.local.backup
|
# Restore rc.local file
|
||||||
|
cp /etc/rc.local.preparebackup /etc/rc.local
|
||||||
|
|
||||||
# shutdown to notify we are done
|
# shutdown to notify we are done
|
||||||
shutdown -h now
|
shutdown -h now
|
||||||
|
@ -15,9 +15,8 @@
|
|||||||
# The resultant image is started by install_os_domU.sh,
|
# The resultant image is started by install_os_domU.sh,
|
||||||
# and once the VM has shutdown, build_xva.sh is run
|
# and once the VM has shutdown, build_xva.sh is run
|
||||||
|
|
||||||
# Exit on errors
|
|
||||||
set -o errexit
|
set -o errexit
|
||||||
# Echo commands
|
set -o nounset
|
||||||
set -o xtrace
|
set -o xtrace
|
||||||
|
|
||||||
# This directory
|
# This directory
|
||||||
@ -75,7 +74,8 @@ cp $STAGING_DIR/etc/rc.local $STAGING_DIR/etc/rc.local.preparebackup
|
|||||||
|
|
||||||
# run prepare_guest.sh on boot
|
# run prepare_guest.sh on boot
|
||||||
cat <<EOF >$STAGING_DIR/etc/rc.local
|
cat <<EOF >$STAGING_DIR/etc/rc.local
|
||||||
GUEST_PASSWORD=$GUEST_PASSWORD STAGING_DIR=/ \
|
#!/bin/sh -e
|
||||||
DO_TGZ=0 XS_TOOLS_PATH=$XS_TOOLS_PATH \
|
bash /opt/stack/prepare_guest.sh \\
|
||||||
bash /opt/stack/prepare_guest.sh > /opt/stack/prepare_guest.log 2>&1
|
"$GUEST_PASSWORD" "$XS_TOOLS_PATH" "$STACK_USER" \\
|
||||||
|
> /opt/stack/prepare_guest.log 2>&1
|
||||||
EOF
|
EOF
|
||||||
|
@ -7,9 +7,8 @@
|
|||||||
# Based on a script by: David Markey <david.markey@citrix.com>
|
# Based on a script by: David Markey <david.markey@citrix.com>
|
||||||
#
|
#
|
||||||
|
|
||||||
# Exit on errors
|
|
||||||
set -o errexit
|
set -o errexit
|
||||||
# Echo commands
|
set -o nounset
|
||||||
set -o xtrace
|
set -o xtrace
|
||||||
|
|
||||||
# This directory
|
# This directory
|
||||||
@ -54,11 +53,11 @@ disk_size=$(($OSDOMU_VDI_GB * 1024 * 1024 * 1024))
|
|||||||
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} \
|
console-setup/ask_detect=false locale=${UBUNTU_INST_LOCALE} \
|
||||||
keyboard-configuration/layoutcode=${UBUNTU_INST_KEYBOARD} \
|
keyboard-configuration/layoutcode=${UBUNTU_INST_KEYBOARD} \
|
||||||
netcfg/choose_interface=${HOST_IP_IFACE} \
|
netcfg/choose_interface=${UBUNTU_INST_IFACE} \
|
||||||
netcfg/get_hostname=os netcfg/get_domain=os auto \
|
netcfg/get_hostname=os netcfg/get_domain=os auto \
|
||||||
url=${preseed_url}"
|
url=${preseed_url}"
|
||||||
|
|
||||||
if [ "$NETINSTALLIP" != "dhcp" ]; then
|
if [ "$UBUNTU_INST_IP" != "dhcp" ]; then
|
||||||
netcfgargs="netcfg/disable_autoconfig=true \
|
netcfgargs="netcfg/disable_autoconfig=true \
|
||||||
netcfg/get_nameservers=${UBUNTU_INST_NAMESERVERS} \
|
netcfg/get_nameservers=${UBUNTU_INST_NAMESERVERS} \
|
||||||
netcfg/get_ipaddress=${UBUNTU_INST_IP} \
|
netcfg/get_ipaddress=${UBUNTU_INST_IP} \
|
||||||
|
@ -8,6 +8,9 @@
|
|||||||
# Name of this guest
|
# Name of this guest
|
||||||
GUEST_NAME=${GUEST_NAME:-DevStackOSDomU}
|
GUEST_NAME=${GUEST_NAME:-DevStackOSDomU}
|
||||||
|
|
||||||
|
# Template cleanup
|
||||||
|
CLEAN_TEMPLATES=${CLEAN_TEMPLATES:-false}
|
||||||
|
|
||||||
# Size of image
|
# Size of image
|
||||||
VDI_MB=${VDI_MB:-5000}
|
VDI_MB=${VDI_MB:-5000}
|
||||||
OSDOMU_MEM_MB=1024
|
OSDOMU_MEM_MB=1024
|
||||||
@ -19,7 +22,6 @@ GUEST_PASSWORD=${GUEST_PASSWORD:-secrete}
|
|||||||
# Host Interface, i.e. the interface on the nova vm you want to expose the
|
# Host Interface, i.e. the interface on the nova vm you want to expose the
|
||||||
# services on. Usually eth2 (management network) or eth3 (public network) and
|
# 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}
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -65,12 +67,11 @@ UBUNTU_INST_ARCH="amd64"
|
|||||||
UBUNTU_INST_REPOSITORY="http://archive.ubuntu.net/ubuntu"
|
UBUNTU_INST_REPOSITORY="http://archive.ubuntu.net/ubuntu"
|
||||||
UBUNTU_INST_LOCALE="en_US"
|
UBUNTU_INST_LOCALE="en_US"
|
||||||
UBUNTU_INST_KEYBOARD="us"
|
UBUNTU_INST_KEYBOARD="us"
|
||||||
# network configuration for HOST_IP_IFACE during install
|
# network configuration for ubuntu netinstall
|
||||||
|
UBUNTU_INST_IFACE="eth3"
|
||||||
UBUNTU_INST_IP="dhcp"
|
UBUNTU_INST_IP="dhcp"
|
||||||
UBUNTU_INST_NAMESERVERS=""
|
UBUNTU_INST_NAMESERVERS=""
|
||||||
UBUNTU_INST_NETMASK=""
|
UBUNTU_INST_NETMASK=""
|
||||||
UBUNTU_INST_GATEWAY=""
|
UBUNTU_INST_GATEWAY=""
|
||||||
|
|
||||||
# Load stackrc defaults
|
source ../../stackrc
|
||||||
# then override with settings from localrc
|
|
||||||
cd ../.. && source ./stackrc && cd $TOP_DIR
|
|
||||||
|
Loading…
Reference in New Issue
Block a user