Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
c966698e0c
6 changed files with 177 additions and 18 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,2 +1,3 @@
|
||||||
proto
|
proto
|
||||||
*~
|
*~
|
||||||
|
localrc
|
||||||
|
|
59
build_lxc.sh
59
build_lxc.sh
|
@ -1,5 +1,16 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Sanity check
|
||||||
|
if [ "$EUID" -ne "0" ]; then
|
||||||
|
echo "This script must be run with root privileges."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Warn users who aren't on natty
|
||||||
|
if ! grep -q natty /etc/lsb-release; then
|
||||||
|
echo "WARNING: this script has only been tested on natty"
|
||||||
|
fi
|
||||||
|
|
||||||
# Source params
|
# Source params
|
||||||
source ./stackrc
|
source ./stackrc
|
||||||
|
|
||||||
|
@ -23,18 +34,14 @@ STACKSH_PARAMS=${STACKSH_PARAMS:-}
|
||||||
# Option to use the version of devstack on which we are currently working
|
# Option to use the version of devstack on which we are currently working
|
||||||
USE_CURRENT_DEVSTACK=${USE_CURRENT_DEVSTACK:-1}
|
USE_CURRENT_DEVSTACK=${USE_CURRENT_DEVSTACK:-1}
|
||||||
|
|
||||||
# Warn users who aren't on natty
|
|
||||||
if ! grep -q natty /etc/lsb-release; then
|
|
||||||
echo "WARNING: this script has only been tested on natty"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Install deps
|
# Install deps
|
||||||
apt-get install -y lxc debootstrap
|
apt-get install -y lxc debootstrap
|
||||||
|
|
||||||
# Install cgroup-bin from source, since the packaging is buggy and possibly incompatible with our setup
|
# Install cgroup-bin from source, since the packaging is buggy and possibly incompatible with our setup
|
||||||
if ! which cgdelete | grep -q cgdelete; then
|
if ! which cgdelete | grep -q cgdelete; then
|
||||||
apt-get install -y g++ bison flex libpam0g-dev
|
apt-get install -y g++ bison flex libpam0g-dev make
|
||||||
wget http://sourceforge.net/projects/libcg/files/libcgroup/v0.37.1/libcgroup-0.37.1.tar.bz2/download -O /tmp/libcgroup-0.37.1.tar.bz2
|
wget http://sourceforge.net/projects/libcg/files/libcgroup/v0.37.1/libcgroup-0.37.1.tar.bz2/download -O /tmp/libcgroup-0.37.1.tar.bz2
|
||||||
cd /tmp && bunzip2 libcgroup-0.37.1.tar.bz2 && tar xfv libcgroup-0.37.1.tar
|
cd /tmp && bunzip2 libcgroup-0.37.1.tar.bz2 && tar xfv libcgroup-0.37.1.tar
|
||||||
cd libcgroup-0.37.1
|
cd libcgroup-0.37.1
|
||||||
./configure
|
./configure
|
||||||
|
@ -75,17 +82,25 @@ function git_clone {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Warm the base image on first install
|
# Location of the base image directory
|
||||||
CACHEDIR=/var/cache/lxc/natty/rootfs-amd64
|
CACHEDIR=/var/cache/lxc/natty/rootfs-amd64
|
||||||
if [ ! -d $CACHEDIR ]; then
|
|
||||||
|
# Provide option to do totally clean install
|
||||||
|
if [ "$CLEAR_LXC_CACHE" = "1" ]; then
|
||||||
|
rm -rf $CACHEDIR
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Warm the base image on first install
|
||||||
|
if [ ! -f $CACHEDIR/bootstrapped ]; then
|
||||||
# by deleting the container, we force lxc-create to re-bootstrap (lxc is
|
# by deleting the container, we force lxc-create to re-bootstrap (lxc is
|
||||||
# lazy and doesn't do anything if a container already exists)
|
# lazy and doesn't do anything if a container already exists)
|
||||||
lxc-destroy -n $CONTAINER
|
lxc-destroy -n $CONTAINER
|
||||||
# trigger the initial debootstrap
|
# trigger the initial debootstrap
|
||||||
lxc-create -n $CONTAINER -t natty -f $LXC_CONF
|
lxc-create -n $CONTAINER -t natty -f $LXC_CONF
|
||||||
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|munin-node)"`
|
||||||
chroot $CACHEDIR pip install `cat files/pips/*`
|
chroot $CACHEDIR pip install `cat files/pips/*`
|
||||||
|
touch $CACHEDIR/bootstrapped
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Clean out code repos if directed to do so
|
# Clean out code repos if directed to do so
|
||||||
|
@ -125,7 +140,7 @@ lxc-create -n $CONTAINER -t natty -f $LXC_CONF
|
||||||
# Specify where our container rootfs lives
|
# Specify where our container rootfs lives
|
||||||
ROOTFS=/var/lib/lxc/$CONTAINER/rootfs/
|
ROOTFS=/var/lib/lxc/$CONTAINER/rootfs/
|
||||||
|
|
||||||
# Create a stack user that is a member of the libvirtd group so that stack
|
# Create a stack user that is a member of the libvirtd group so that stack
|
||||||
# is able to interact with libvirt.
|
# is able to interact with libvirt.
|
||||||
chroot $ROOTFS groupadd libvirtd
|
chroot $ROOTFS groupadd libvirtd
|
||||||
chroot $ROOTFS useradd stack -s /bin/bash -d $DEST -G libvirtd
|
chroot $ROOTFS useradd stack -s /bin/bash -d $DEST -G libvirtd
|
||||||
|
@ -133,7 +148,7 @@ chroot $ROOTFS useradd stack -s /bin/bash -d $DEST -G libvirtd
|
||||||
# a simple password - pass
|
# a simple password - pass
|
||||||
echo stack:pass | chroot $ROOTFS chpasswd
|
echo stack:pass | chroot $ROOTFS chpasswd
|
||||||
|
|
||||||
# and has sudo ability (in the future this should be limited to only what
|
# and has sudo ability (in the future this should be limited to only what
|
||||||
# stack requires)
|
# stack requires)
|
||||||
echo "stack ALL=(ALL) NOPASSWD: ALL" >> $ROOTFS/etc/sudoers
|
echo "stack ALL=(ALL) NOPASSWD: ALL" >> $ROOTFS/etc/sudoers
|
||||||
|
|
||||||
|
@ -145,7 +160,7 @@ cp -pR /lib/modules/`uname -r`/kernel/net $ROOTFS/lib/modules/`uname -r`/kernel/
|
||||||
# Gracefully cp only if source file/dir exists
|
# Gracefully cp only if source file/dir exists
|
||||||
function cp_it {
|
function cp_it {
|
||||||
if [ -e $1 ] || [ -d $1 ]; then
|
if [ -e $1 ] || [ -d $1 ]; then
|
||||||
cp -pr $1 $2
|
cp -pRL $1 $2
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -196,6 +211,9 @@ if [ ! -d "$DEST/devstack" ]; then
|
||||||
git clone git://github.com/cloudbuilders/devstack.git $DEST/devstack
|
git clone git://github.com/cloudbuilders/devstack.git $DEST/devstack
|
||||||
fi
|
fi
|
||||||
cd $DEST/devstack && $STACKSH_PARAMS ./stack.sh > /$DEST/run.sh.log
|
cd $DEST/devstack && $STACKSH_PARAMS ./stack.sh > /$DEST/run.sh.log
|
||||||
|
echo >> /$DEST/run.sh.log
|
||||||
|
echo >> /$DEST/run.sh.log
|
||||||
|
echo "All done! Time to start clicking." >> /$DEST/run.sh.log
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Make the run.sh executable
|
# Make the run.sh executable
|
||||||
|
@ -216,3 +234,20 @@ fi
|
||||||
|
|
||||||
# Start our container
|
# Start our container
|
||||||
lxc-start -d -n $CONTAINER
|
lxc-start -d -n $CONTAINER
|
||||||
|
|
||||||
|
# Done creating the container, let's tail the log
|
||||||
|
echo
|
||||||
|
echo "============================================================="
|
||||||
|
echo " -- YAY! --"
|
||||||
|
echo "============================================================="
|
||||||
|
echo
|
||||||
|
echo "We're done creating the container, about to start tailing the"
|
||||||
|
echo "stack.sh log. It will take a second or two to start."
|
||||||
|
echo
|
||||||
|
echo "Just CTRL-C at any time to stop tailing."
|
||||||
|
|
||||||
|
while [ ! -e "$ROOTFS/$DEST/run.sh.log" ]; do
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
tail -F $ROOTFS/$DEST/run.sh.log
|
||||||
|
|
|
@ -14,7 +14,7 @@ if [ ! -d natty-base ]; then
|
||||||
debootstrap natty natty-base
|
debootstrap natty natty-base
|
||||||
# copy kernel modules...
|
# copy kernel modules...
|
||||||
# NOTE(ja): is there a better way to do this?
|
# NOTE(ja): is there a better way to do this?
|
||||||
cp -pr /lib/modules/`uname -r` proto/lib/modules
|
cp -pr /lib/modules/`uname -r` natty-base/lib/modules
|
||||||
cp files/sources.list natty-base/etc/apt/sources.list
|
cp files/sources.list natty-base/etc/apt/sources.list
|
||||||
chroot natty-base apt-get update
|
chroot natty-base apt-get update
|
||||||
fi
|
fi
|
||||||
|
@ -89,8 +89,8 @@ BASE=build.$$
|
||||||
IMG=$BASE.img
|
IMG=$BASE.img
|
||||||
MNT=$BASE/
|
MNT=$BASE/
|
||||||
|
|
||||||
# create a 2GB blank filesystem
|
# (quickly) create a 2GB blank filesystem
|
||||||
dd if=/dev/zero of=$IMG bs=1024k count=2048
|
dd bs=1 count=1 seek=$((2*1024*1024*1024)) if=/dev/zero of=$IMG
|
||||||
# force it to be initialized as ext2
|
# force it to be initialized as ext2
|
||||||
mkfs.ext2 -F $IMG
|
mkfs.ext2 -F $IMG
|
||||||
|
|
||||||
|
|
93
lxc_network_hostonlyplusnat.sh
Executable file
93
lxc_network_hostonlyplusnat.sh
Executable file
|
@ -0,0 +1,93 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Print some usage info
|
||||||
|
function usage {
|
||||||
|
echo "Usage: $0 [OPTION] [host_ip]"
|
||||||
|
echo "Set up temporary networking for LXC"
|
||||||
|
echo ""
|
||||||
|
echo " -n, --dry-run Just print the commands that would execute."
|
||||||
|
echo " -h, --help Print this usage message."
|
||||||
|
echo ""
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
# Allow passing the ip address on the command line.
|
||||||
|
function process_option {
|
||||||
|
case "$1" in
|
||||||
|
-h|--help) usage;;
|
||||||
|
-n|--dry-run) dry_run=1;;
|
||||||
|
*) host_ip="$1"
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# Set up some defaults
|
||||||
|
host_ip=
|
||||||
|
dry_run=0
|
||||||
|
bridge=br0
|
||||||
|
DRIER=
|
||||||
|
|
||||||
|
# Process the args
|
||||||
|
for arg in "$@"; do
|
||||||
|
process_option $arg
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ $dry_run ]; then
|
||||||
|
DRIER=echo
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$UID" -ne "0" ]; then
|
||||||
|
echo "This script must be run with root privileges."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check for bridge-utils.
|
||||||
|
BRCTL=`which brctl`
|
||||||
|
if [ ! -x "$BRCTL" ]; then
|
||||||
|
echo "This script requires you to install bridge-utils."
|
||||||
|
echo "Try: sudo apt-get install bridge-utils."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Scare off the nubs.
|
||||||
|
echo "====================================================="
|
||||||
|
echo
|
||||||
|
echo "WARNING"
|
||||||
|
echo
|
||||||
|
echo "This script will modify your current network setup,"
|
||||||
|
echo "this can be a scary thing and it is recommended that"
|
||||||
|
echo "you have something equivalent to physical access to"
|
||||||
|
echo "this machine before continuing in case your network"
|
||||||
|
echo "gets all funky."
|
||||||
|
echo
|
||||||
|
echo "If you don't want to continue, hit CTRL-C now."
|
||||||
|
|
||||||
|
if [ -z "$host_ip" ];
|
||||||
|
then
|
||||||
|
echo "Otherwise, please type in your host's ip address and"
|
||||||
|
echo "hit enter."
|
||||||
|
echo
|
||||||
|
echo "====================================================="
|
||||||
|
read host_ip
|
||||||
|
else
|
||||||
|
echo "Otherwise hit enter."
|
||||||
|
echo
|
||||||
|
echo "====================================================="
|
||||||
|
read accept
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# Add a bridge interface, this will choke if there is already
|
||||||
|
# a bridge named $bridge
|
||||||
|
$DRIER $BRCTL addbr $bridge
|
||||||
|
$DRIER ip addr add 192.168.1.1/24 dev $bridge
|
||||||
|
if [ $dry_run ]; then
|
||||||
|
echo "echo 1 > /proc/sys/net/ipv4/ip_forward"
|
||||||
|
else
|
||||||
|
echo 1 > /proc/sys/net/ipv4/ip_forward
|
||||||
|
fi
|
||||||
|
$DRIER ifconfig $bridge up
|
||||||
|
|
||||||
|
# Set up the NAT for the instances
|
||||||
|
$DRIER iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source $host_ip
|
||||||
|
$DRIER iptables -I FORWARD -s 192.168.1.0/24 -j ACCEPT
|
||||||
|
|
27
stack.sh
27
stack.sh
|
@ -13,6 +13,9 @@
|
||||||
# Sanity Check
|
# Sanity Check
|
||||||
# ============
|
# ============
|
||||||
|
|
||||||
|
# Start our timer
|
||||||
|
START_TIME=`python -c "import time; print time.time()"`
|
||||||
|
|
||||||
# Warn users who aren't on natty, but allow them to override check and attempt
|
# Warn users who aren't on natty, but allow them to override check and attempt
|
||||||
# installation with ``FORCE=yes ./stack``
|
# installation with ``FORCE=yes ./stack``
|
||||||
if ! grep -q natty /etc/lsb-release; then
|
if ! grep -q natty /etc/lsb-release; then
|
||||||
|
@ -37,6 +40,15 @@ if [ ! -d $FILES ]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# you need to run this as a regular user with sudo priviledges
|
||||||
|
if [[ $EUID -eq 0 ]]; then
|
||||||
|
echo "This script cannot be run as root." 1>&2
|
||||||
|
echo "You should run this script as the user you wish openstack to run as" 1>&2
|
||||||
|
echo "The user will need to be a sudoer (without password)" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Settings
|
# Settings
|
||||||
# ========
|
# ========
|
||||||
|
|
||||||
|
@ -48,6 +60,11 @@ fi
|
||||||
#
|
#
|
||||||
# You can also pass options on a single line ``MYSQL_PASS=simple ./stack.sh``
|
# You can also pass options on a single line ``MYSQL_PASS=simple ./stack.sh``
|
||||||
#
|
#
|
||||||
|
# Additionally, you can put any local variables into a ``localrc`` file, like::
|
||||||
|
#
|
||||||
|
# MYSQL_PASS=anothersecret
|
||||||
|
# MYSQL_USER=hellaroot
|
||||||
|
#
|
||||||
# We try to have sensible defaults, so you should be able to run ``./stack.sh``
|
# We try to have sensible defaults, so you should be able to run ``./stack.sh``
|
||||||
# in most cases.
|
# in most cases.
|
||||||
|
|
||||||
|
@ -377,7 +394,7 @@ if [[ "$ENABLED_SERVICES" =~ "mysql" ]]; then
|
||||||
$NOVA_DIR/bin/nova-manage db sync
|
$NOVA_DIR/bin/nova-manage db sync
|
||||||
|
|
||||||
# create a small network
|
# create a small network
|
||||||
$NOVA_DIR/bin/nova-manage network create private $FIXED_RANGE 1 $FIXED_NETWORK_SIZE
|
$NOVA_DIR/bin/nova-manage network create private $FIXED_RANGE 1 $FIXED_NETWORK_SIZE
|
||||||
|
|
||||||
# create some floating ips
|
# create some floating ips
|
||||||
$NOVA_DIR/bin/nova-manage floating create $FLOATING_RANGE
|
$NOVA_DIR/bin/nova-manage floating create $FLOATING_RANGE
|
||||||
|
@ -500,3 +517,11 @@ if [[ "$ENABLED_SERVICES" =~ "key" ]]; then
|
||||||
echo "keystone is serving at http://$HOST_IP:5000/v2.0/"
|
echo "keystone is serving at http://$HOST_IP:5000/v2.0/"
|
||||||
echo "examples on using novaclient command line is in exercise.sh"
|
echo "examples on using novaclient command line is in exercise.sh"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Summary
|
||||||
|
# =======
|
||||||
|
|
||||||
|
# End our timer and give a timing summary
|
||||||
|
END_TIME=`python -c "import time; print time.time()"`
|
||||||
|
ELAPSED=`python -c "print $END_TIME - $START_TIME"`
|
||||||
|
echo "stack.sh completed in $ELAPSED seconds."
|
||||||
|
|
9
stackrc
9
stackrc
|
@ -1,6 +1,6 @@
|
||||||
# compute service
|
# compute service
|
||||||
NOVA_REPO=https://github.com/openstack/nova.git
|
NOVA_REPO=https://github.com/cloudbuilders/nova.git
|
||||||
NOVA_BRANCH=2011.3
|
NOVA_BRANCH=diablo
|
||||||
|
|
||||||
# image catalog service
|
# image catalog service
|
||||||
GLANCE_REPO=https://github.com/cloudbuilders/glance.git
|
GLANCE_REPO=https://github.com/cloudbuilders/glance.git
|
||||||
|
@ -34,3 +34,8 @@ OPENSTACKX_BRANCH=diablo
|
||||||
# openstack-munin is a collection of munin plugins for monitoring the stack
|
# openstack-munin is a collection of munin plugins for monitoring the stack
|
||||||
MUNIN_REPO=https://github.com/cloudbuilders/openstack-munin.git
|
MUNIN_REPO=https://github.com/cloudbuilders/openstack-munin.git
|
||||||
MUNIN_BRANCH=master
|
MUNIN_BRANCH=master
|
||||||
|
|
||||||
|
# allow local overrides of env variables
|
||||||
|
if [ -f ./localrc ]; then
|
||||||
|
source ./localrc
|
||||||
|
fi
|
||||||
|
|
Loading…
Reference in a new issue