Merge pull request #15 from cloudbuilders/stackrc
implement stackrc for variable configuration (esp repos)
This commit is contained in:
commit
9563361cf4
4 changed files with 123 additions and 34 deletions
52
build_lxc.sh
52
build_lxc.sh
|
@ -1,5 +1,15 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Use stackrc.example if stackrc is missing
|
||||||
|
if [ ! -e ./stackrc ]; then
|
||||||
|
read -n1 -p "No stackrc present. Copy stackrc.example to stackrc? (y/n) "
|
||||||
|
echo
|
||||||
|
[[ $REPLY = [yY] ]] && cp stackrc.example stackrc|| { echo "Aborting: Missing stackrc"; exit 1; }
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Source params
|
||||||
|
source ./stackrc
|
||||||
|
|
||||||
# Configurable params
|
# Configurable params
|
||||||
BRIDGE=${BRIDGE:-br0}
|
BRIDGE=${BRIDGE:-br0}
|
||||||
CONTAINER=${CONTAINER:-STACK}
|
CONTAINER=${CONTAINER:-STACK}
|
||||||
|
@ -13,6 +23,9 @@ COPYENV=${COPYENV:-1}
|
||||||
# Param string to pass to stack.sh. Like "EC2_DMZ_HOST=192.168.1.1 MYSQL_USER=nova"
|
# Param string to pass to stack.sh. Like "EC2_DMZ_HOST=192.168.1.1 MYSQL_USER=nova"
|
||||||
STACKSH_PARAMS=${STACKSH_PARAMS:-}
|
STACKSH_PARAMS=${STACKSH_PARAMS:-}
|
||||||
|
|
||||||
|
# Option to use the version of devstack on which we are currently working
|
||||||
|
USE_CURRENT_DEVSTACK=${USE_CURRENT_DEVSTACK:-1}
|
||||||
|
|
||||||
# Warn users who aren't on natty
|
# Warn users who aren't on natty
|
||||||
if ! grep -q natty /etc/lsb-release; then
|
if ! grep -q natty /etc/lsb-release; then
|
||||||
echo "WARNING: this script has only been tested on natty"
|
echo "WARNING: this script has only been tested on natty"
|
||||||
|
@ -51,6 +64,19 @@ if [ -d /cgroup/$CONTAINER ]; then
|
||||||
cgdelete -r cpu,net_cls:$CONTAINER
|
cgdelete -r cpu,net_cls:$CONTAINER
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# git clone only if directory doesn't exist already. Since ``DEST`` might not
|
||||||
|
# be owned by the installation user, we create the directory and change the
|
||||||
|
# ownership to the proper user.
|
||||||
|
function git_clone {
|
||||||
|
if [ ! -d $2 ]; then
|
||||||
|
sudo mkdir $2
|
||||||
|
sudo chown `whoami` $2
|
||||||
|
git clone $1 $2
|
||||||
|
cd $2
|
||||||
|
# This checkout syntax works for both branches and tags
|
||||||
|
git checkout $3
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Warm the base image on first install
|
# Warm the base image on first install
|
||||||
CACHEDIR=/var/cache/lxc/natty/rootfs-amd64
|
CACHEDIR=/var/cache/lxc/natty/rootfs-amd64
|
||||||
|
@ -63,15 +89,23 @@ if [ ! -d $CACHEDIR ]; then
|
||||||
chroot $CACHEDIR apt-get update
|
chroot $CACHEDIR apt-get update
|
||||||
chroot $CACHEDIR apt-get install -y --force-yes `cat files/apts/* | cut -d\# -f1 | egrep -v "(rabbitmq|libvirt-bin|mysql-server)"`
|
chroot $CACHEDIR apt-get install -y --force-yes `cat files/apts/* | cut -d\# -f1 | egrep -v "(rabbitmq|libvirt-bin|mysql-server)"`
|
||||||
chroot $CACHEDIR pip install `cat files/pips/*`
|
chroot $CACHEDIR pip install `cat files/pips/*`
|
||||||
# FIXME (anthony) - provide ability to vary source locations
|
fi
|
||||||
#git clone https://github.com/cloudbuilders/nova.git $CACHEDIR/opt/nova
|
|
||||||
bzr clone lp:~hudson-openstack/nova/milestone-proposed/ $CACHEDIR/opt/nova
|
# Cache openstack code
|
||||||
git clone https://github.com/cloudbuilders/openstackx.git $CACHEDIR/opt/openstackx
|
git_clone $NOVA_REPO $CACHEDIR/opt/nova $NOVA_BRANCH
|
||||||
git clone https://github.com/cloudbuilders/noVNC.git $CACHEDIR/opt/noVNC
|
git_clone $GLANCE_REPO $CACHEDIR/opt/glance $GLANCE_BRANCH
|
||||||
git clone https://github.com/cloudbuilders/openstack-dashboard.git $CACHEDIR/opt/dash
|
git_clone $KEYSTONE_REPO $CACHEDIR/opt/keystone $KEYSTONE_BRANCH
|
||||||
git clone https://github.com/cloudbuilders/python-novaclient.git $CACHEDIR/opt/python-novaclient
|
git_clone $NOVNC_REPO $CACHEDIR/opt/novnc $NOVNC_BRANCH
|
||||||
git clone https://github.com/cloudbuilders/keystone.git $CACHEDIR/opt/keystone
|
git_clone $DASH_REPO $CACHEDIR/opt/dash $DASH_BRANCH $DASH_TAG
|
||||||
git clone https://github.com/cloudbuilders/glance.git $CACHEDIR/opt/glance
|
git_clone $NIXON_REPO $CACHEDIR/opt/nixon $NIXON_BRANCH
|
||||||
|
git_clone $NOVACLIENT_REPO $CACHEDIR/opt/python-novaclient $NOVACLIENT_BRANCH
|
||||||
|
git_clone $OPENSTACKX_REPO $CACHEDIR/opt/openstackx $OPENSTACKX_BRANCH
|
||||||
|
git_clone $MUNIN_REPO $CACHEDIR/opt/openstack-munin $MUNIN_BRANCH
|
||||||
|
|
||||||
|
# Use this version of devstack?
|
||||||
|
if [ "$USE_CURRENT_DEVSTACK" = "1" ]; then
|
||||||
|
rm -rf $CACHEDIR/opt/devstack
|
||||||
|
cp -pr . $CACHEDIR/opt/devstack
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Destroy the old container
|
# Destroy the old container
|
||||||
|
|
26
build_nfs.sh
26
build_nfs.sh
|
@ -1,5 +1,15 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Use stackrc.example if stackrc is missing
|
||||||
|
if [ ! -e ./stackrc ]; then
|
||||||
|
read -n1 -p "No stackrc present. Copy stackrc.example to stackrc? (y/n) "
|
||||||
|
echo
|
||||||
|
[[ $REPLY = [yY] ]] && cp stackrc.example stackrc|| { echo "Aborting: Missing stackrc"; exit 1; }
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Source params
|
||||||
|
source ./stackrc
|
||||||
|
|
||||||
# TODO: make dest not hardcoded
|
# TODO: make dest not hardcoded
|
||||||
|
|
||||||
NAME=$1
|
NAME=$1
|
||||||
|
@ -15,13 +25,15 @@ if [ ! -d proto ]; then
|
||||||
chroot proto apt-get update
|
chroot proto apt-get update
|
||||||
chroot proto apt-get install -y `cat files/apts/* | cut -d\# -f1 | egrep -v "(rabbitmq|libvirt-bin|mysql-server)"`
|
chroot proto apt-get install -y `cat files/apts/* | cut -d\# -f1 | egrep -v "(rabbitmq|libvirt-bin|mysql-server)"`
|
||||||
chroot proto pip install `cat files/pips/*`
|
chroot proto pip install `cat files/pips/*`
|
||||||
git clone https://github.com/cloudbuilders/nova.git proto/opt/nova
|
git_clone $NOVA_REPO proto/opt/nova $NOVA_BRANCH
|
||||||
git clone https://github.com/cloudbuilders/openstackx.git proto/opt/openstackx
|
git_clone $GLANCE_REPO proto/opt/glance $GLANCE_BRANCH
|
||||||
git clone https://github.com/cloudbuilders/noVNC.git proto/opt/noVNC
|
git_clone $KEYSTONE_REPO proto/opt/keystone $KEYSTONE_BRANCH
|
||||||
git clone https://github.com/cloudbuilders/openstack-dashboard.git proto/opt/dash
|
git_clone $NOVNC_REPO proto/opt/novnc $NOVNC_BRANCH
|
||||||
git clone https://github.com/cloudbuilders/python-novaclient.git proto/opt/python-novaclient
|
git_clone $DASH_REPO proto/opt/dash $DASH_BRANCH $DASH_TAG
|
||||||
git clone https://github.com/cloudbuilders/keystone.git proto/opt/keystone
|
git_clone $NIXON_REPO proto/opt/nixon $NIXON_BRANCH
|
||||||
git clone https://github.com/cloudbuilders/glance.git proto/opt/glance
|
git_clone $NOVACLIENT_REPO proto/opt/python-novaclient $NOVACLIENT_BRANCH
|
||||||
|
git_clone $OPENSTACKX_REPO proto/opt/openstackx $OPENSTACKX_BRANCH
|
||||||
|
git_clone $MUNIN_REPO proto/opt/openstack-munin $MUNIN_BRANCH
|
||||||
chroot proto mkdir -p /opt/files
|
chroot proto mkdir -p /opt/files
|
||||||
wget -c http://images.ansolabs.com/tty.tgz -O proto/opt/files/tty.tgz
|
wget -c http://images.ansolabs.com/tty.tgz -O proto/opt/files/tty.tgz
|
||||||
fi
|
fi
|
||||||
|
|
43
stack.sh
43
stack.sh
|
@ -59,6 +59,16 @@ set -o errexit
|
||||||
# an error. It is also useful for following allowing as the install occurs.
|
# an error. It is also useful for following allowing as the install occurs.
|
||||||
set -o xtrace
|
set -o xtrace
|
||||||
|
|
||||||
|
# Use stackrc.example if stackrc is missing
|
||||||
|
if [ ! -e ./stackrc ]; then
|
||||||
|
read -n1 -p "No stackrc present. Copy stackrc.example to stackrc? (y/n) "
|
||||||
|
echo
|
||||||
|
[[ $REPLY = [yY] ]] && cp stackrc.example stackrc|| { echo "Aborting: Missing stackrc"; exit 1; }
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Import variables
|
||||||
|
source ./stackrc
|
||||||
|
|
||||||
# Destination path for installation ``DEST``
|
# Destination path for installation ``DEST``
|
||||||
DEST=${DEST:-/opt}
|
DEST=${DEST:-/opt}
|
||||||
|
|
||||||
|
@ -69,7 +79,7 @@ NIXON_DIR=$DEST/dash/openstack-dashboard/dashboard/nixon
|
||||||
GLANCE_DIR=$DEST/glance
|
GLANCE_DIR=$DEST/glance
|
||||||
KEYSTONE_DIR=$DEST/keystone
|
KEYSTONE_DIR=$DEST/keystone
|
||||||
NOVACLIENT_DIR=$DEST/python-novaclient
|
NOVACLIENT_DIR=$DEST/python-novaclient
|
||||||
API_DIR=$DEST/openstackx
|
OPENSTACKX_DIR=$DEST/openstackx
|
||||||
NOVNC_DIR=$DEST/noVNC
|
NOVNC_DIR=$DEST/noVNC
|
||||||
MUNIN_DIR=$DEST/openstack-munin
|
MUNIN_DIR=$DEST/openstack-munin
|
||||||
|
|
||||||
|
@ -141,34 +151,31 @@ function git_clone {
|
||||||
sudo mkdir $2
|
sudo mkdir $2
|
||||||
sudo chown `whoami` $2
|
sudo chown `whoami` $2
|
||||||
git clone $1 $2
|
git clone $1 $2
|
||||||
|
cd $2
|
||||||
|
# This checkout syntax works for both branches and tags
|
||||||
|
git checkout $3
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# compute service
|
# compute service
|
||||||
# FIXME - need to factor out these repositories
|
git_clone $NOVA_REPO $NOVA_DIR $NOVA_BRANCH
|
||||||
# git_clone https://github.com/cloudbuilders/nova.git $NOVA_DIR
|
|
||||||
if [ ! -d $NOVA_DIR ]; then
|
|
||||||
bzr clone lp:~hudson-openstack/nova/milestone-proposed/ $NOVA_DIR
|
|
||||||
fi
|
|
||||||
# image catalog service
|
# image catalog service
|
||||||
git_clone https://github.com/cloudbuilders/glance.git $GLANCE_DIR
|
git_clone $GLANCE_REPO $GLANCE_DIR $GLANCE_BRANCH
|
||||||
# unified auth system (manages accounts/tokens)
|
# unified auth system (manages accounts/tokens)
|
||||||
git_clone https://github.com/cloudbuilders/keystone.git $KEYSTONE_DIR
|
git_clone $KEYSTONE_REPO $KEYSTONE_DIR $KEYSTONE_BRANCH
|
||||||
# a websockets/html5 or flash powered VNC console for vm instances
|
# a websockets/html5 or flash powered VNC console for vm instances
|
||||||
git_clone https://github.com/cloudbuilders/noVNC.git $NOVNC_DIR
|
git_clone $NOVNC_REPO $NOVNC_DIR $NOVNC_BRANCH
|
||||||
# django powered web control panel for openstack
|
# django powered web control panel for openstack
|
||||||
git_clone https://github.com/cloudbuilders/openstack-dashboard.git $DASH_DIR
|
git_clone $DASH_REPO $DASH_DIR $DASH_BRANCH $DASH_TAG
|
||||||
# FIXME - need to factor out logic like this
|
|
||||||
cd $DASH_DIR && sudo git fetch && sudo git checkout origin/keystone_diablo
|
|
||||||
# add nixon, will use this to show munin graphs in dashboard
|
# add nixon, will use this to show munin graphs in dashboard
|
||||||
git_clone https://github.com/cloudbuilders/nixon.git $NIXON_DIR
|
git_clone $NIXON_REPO $NIXON_DIR $NIXON_BRANCH
|
||||||
# python client library to nova that dashboard (and others) use
|
# python client library to nova that dashboard (and others) use
|
||||||
git_clone https://github.com/cloudbuilders/python-novaclient.git $NOVACLIENT_DIR
|
git_clone $NOVACLIENT_REPO $NOVACLIENT_DIR $NOVACLIENT_BRANCH
|
||||||
# openstackx is a collection of extensions to openstack.compute & nova
|
# openstackx is a collection of extensions to openstack.compute & nova
|
||||||
# that is *deprecated*. The code is being moved into python-novaclient & nova.
|
# that is *deprecated*. The code is being moved into python-novaclient & nova.
|
||||||
git_clone https://github.com/cloudbuilders/openstackx.git $API_DIR
|
git_clone $OPENSTACKX_REPO $OPENSTACKX_DIR $OPENSTACKX_BRANCH
|
||||||
# openstack-munin is a collection of munin plugins for monitoring the stack
|
# openstack-munin is a collection of munin plugins for monitoring the stack
|
||||||
git_clone https://github.com/cloudbuilders/openstack-munin.git $MUNIN_DIR
|
git_clone $MUNIN_REPO $MUNIN_DIR $MUNIN_BRANCH
|
||||||
|
|
||||||
# Initialization
|
# Initialization
|
||||||
# ==============
|
# ==============
|
||||||
|
@ -180,7 +187,7 @@ cd $NOVA_DIR; sudo python setup.py develop
|
||||||
cd $NOVACLIENT_DIR; sudo python setup.py develop
|
cd $NOVACLIENT_DIR; sudo python setup.py develop
|
||||||
cd $KEYSTONE_DIR; sudo python setup.py develop
|
cd $KEYSTONE_DIR; sudo python setup.py develop
|
||||||
cd $GLANCE_DIR; sudo python setup.py develop
|
cd $GLANCE_DIR; sudo python setup.py develop
|
||||||
cd $API_DIR; sudo python setup.py develop
|
cd $OPENSTACKX_DIR; sudo python setup.py develop
|
||||||
cd $DASH_DIR/django-openstack; sudo python setup.py develop
|
cd $DASH_DIR/django-openstack; sudo python setup.py develop
|
||||||
cd $DASH_DIR/openstack-dashboard; sudo python setup.py develop
|
cd $DASH_DIR/openstack-dashboard; sudo python setup.py develop
|
||||||
|
|
||||||
|
@ -356,7 +363,7 @@ add_nova_flag "--public_interface=$PUBLIC_INTERFACE"
|
||||||
add_nova_flag "--vlan_interface=$VLAN_INTERFACE"
|
add_nova_flag "--vlan_interface=$VLAN_INTERFACE"
|
||||||
add_nova_flag "--sql_connection=$BASE_SQL_CONN/nova"
|
add_nova_flag "--sql_connection=$BASE_SQL_CONN/nova"
|
||||||
add_nova_flag "--libvirt_type=$LIBVIRT_TYPE"
|
add_nova_flag "--libvirt_type=$LIBVIRT_TYPE"
|
||||||
add_nova_flag "--osapi_extensions_path=$API_DIR/extensions"
|
add_nova_flag "--osapi_extensions_path=$OPENSTACKX_DIR/extensions"
|
||||||
add_nova_flag "--vncproxy_url=http://$HOST_IP:6080"
|
add_nova_flag "--vncproxy_url=http://$HOST_IP:6080"
|
||||||
add_nova_flag "--vncproxy_wwwroot=$NOVNC_DIR/"
|
add_nova_flag "--vncproxy_wwwroot=$NOVNC_DIR/"
|
||||||
add_nova_flag "--api_paste_config=$KEYSTONE_DIR/examples/paste/nova-api-paste.ini"
|
add_nova_flag "--api_paste_config=$KEYSTONE_DIR/examples/paste/nova-api-paste.ini"
|
||||||
|
|
36
stackrc.example
Normal file
36
stackrc.example
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
# compute service
|
||||||
|
NOVA_REPO=https://github.com/openstack/nova.git
|
||||||
|
NOVA_BRANCH=2011.3
|
||||||
|
|
||||||
|
# image catalog service
|
||||||
|
GLANCE_REPO=https://github.com/cloudbuilders/glance.git
|
||||||
|
GLANCE_BRANCH=diablo
|
||||||
|
|
||||||
|
# unified auth system (manages accounts/tokens)
|
||||||
|
KEYSTONE_REPO=https://github.com/cloudbuilders/keystone.git
|
||||||
|
KEYSTONE_BRANCH=diablo
|
||||||
|
|
||||||
|
# a websockets/html5 or flash powered VNC console for vm instances
|
||||||
|
NOVNC_REPO=https://github.com/cloudbuilders/noVNC.git
|
||||||
|
NOVNC_BRANCH=master
|
||||||
|
|
||||||
|
# django powered web control panel for openstack
|
||||||
|
DASH_REPO=https://github.com/cloudbuilders/openstack-dashboard.git
|
||||||
|
DASH_BRANCH=master
|
||||||
|
|
||||||
|
# add nixon, will use this to show munin graphs in dashboard
|
||||||
|
NIXON_REPO=https://github.com/cloudbuilders/nixon.git
|
||||||
|
NIXON_BRANCH=diablo
|
||||||
|
|
||||||
|
# python client library to nova that dashboard (and others) use
|
||||||
|
NOVACLIENT_REPO=https://github.com/cloudbuilders/python-novaclient.git
|
||||||
|
NOVACLIENT_BRANCH=master
|
||||||
|
|
||||||
|
# openstackx is a collection of extensions to openstack.compute & nova
|
||||||
|
# that is *deprecated*. The code is being moved into python-novaclient & nova.
|
||||||
|
OPENSTACKX_REPO=https://github.com/cloudbuilders/openstackx.git
|
||||||
|
OPENSTACKX_BRANCH=diablo
|
||||||
|
|
||||||
|
# openstack-munin is a collection of munin plugins for monitoring the stack
|
||||||
|
MUNIN_REPO=https://github.com/cloudbuilders/openstack-munin.git
|
||||||
|
MUNIN_BRANCH=master
|
Loading…
Reference in a new issue