Remove unused tools
Remove old tools for building ramdisk images and the original PXE boot environment. Change-Id: I81dcc823387c610d3090e5397ed5e42244d6dc3d
This commit is contained in:
@ -1,38 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# **build_bm.sh**
|
|
||||||
|
|
||||||
# Build an OpenStack install on a bare metal machine.
|
|
||||||
set +x
|
|
||||||
|
|
||||||
# Keep track of the current directory
|
|
||||||
TOOLS_DIR=$(cd $(dirname "$0") && pwd)
|
|
||||||
TOP_DIR=$(cd $TOOLS_DIR/..; pwd)
|
|
||||||
|
|
||||||
# Import common functions
|
|
||||||
source $TOP_DIR/functions
|
|
||||||
|
|
||||||
# Source params
|
|
||||||
source ./stackrc
|
|
||||||
|
|
||||||
# Param string to pass to stack.sh. Like "EC2_DMZ_HOST=192.168.1.1 MYSQL_USER=nova"
|
|
||||||
STACKSH_PARAMS=${STACKSH_PARAMS:-}
|
|
||||||
|
|
||||||
# Option to use the version of devstack on which we are currently working
|
|
||||||
USE_CURRENT_DEVSTACK=${USE_CURRENT_DEVSTACK:-1}
|
|
||||||
|
|
||||||
# Configure the runner
|
|
||||||
RUN_SH=`mktemp`
|
|
||||||
cat > $RUN_SH <<EOF
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
# Install and run stack.sh
|
|
||||||
cd devstack
|
|
||||||
$STACKSH_PARAMS ./stack.sh
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Make the run.sh executable
|
|
||||||
chmod 755 $RUN_SH
|
|
||||||
|
|
||||||
scp -r . root@$CONTAINER_IP:devstack
|
|
||||||
scp $RUN_SH root@$CONTAINER_IP:$RUN_SH
|
|
||||||
ssh root@$CONTAINER_IP $RUN_SH
|
|
@ -1,40 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# **build_bm_multi.sh**
|
|
||||||
|
|
||||||
# Build an OpenStack install on several bare metal machines.
|
|
||||||
SHELL_AFTER_RUN=no
|
|
||||||
|
|
||||||
# Variables common amongst all hosts in the cluster
|
|
||||||
COMMON_VARS="MYSQL_HOST=$HEAD_HOST RABBIT_HOST=$HEAD_HOST GLANCE_HOSTPORT=$HEAD_HOST:9292 NETWORK_MANAGER=FlatDHCPManager FLAT_INTERFACE=eth0 FLOATING_RANGE=$FLOATING_RANGE MULTI_HOST=1 SHELL_AFTER_RUN=$SHELL_AFTER_RUN"
|
|
||||||
|
|
||||||
# Helper to launch containers
|
|
||||||
function run_bm {
|
|
||||||
# For some reason container names with periods can cause issues :/
|
|
||||||
CONTAINER=$1 CONTAINER_IP=$2 CONTAINER_NETMASK=$NETMASK CONTAINER_GATEWAY=$GATEWAY NAMESERVER=$NAMESERVER TERMINATE=$TERMINATE STACKSH_PARAMS="$COMMON_VARS $3" ./tools/build_bm.sh
|
|
||||||
}
|
|
||||||
|
|
||||||
# Launch the head node - headnode uses a non-ip domain name,
|
|
||||||
# because rabbit won't launch with an ip addr hostname :(
|
|
||||||
run_bm STACKMASTER $HEAD_HOST "ENABLED_SERVICES=g-api,g-reg,key,n-api,n-sch,n-vnc,horizon,mysql,rabbit"
|
|
||||||
|
|
||||||
# Wait till the head node is up
|
|
||||||
if [ ! "$TERMINATE" = "1" ]; then
|
|
||||||
echo "Waiting for head node ($HEAD_HOST) to start..."
|
|
||||||
if ! timeout 60 sh -c "while ! wget -q -O- http://$HEAD_HOST | grep -q username; do sleep 1; done"; then
|
|
||||||
echo "Head node did not start"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
PIDS=""
|
|
||||||
# Launch the compute hosts in parallel
|
|
||||||
for compute_host in ${COMPUTE_HOSTS//,/ }; do
|
|
||||||
run_bm $compute_host $compute_host "ENABLED_SERVICES=n-cpu,n-net,n-api" &
|
|
||||||
PIDS="$PIDS $!"
|
|
||||||
done
|
|
||||||
|
|
||||||
for x in $PIDS; do
|
|
||||||
wait $x
|
|
||||||
done
|
|
||||||
echo "build_bm_multi complete"
|
|
@ -1,120 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
|
|
||||||
# **build_pxe_env.sh**
|
|
||||||
|
|
||||||
# Create a PXE boot environment
|
|
||||||
#
|
|
||||||
# build_pxe_env.sh destdir
|
|
||||||
#
|
|
||||||
# Requires Ubuntu Oneiric
|
|
||||||
#
|
|
||||||
# Only needs to run as root if the destdir permissions require it
|
|
||||||
|
|
||||||
dpkg -l syslinux || apt-get install -y syslinux
|
|
||||||
|
|
||||||
DEST_DIR=${1:-/tmp}/tftpboot
|
|
||||||
PXEDIR=${PXEDIR:-/opt/ramstack/pxe}
|
|
||||||
PROGDIR=`dirname $0`
|
|
||||||
|
|
||||||
# Clean up any resources that may be in use
|
|
||||||
function cleanup {
|
|
||||||
set +o errexit
|
|
||||||
|
|
||||||
# Mop up temporary files
|
|
||||||
if [ -n "$MNTDIR" -a -d "$MNTDIR" ]; then
|
|
||||||
umount $MNTDIR
|
|
||||||
rmdir $MNTDIR
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Kill ourselves to signal any calling process
|
|
||||||
trap 2; kill -2 $$
|
|
||||||
}
|
|
||||||
|
|
||||||
trap cleanup SIGHUP SIGINT SIGTERM SIGQUIT EXIT
|
|
||||||
|
|
||||||
# Keep track of the current directory
|
|
||||||
TOOLS_DIR=$(cd $(dirname "$0") && pwd)
|
|
||||||
TOP_DIR=`cd $TOOLS_DIR/..; pwd`
|
|
||||||
|
|
||||||
mkdir -p $DEST_DIR/pxelinux.cfg
|
|
||||||
cd $DEST_DIR
|
|
||||||
for i in memdisk menu.c32 pxelinux.0; do
|
|
||||||
cp -pu /usr/lib/syslinux/$i $DEST_DIR
|
|
||||||
done
|
|
||||||
|
|
||||||
CFG=$DEST_DIR/pxelinux.cfg/default
|
|
||||||
cat >$CFG <<EOF
|
|
||||||
default menu.c32
|
|
||||||
prompt 0
|
|
||||||
timeout 0
|
|
||||||
|
|
||||||
MENU TITLE devstack PXE Boot Menu
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Setup devstack boot
|
|
||||||
mkdir -p $DEST_DIR/ubuntu
|
|
||||||
if [ ! -d $PXEDIR ]; then
|
|
||||||
mkdir -p $PXEDIR
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Get image into place
|
|
||||||
if [ ! -r $PXEDIR/stack-initrd.img ]; then
|
|
||||||
cd $TOP_DIR
|
|
||||||
$PROGDIR/build_ramdisk.sh $PXEDIR/stack-initrd.img
|
|
||||||
fi
|
|
||||||
if [ ! -r $PXEDIR/stack-initrd.gz ]; then
|
|
||||||
gzip -1 -c $PXEDIR/stack-initrd.img >$PXEDIR/stack-initrd.gz
|
|
||||||
fi
|
|
||||||
cp -pu $PXEDIR/stack-initrd.gz $DEST_DIR/ubuntu
|
|
||||||
|
|
||||||
if [ ! -r $PXEDIR/vmlinuz-*-generic ]; then
|
|
||||||
MNTDIR=`mktemp -d --tmpdir mntXXXXXXXX`
|
|
||||||
mount -t ext4 -o loop $PXEDIR/stack-initrd.img $MNTDIR
|
|
||||||
|
|
||||||
if [ ! -r $MNTDIR/boot/vmlinuz-*-generic ]; then
|
|
||||||
echo "No kernel found"
|
|
||||||
umount $MNTDIR
|
|
||||||
rmdir $MNTDIR
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
cp -pu $MNTDIR/boot/vmlinuz-*-generic $PXEDIR
|
|
||||||
fi
|
|
||||||
umount $MNTDIR
|
|
||||||
rmdir $MNTDIR
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Get generic kernel version
|
|
||||||
KNAME=`basename $PXEDIR/vmlinuz-*-generic`
|
|
||||||
KVER=${KNAME#vmlinuz-}
|
|
||||||
cp -pu $PXEDIR/vmlinuz-$KVER $DEST_DIR/ubuntu
|
|
||||||
cat >>$CFG <<EOF
|
|
||||||
|
|
||||||
LABEL devstack
|
|
||||||
MENU LABEL ^devstack
|
|
||||||
MENU DEFAULT
|
|
||||||
KERNEL ubuntu/vmlinuz-$KVER
|
|
||||||
APPEND initrd=ubuntu/stack-initrd.gz ramdisk_size=2109600 root=/dev/ram0
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Get Ubuntu
|
|
||||||
if [ -d $PXEDIR -a -r $PXEDIR/natty-base-initrd.gz ]; then
|
|
||||||
cp -pu $PXEDIR/natty-base-initrd.gz $DEST_DIR/ubuntu
|
|
||||||
cat >>$CFG <<EOF
|
|
||||||
|
|
||||||
LABEL ubuntu
|
|
||||||
MENU LABEL ^Ubuntu Natty
|
|
||||||
KERNEL ubuntu/vmlinuz-$KVER
|
|
||||||
APPEND initrd=ubuntu/natty-base-initrd.gz ramdisk_size=419600 root=/dev/ram0
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Local disk boot
|
|
||||||
cat >>$CFG <<EOF
|
|
||||||
|
|
||||||
LABEL local
|
|
||||||
MENU LABEL ^Local disk
|
|
||||||
LOCALBOOT 0
|
|
||||||
EOF
|
|
||||||
|
|
||||||
trap cleanup SIGHUP SIGINT SIGTERM SIGQUIT EXIT
|
|
@ -1,230 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# **build_ramdisk.sh**
|
|
||||||
|
|
||||||
# Build RAM disk images
|
|
||||||
|
|
||||||
# Exit on error to stop unexpected errors
|
|
||||||
set -o errexit
|
|
||||||
|
|
||||||
if [ ! "$#" -eq "1" ]; then
|
|
||||||
echo "$0 builds a gziped Ubuntu OpenStack install"
|
|
||||||
echo "usage: $0 dest"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Clean up any resources that may be in use
|
|
||||||
function cleanup {
|
|
||||||
set +o errexit
|
|
||||||
|
|
||||||
# Mop up temporary files
|
|
||||||
if [ -n "$MNTDIR" -a -d "$MNTDIR" ]; then
|
|
||||||
umount $MNTDIR
|
|
||||||
rmdir $MNTDIR
|
|
||||||
fi
|
|
||||||
if [ -n "$DEV_FILE_TMP" -a -e "$DEV_FILE_TMP" ]; then
|
|
||||||
rm -f $DEV_FILE_TMP
|
|
||||||
fi
|
|
||||||
if [ -n "$IMG_FILE_TMP" -a -e "$IMG_FILE_TMP" ]; then
|
|
||||||
rm -f $IMG_FILE_TMP
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Release NBD devices
|
|
||||||
if [ -n "$NBD" ]; then
|
|
||||||
qemu-nbd -d $NBD
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Kill ourselves to signal any calling process
|
|
||||||
trap 2; kill -2 $$
|
|
||||||
}
|
|
||||||
|
|
||||||
trap cleanup SIGHUP SIGINT SIGTERM
|
|
||||||
|
|
||||||
# Set up nbd
|
|
||||||
modprobe nbd max_part=63
|
|
||||||
|
|
||||||
# Echo commands
|
|
||||||
set -o xtrace
|
|
||||||
|
|
||||||
IMG_FILE=$1
|
|
||||||
|
|
||||||
# Keep track of the current directory
|
|
||||||
TOOLS_DIR=$(cd $(dirname "$0") && pwd)
|
|
||||||
TOP_DIR=$(cd $TOOLS_DIR/..; pwd)
|
|
||||||
|
|
||||||
# Import common functions
|
|
||||||
. $TOP_DIR/functions
|
|
||||||
|
|
||||||
# Store cwd
|
|
||||||
CWD=`pwd`
|
|
||||||
|
|
||||||
cd $TOP_DIR
|
|
||||||
|
|
||||||
# Source params
|
|
||||||
source ./stackrc
|
|
||||||
|
|
||||||
CACHEDIR=${CACHEDIR:-/opt/stack/cache}
|
|
||||||
|
|
||||||
DEST=${DEST:-/opt/stack}
|
|
||||||
|
|
||||||
# Configure the root password of the vm to be the same as ``ADMIN_PASSWORD``
|
|
||||||
ROOT_PASSWORD=${ADMIN_PASSWORD:-password}
|
|
||||||
|
|
||||||
# Base image (natty by default)
|
|
||||||
DIST_NAME=${DIST_NAME:-natty}
|
|
||||||
|
|
||||||
# Param string to pass to stack.sh. Like "EC2_DMZ_HOST=192.168.1.1 MYSQL_USER=nova"
|
|
||||||
STACKSH_PARAMS=${STACKSH_PARAMS:-}
|
|
||||||
|
|
||||||
# Option to use the version of devstack on which we are currently working
|
|
||||||
USE_CURRENT_DEVSTACK=${USE_CURRENT_DEVSTACK:-1}
|
|
||||||
|
|
||||||
# clean install
|
|
||||||
if [ ! -r $CACHEDIR/$DIST_NAME-base.img ]; then
|
|
||||||
$TOOLS_DIR/get_uec_image.sh $DIST_NAME $CACHEDIR/$DIST_NAME-base.img
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Finds and returns full device path for the next available NBD device.
|
|
||||||
# Exits script if error connecting or none free.
|
|
||||||
# map_nbd image
|
|
||||||
function map_nbd {
|
|
||||||
for i in `seq 0 15`; do
|
|
||||||
if [ ! -e /sys/block/nbd$i/pid ]; then
|
|
||||||
NBD=/dev/nbd$i
|
|
||||||
# Connect to nbd and wait till it is ready
|
|
||||||
qemu-nbd -c $NBD $1
|
|
||||||
if ! timeout 60 sh -c "while ! [ -e ${NBD}p1 ]; do sleep 1; done"; then
|
|
||||||
echo "Couldn't connect $NBD"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if [ -z "$NBD" ]; then
|
|
||||||
echo "No free NBD slots"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo $NBD
|
|
||||||
}
|
|
||||||
|
|
||||||
# Prime image with as many apt as we can
|
|
||||||
DEV_FILE=$CACHEDIR/$DIST_NAME-dev.img
|
|
||||||
DEV_FILE_TMP=`mktemp $DEV_FILE.XXXXXX`
|
|
||||||
if [ ! -r $DEV_FILE ]; then
|
|
||||||
cp -p $CACHEDIR/$DIST_NAME-base.img $DEV_FILE_TMP
|
|
||||||
|
|
||||||
NBD=`map_nbd $DEV_FILE_TMP`
|
|
||||||
MNTDIR=`mktemp -d --tmpdir mntXXXXXXXX`
|
|
||||||
mount -t ext4 ${NBD}p1 $MNTDIR
|
|
||||||
cp -p /etc/resolv.conf $MNTDIR/etc/resolv.conf
|
|
||||||
|
|
||||||
chroot $MNTDIR apt-get install -y --download-only `cat files/apts/* | grep NOPRIME | cut -d\# -f1`
|
|
||||||
chroot $MNTDIR apt-get install -y --force-yes `cat files/apts/* | grep -v NOPRIME | cut -d\# -f1`
|
|
||||||
|
|
||||||
# Create a stack user that is a member of the libvirtd group so that stack
|
|
||||||
# is able to interact with libvirt.
|
|
||||||
chroot $MNTDIR groupadd libvirtd
|
|
||||||
chroot $MNTDIR useradd $STACK_USER -s /bin/bash -d $DEST -G libvirtd
|
|
||||||
mkdir -p $MNTDIR/$DEST
|
|
||||||
chroot $MNTDIR chown $STACK_USER $DEST
|
|
||||||
|
|
||||||
# A simple password - pass
|
|
||||||
echo $STACK_USER:pass | chroot $MNTDIR chpasswd
|
|
||||||
echo root:$ROOT_PASSWORD | chroot $MNTDIR chpasswd
|
|
||||||
|
|
||||||
# And has sudo ability (in the future this should be limited to only what
|
|
||||||
# stack requires)
|
|
||||||
echo "$STACK_USER ALL=(ALL) NOPASSWD: ALL" >> $MNTDIR/etc/sudoers
|
|
||||||
|
|
||||||
umount $MNTDIR
|
|
||||||
rmdir $MNTDIR
|
|
||||||
qemu-nbd -d $NBD
|
|
||||||
NBD=""
|
|
||||||
mv $DEV_FILE_TMP $DEV_FILE
|
|
||||||
fi
|
|
||||||
rm -f $DEV_FILE_TMP
|
|
||||||
|
|
||||||
|
|
||||||
# Clone git repositories onto the system
|
|
||||||
# ======================================
|
|
||||||
|
|
||||||
IMG_FILE_TMP=`mktemp $IMG_FILE.XXXXXX`
|
|
||||||
|
|
||||||
if [ ! -r $IMG_FILE ]; then
|
|
||||||
NBD=`map_nbd $DEV_FILE`
|
|
||||||
|
|
||||||
# Pre-create the image file
|
|
||||||
# FIXME(dt): This should really get the partition size to
|
|
||||||
# pre-create the image file
|
|
||||||
dd if=/dev/zero of=$IMG_FILE_TMP bs=1 count=1 seek=$((2*1024*1024*1024))
|
|
||||||
# Create filesystem image for RAM disk
|
|
||||||
dd if=${NBD}p1 of=$IMG_FILE_TMP bs=1M
|
|
||||||
|
|
||||||
qemu-nbd -d $NBD
|
|
||||||
NBD=""
|
|
||||||
mv $IMG_FILE_TMP $IMG_FILE
|
|
||||||
fi
|
|
||||||
rm -f $IMG_FILE_TMP
|
|
||||||
|
|
||||||
MNTDIR=`mktemp -d --tmpdir mntXXXXXXXX`
|
|
||||||
mount -t ext4 -o loop $IMG_FILE $MNTDIR
|
|
||||||
cp -p /etc/resolv.conf $MNTDIR/etc/resolv.conf
|
|
||||||
|
|
||||||
# We need to install a non-virtual kernel and modules to boot from
|
|
||||||
if [ ! -r "`ls $MNTDIR/boot/vmlinuz-*-generic | head -1`" ]; then
|
|
||||||
chroot $MNTDIR apt-get install -y linux-generic
|
|
||||||
fi
|
|
||||||
|
|
||||||
git_clone $NOVA_REPO $DEST/nova $NOVA_BRANCH
|
|
||||||
git_clone $GLANCE_REPO $DEST/glance $GLANCE_BRANCH
|
|
||||||
git_clone $KEYSTONE_REPO $DEST/keystone $KEYSTONE_BRANCH
|
|
||||||
git_clone $NOVNC_REPO $DEST/novnc $NOVNC_BRANCH
|
|
||||||
git_clone $HORIZON_REPO $DEST/horizon $HORIZON_BRANCH
|
|
||||||
git_clone $NOVACLIENT_REPO $DEST/python-novaclient $NOVACLIENT_BRANCH
|
|
||||||
git_clone $OPENSTACKX_REPO $DEST/openstackx $OPENSTACKX_BRANCH
|
|
||||||
|
|
||||||
# Use this version of devstack
|
|
||||||
rm -rf $MNTDIR/$DEST/devstack
|
|
||||||
cp -pr $CWD $MNTDIR/$DEST/devstack
|
|
||||||
chroot $MNTDIR chown -R $STACK_USER $DEST/devstack
|
|
||||||
|
|
||||||
# Configure host network for DHCP
|
|
||||||
mkdir -p $MNTDIR/etc/network
|
|
||||||
cat > $MNTDIR/etc/network/interfaces <<EOF
|
|
||||||
auto lo
|
|
||||||
iface lo inet loopback
|
|
||||||
|
|
||||||
auto eth0
|
|
||||||
iface eth0 inet dhcp
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Set hostname
|
|
||||||
echo "ramstack" >$MNTDIR/etc/hostname
|
|
||||||
echo "127.0.0.1 localhost ramstack" >$MNTDIR/etc/hosts
|
|
||||||
|
|
||||||
# Configure the runner
|
|
||||||
RUN_SH=$MNTDIR/$DEST/run.sh
|
|
||||||
cat > $RUN_SH <<EOF
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Get IP range
|
|
||||||
set \`ip addr show dev eth0 | grep inet\`
|
|
||||||
PREFIX=\`echo \$2 | cut -d. -f1,2,3\`
|
|
||||||
export FLOATING_RANGE="\$PREFIX.224/27"
|
|
||||||
|
|
||||||
# Kill any existing screens
|
|
||||||
killall screen
|
|
||||||
|
|
||||||
# Run stack.sh
|
|
||||||
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
|
|
||||||
|
|
||||||
# Make the run.sh executable
|
|
||||||
chmod 755 $RUN_SH
|
|
||||||
chroot $MNTDIR chown $STACK_USER $DEST/run.sh
|
|
||||||
|
|
||||||
umount $MNTDIR
|
|
||||||
rmdir $MNTDIR
|
|
@ -1,180 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# **build_uec_ramdisk.sh**
|
|
||||||
|
|
||||||
# Build RAM disk images based on UEC image
|
|
||||||
|
|
||||||
# Exit on error to stop unexpected errors
|
|
||||||
set -o errexit
|
|
||||||
|
|
||||||
if [ ! "$#" -eq "1" ]; then
|
|
||||||
echo "$0 builds a gziped Ubuntu OpenStack install"
|
|
||||||
echo "usage: $0 dest"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Make sure that we have the proper version of ubuntu (only works on oneiric)
|
|
||||||
if ! egrep -q "oneiric" /etc/lsb-release; then
|
|
||||||
echo "This script only works with ubuntu oneiric."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Clean up resources that may be in use
|
|
||||||
function cleanup {
|
|
||||||
set +o errexit
|
|
||||||
|
|
||||||
if [ -n "$MNT_DIR" ]; then
|
|
||||||
umount $MNT_DIR/dev
|
|
||||||
umount $MNT_DIR
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$DEST_FILE_TMP" ]; then
|
|
||||||
rm $DEST_FILE_TMP
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Kill ourselves to signal parents
|
|
||||||
trap 2; kill -2 $$
|
|
||||||
}
|
|
||||||
|
|
||||||
trap cleanup SIGHUP SIGINT SIGTERM SIGQUIT EXIT
|
|
||||||
|
|
||||||
# Output dest image
|
|
||||||
DEST_FILE=$1
|
|
||||||
|
|
||||||
# Keep track of the current directory
|
|
||||||
TOOLS_DIR=$(cd $(dirname "$0") && pwd)
|
|
||||||
TOP_DIR=$(cd $TOOLS_DIR/..; pwd)
|
|
||||||
|
|
||||||
# Import common functions
|
|
||||||
. $TOP_DIR/functions
|
|
||||||
|
|
||||||
cd $TOP_DIR
|
|
||||||
|
|
||||||
# Source params
|
|
||||||
source ./stackrc
|
|
||||||
|
|
||||||
DEST=${DEST:-/opt/stack}
|
|
||||||
|
|
||||||
# Ubuntu distro to install
|
|
||||||
DIST_NAME=${DIST_NAME:-oneiric}
|
|
||||||
|
|
||||||
# Configure how large the VM should be
|
|
||||||
GUEST_SIZE=${GUEST_SIZE:-2G}
|
|
||||||
|
|
||||||
# Exit on error to stop unexpected errors
|
|
||||||
set -o errexit
|
|
||||||
set -o xtrace
|
|
||||||
|
|
||||||
# Abort if localrc is not set
|
|
||||||
if [ ! -e $TOP_DIR/localrc ]; then
|
|
||||||
echo "You must have a localrc with ALL necessary passwords defined before proceeding."
|
|
||||||
echo "See stack.sh for required passwords."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Install deps if needed
|
|
||||||
DEPS="kvm libvirt-bin kpartx cloud-utils curl"
|
|
||||||
apt_get install -y --force-yes $DEPS
|
|
||||||
|
|
||||||
# Where to store files and instances
|
|
||||||
CACHEDIR=${CACHEDIR:-/opt/stack/cache}
|
|
||||||
WORK_DIR=${WORK_DIR:-/opt/ramstack}
|
|
||||||
|
|
||||||
# Where to store images
|
|
||||||
image_dir=$WORK_DIR/images/$DIST_NAME
|
|
||||||
mkdir -p $image_dir
|
|
||||||
|
|
||||||
# Get the base image if it does not yet exist
|
|
||||||
if [ ! -e $image_dir/disk ]; then
|
|
||||||
$TOOLS_DIR/get_uec_image.sh -r 2000M $DIST_NAME $image_dir/disk
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Configure the root password of the vm to be the same as ``ADMIN_PASSWORD``
|
|
||||||
ROOT_PASSWORD=${ADMIN_PASSWORD:-password}
|
|
||||||
|
|
||||||
# Name of our instance, used by libvirt
|
|
||||||
GUEST_NAME=${GUEST_NAME:-devstack}
|
|
||||||
|
|
||||||
# Pre-load the image with basic environment
|
|
||||||
if [ ! -e $image_dir/disk-primed ]; then
|
|
||||||
cp $image_dir/disk $image_dir/disk-primed
|
|
||||||
$TOOLS_DIR/warm_apts_for_uec.sh $image_dir/disk-primed
|
|
||||||
$TOOLS_DIR/copy_dev_environment_to_uec.sh $image_dir/disk-primed
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Back to devstack
|
|
||||||
cd $TOP_DIR
|
|
||||||
|
|
||||||
DEST_FILE_TMP=`mktemp $DEST_FILE.XXXXXX`
|
|
||||||
MNT_DIR=`mktemp -d --tmpdir mntXXXXXXXX`
|
|
||||||
cp $image_dir/disk-primed $DEST_FILE_TMP
|
|
||||||
mount -t ext4 -o loop $DEST_FILE_TMP $MNT_DIR
|
|
||||||
mount -o bind /dev /$MNT_DIR/dev
|
|
||||||
cp -p /etc/resolv.conf $MNT_DIR/etc/resolv.conf
|
|
||||||
echo root:$ROOT_PASSWORD | chroot $MNT_DIR chpasswd
|
|
||||||
touch $MNT_DIR/$DEST/.ramdisk
|
|
||||||
|
|
||||||
# We need to install a non-virtual kernel and modules to boot from
|
|
||||||
if [ ! -r "`ls $MNT_DIR/boot/vmlinuz-*-generic | head -1`" ]; then
|
|
||||||
chroot $MNT_DIR apt-get install -y linux-generic
|
|
||||||
fi
|
|
||||||
|
|
||||||
git_clone $NOVA_REPO $DEST/nova $NOVA_BRANCH
|
|
||||||
git_clone $GLANCE_REPO $DEST/glance $GLANCE_BRANCH
|
|
||||||
git_clone $KEYSTONE_REPO $DEST/keystone $KEYSTONE_BRANCH
|
|
||||||
git_clone $NOVNC_REPO $DEST/novnc $NOVNC_BRANCH
|
|
||||||
git_clone $HORIZON_REPO $DEST/horizon $HORIZON_BRANCH
|
|
||||||
git_clone $NOVACLIENT_REPO $DEST/python-novaclient $NOVACLIENT_BRANCH
|
|
||||||
git_clone $OPENSTACKX_REPO $DEST/openstackx $OPENSTACKX_BRANCH
|
|
||||||
git_clone $TEMPEST_REPO $DEST/tempest $TEMPEST_BRANCH
|
|
||||||
|
|
||||||
# Use this version of devstack
|
|
||||||
rm -rf $MNT_DIR/$DEST/devstack
|
|
||||||
cp -pr $TOP_DIR $MNT_DIR/$DEST/devstack
|
|
||||||
chroot $MNT_DIR chown -R stack $DEST/devstack
|
|
||||||
|
|
||||||
# Configure host network for DHCP
|
|
||||||
mkdir -p $MNT_DIR/etc/network
|
|
||||||
cat > $MNT_DIR/etc/network/interfaces <<EOF
|
|
||||||
auto lo
|
|
||||||
iface lo inet loopback
|
|
||||||
|
|
||||||
auto eth0
|
|
||||||
iface eth0 inet dhcp
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Set hostname
|
|
||||||
echo "ramstack" >$MNT_DIR/etc/hostname
|
|
||||||
echo "127.0.0.1 localhost ramstack" >$MNT_DIR/etc/hosts
|
|
||||||
|
|
||||||
# Configure the runner
|
|
||||||
RUN_SH=$MNT_DIR/$DEST/run.sh
|
|
||||||
cat > $RUN_SH <<EOF
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Get IP range
|
|
||||||
set \`ip addr show dev eth0 | grep inet\`
|
|
||||||
PREFIX=\`echo \$2 | cut -d. -f1,2,3\`
|
|
||||||
export FLOATING_RANGE="\$PREFIX.224/27"
|
|
||||||
|
|
||||||
# Kill any existing screens
|
|
||||||
killall screen
|
|
||||||
|
|
||||||
# Run stack.sh
|
|
||||||
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
|
|
||||||
|
|
||||||
# Make the run.sh executable
|
|
||||||
chmod 755 $RUN_SH
|
|
||||||
chroot $MNT_DIR chown stack $DEST/run.sh
|
|
||||||
|
|
||||||
umount $MNT_DIR/dev
|
|
||||||
umount $MNT_DIR
|
|
||||||
rmdir $MNT_DIR
|
|
||||||
mv $DEST_FILE_TMP $DEST_FILE
|
|
||||||
rm -f $DEST_FILE_TMP
|
|
||||||
|
|
||||||
trap - SIGHUP SIGINT SIGTERM SIGQUIT EXIT
|
|
@ -1,148 +0,0 @@
|
|||||||
#!/bin/bash -e
|
|
||||||
|
|
||||||
# **build_usb_boot.sh**
|
|
||||||
|
|
||||||
# Create a syslinux boot environment
|
|
||||||
#
|
|
||||||
# build_usb_boot.sh destdev
|
|
||||||
#
|
|
||||||
# Assumes syslinux is installed
|
|
||||||
# Needs to run as root
|
|
||||||
|
|
||||||
DEST_DIR=${1:-/tmp/syslinux-boot}
|
|
||||||
PXEDIR=${PXEDIR:-/opt/ramstack/pxe}
|
|
||||||
|
|
||||||
# Clean up any resources that may be in use
|
|
||||||
function cleanup {
|
|
||||||
set +o errexit
|
|
||||||
|
|
||||||
# Mop up temporary files
|
|
||||||
if [ -n "$DEST_DEV" ]; then
|
|
||||||
umount $DEST_DIR
|
|
||||||
rmdir $DEST_DIR
|
|
||||||
fi
|
|
||||||
if [ -n "$MNTDIR" -a -d "$MNTDIR" ]; then
|
|
||||||
umount $MNTDIR
|
|
||||||
rmdir $MNTDIR
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Kill ourselves to signal any calling process
|
|
||||||
trap 2; kill -2 $$
|
|
||||||
}
|
|
||||||
|
|
||||||
trap cleanup SIGHUP SIGINT SIGTERM SIGQUIT EXIT
|
|
||||||
|
|
||||||
# Keep track of the current directory
|
|
||||||
TOOLS_DIR=$(cd $(dirname "$0") && pwd)
|
|
||||||
TOP_DIR=`cd $TOOLS_DIR/..; pwd`
|
|
||||||
|
|
||||||
if [ -b $DEST_DIR ]; then
|
|
||||||
# We have a block device, install syslinux and mount it
|
|
||||||
DEST_DEV=$DEST_DIR
|
|
||||||
DEST_DIR=`mktemp -d --tmpdir mntXXXXXX`
|
|
||||||
mount $DEST_DEV $DEST_DIR
|
|
||||||
|
|
||||||
if [ ! -d $DEST_DIR/syslinux ]; then
|
|
||||||
mkdir -p $DEST_DIR/syslinux
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Install syslinux on the device
|
|
||||||
syslinux --install --directory syslinux $DEST_DEV
|
|
||||||
else
|
|
||||||
# We have a directory (for sanity checking output)
|
|
||||||
DEST_DEV=""
|
|
||||||
if [ ! -d $DEST_DIR/syslinux ]; then
|
|
||||||
mkdir -p $DEST_DIR/syslinux
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Get some more stuff from syslinux
|
|
||||||
for i in memdisk menu.c32; do
|
|
||||||
cp -pu /usr/lib/syslinux/$i $DEST_DIR/syslinux
|
|
||||||
done
|
|
||||||
|
|
||||||
CFG=$DEST_DIR/syslinux/syslinux.cfg
|
|
||||||
cat >$CFG <<EOF
|
|
||||||
default /syslinux/menu.c32
|
|
||||||
prompt 0
|
|
||||||
timeout 0
|
|
||||||
|
|
||||||
MENU TITLE devstack Boot Menu
|
|
||||||
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Setup devstack boot
|
|
||||||
mkdir -p $DEST_DIR/ubuntu
|
|
||||||
if [ ! -d $PXEDIR ]; then
|
|
||||||
mkdir -p $PXEDIR
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Get image into place
|
|
||||||
if [ ! -r $PXEDIR/stack-initrd.img ]; then
|
|
||||||
cd $TOP_DIR
|
|
||||||
$TOOLS_DIR/build_uec_ramdisk.sh $PXEDIR/stack-initrd.img
|
|
||||||
fi
|
|
||||||
if [ ! -r $PXEDIR/stack-initrd.gz ]; then
|
|
||||||
gzip -1 -c $PXEDIR/stack-initrd.img >$PXEDIR/stack-initrd.gz
|
|
||||||
fi
|
|
||||||
cp -pu $PXEDIR/stack-initrd.gz $DEST_DIR/ubuntu
|
|
||||||
|
|
||||||
if [ ! -r $PXEDIR/vmlinuz-*-generic ]; then
|
|
||||||
MNTDIR=`mktemp -d --tmpdir mntXXXXXXXX`
|
|
||||||
mount -t ext4 -o loop $PXEDIR/stack-initrd.img $MNTDIR
|
|
||||||
|
|
||||||
if [ ! -r $MNTDIR/boot/vmlinuz-*-generic ]; then
|
|
||||||
echo "No kernel found"
|
|
||||||
umount $MNTDIR
|
|
||||||
rmdir $MNTDIR
|
|
||||||
if [ -n "$DEST_DEV" ]; then
|
|
||||||
umount $DEST_DIR
|
|
||||||
rmdir $DEST_DIR
|
|
||||||
fi
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
cp -pu $MNTDIR/boot/vmlinuz-*-generic $PXEDIR
|
|
||||||
fi
|
|
||||||
umount $MNTDIR
|
|
||||||
rmdir $MNTDIR
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Get generic kernel version
|
|
||||||
KNAME=`basename $PXEDIR/vmlinuz-*-generic`
|
|
||||||
KVER=${KNAME#vmlinuz-}
|
|
||||||
cp -pu $PXEDIR/vmlinuz-$KVER $DEST_DIR/ubuntu
|
|
||||||
cat >>$CFG <<EOF
|
|
||||||
|
|
||||||
LABEL devstack
|
|
||||||
MENU LABEL ^devstack
|
|
||||||
MENU DEFAULT
|
|
||||||
KERNEL /ubuntu/vmlinuz-$KVER
|
|
||||||
APPEND initrd=/ubuntu/stack-initrd.gz ramdisk_size=2109600 root=/dev/ram0
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Get Ubuntu
|
|
||||||
if [ -d $PXEDIR -a -r $PXEDIR/natty-base-initrd.gz ]; then
|
|
||||||
cp -pu $PXEDIR/natty-base-initrd.gz $DEST_DIR/ubuntu
|
|
||||||
cat >>$CFG <<EOF
|
|
||||||
|
|
||||||
LABEL ubuntu
|
|
||||||
MENU LABEL ^Ubuntu Natty
|
|
||||||
KERNEL /ubuntu/vmlinuz-$KVER
|
|
||||||
APPEND initrd=/ubuntu/natty-base-initrd.gz ramdisk_size=419600 root=/dev/ram0
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Local disk boot
|
|
||||||
cat >>$CFG <<EOF
|
|
||||||
|
|
||||||
LABEL local
|
|
||||||
MENU LABEL ^Local disk
|
|
||||||
LOCALBOOT 0
|
|
||||||
EOF
|
|
||||||
|
|
||||||
if [ -n "$DEST_DEV" ]; then
|
|
||||||
umount $DEST_DIR
|
|
||||||
rmdir $DEST_DIR
|
|
||||||
fi
|
|
||||||
|
|
||||||
trap - SIGHUP SIGINT SIGTERM SIGQUIT EXIT
|
|
@ -1,73 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# **copy_dev_environment_to_uec.sh**
|
|
||||||
|
|
||||||
# Echo commands
|
|
||||||
set -o xtrace
|
|
||||||
|
|
||||||
# Exit on error to stop unexpected errors
|
|
||||||
set -o errexit
|
|
||||||
|
|
||||||
# Keep track of the current directory
|
|
||||||
TOOLS_DIR=$(cd $(dirname "$0") && pwd)
|
|
||||||
TOP_DIR=$(cd $TOOLS_DIR/..; pwd)
|
|
||||||
|
|
||||||
# Import common functions
|
|
||||||
. $TOP_DIR/functions
|
|
||||||
|
|
||||||
# Change dir to top of devstack
|
|
||||||
cd $TOP_DIR
|
|
||||||
|
|
||||||
# Source params
|
|
||||||
source ./stackrc
|
|
||||||
|
|
||||||
# Echo usage
|
|
||||||
function usage {
|
|
||||||
echo "Add stack user and keys"
|
|
||||||
echo ""
|
|
||||||
echo "Usage: $0 [full path to raw uec base image]"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Make sure this is a raw image
|
|
||||||
if ! qemu-img info $1 | grep -q "file format: raw"; then
|
|
||||||
usage
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Mount the image
|
|
||||||
DEST=/opt/stack
|
|
||||||
STAGING_DIR=/tmp/`echo $1 | sed "s/\//_/g"`.stage.user
|
|
||||||
mkdir -p $STAGING_DIR
|
|
||||||
umount $STAGING_DIR || true
|
|
||||||
sleep 1
|
|
||||||
mount -t ext4 -o loop $1 $STAGING_DIR
|
|
||||||
mkdir -p $STAGING_DIR/$DEST
|
|
||||||
|
|
||||||
# Create a stack user that is a member of the libvirtd group so that stack
|
|
||||||
# is able to interact with libvirt.
|
|
||||||
chroot $STAGING_DIR groupadd libvirtd || true
|
|
||||||
chroot $STAGING_DIR useradd $STACK_USER -s /bin/bash -d $DEST -G libvirtd || true
|
|
||||||
|
|
||||||
# Add a simple password - pass
|
|
||||||
echo $STACK_USER:pass | chroot $STAGING_DIR chpasswd
|
|
||||||
|
|
||||||
# Configure sudo
|
|
||||||
( umask 226 && echo "$STACK_USER ALL=(ALL) NOPASSWD:ALL" \
|
|
||||||
> $STAGING_DIR/etc/sudoers.d/50_stack_sh )
|
|
||||||
|
|
||||||
# Copy over your ssh keys and env if desired
|
|
||||||
cp_it ~/.ssh $STAGING_DIR/$DEST/.ssh
|
|
||||||
cp_it ~/.ssh/id_rsa.pub $STAGING_DIR/$DEST/.ssh/authorized_keys
|
|
||||||
cp_it ~/.gitconfig $STAGING_DIR/$DEST/.gitconfig
|
|
||||||
cp_it ~/.vimrc $STAGING_DIR/$DEST/.vimrc
|
|
||||||
cp_it ~/.bashrc $STAGING_DIR/$DEST/.bashrc
|
|
||||||
|
|
||||||
# Copy devstack
|
|
||||||
rm -rf $STAGING_DIR/$DEST/devstack
|
|
||||||
cp_it . $STAGING_DIR/$DEST/devstack
|
|
||||||
|
|
||||||
# Give stack ownership over $DEST so it may do the work needed
|
|
||||||
chroot $STAGING_DIR chown -R $STACK_USER $DEST
|
|
||||||
|
|
||||||
# Unmount
|
|
||||||
umount $STAGING_DIR
|
|
@ -1,109 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# **get_uec_image.sh**
|
|
||||||
|
|
||||||
# Download and prepare Ubuntu UEC images
|
|
||||||
|
|
||||||
CACHEDIR=${CACHEDIR:-/opt/stack/cache}
|
|
||||||
ROOTSIZE=${ROOTSIZE:-2000M}
|
|
||||||
|
|
||||||
# Keep track of the current directory
|
|
||||||
TOOLS_DIR=$(cd $(dirname "$0") && pwd)
|
|
||||||
TOP_DIR=$(cd $TOOLS_DIR/..; pwd)
|
|
||||||
|
|
||||||
# Import common functions
|
|
||||||
. $TOP_DIR/functions
|
|
||||||
|
|
||||||
# Exit on error to stop unexpected errors
|
|
||||||
set -o errexit
|
|
||||||
set -o xtrace
|
|
||||||
|
|
||||||
function usage {
|
|
||||||
echo "Usage: $0 - Download and prepare Ubuntu UEC images"
|
|
||||||
echo ""
|
|
||||||
echo "$0 [-r rootsize] release imagefile [kernel]"
|
|
||||||
echo ""
|
|
||||||
echo "-r size - root fs size (min 2000MB)"
|
|
||||||
echo "release - Ubuntu release: lucid - quantal"
|
|
||||||
echo "imagefile - output image file"
|
|
||||||
echo "kernel - output kernel"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Clean up any resources that may be in use
|
|
||||||
function cleanup {
|
|
||||||
set +o errexit
|
|
||||||
|
|
||||||
# Mop up temporary files
|
|
||||||
if [ -n "$IMG_FILE_TMP" -a -e "$IMG_FILE_TMP" ]; then
|
|
||||||
rm -f $IMG_FILE_TMP
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Kill ourselves to signal any calling process
|
|
||||||
trap 2; kill -2 $$
|
|
||||||
}
|
|
||||||
|
|
||||||
while getopts hr: c; do
|
|
||||||
case $c in
|
|
||||||
h) usage
|
|
||||||
;;
|
|
||||||
r) ROOTSIZE=$OPTARG
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
shift `expr $OPTIND - 1`
|
|
||||||
|
|
||||||
if [[ ! "$#" -eq "2" && ! "$#" -eq "3" ]]; then
|
|
||||||
usage
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Default args
|
|
||||||
DIST_NAME=$1
|
|
||||||
IMG_FILE=$2
|
|
||||||
IMG_FILE_TMP=`mktemp $IMG_FILE.XXXXXX`
|
|
||||||
KERNEL=$3
|
|
||||||
|
|
||||||
case $DIST_NAME in
|
|
||||||
saucy) ;;
|
|
||||||
raring) ;;
|
|
||||||
quantal) ;;
|
|
||||||
precise) ;;
|
|
||||||
*) echo "Unknown release: $DIST_NAME"
|
|
||||||
usage
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
trap cleanup SIGHUP SIGINT SIGTERM SIGQUIT EXIT
|
|
||||||
|
|
||||||
# Check dependencies
|
|
||||||
if [ ! -x "`which qemu-img`" -o -z "`dpkg -l | grep cloud-utils`" ]; then
|
|
||||||
# Missing KVM?
|
|
||||||
apt_get install qemu-kvm cloud-utils
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Find resize script
|
|
||||||
RESIZE=`which resize-part-image || which uec-resize-image`
|
|
||||||
if [ -z "$RESIZE" ]; then
|
|
||||||
echo "resize tool from cloud-utils not found"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Get the UEC image
|
|
||||||
UEC_NAME=$DIST_NAME-server-cloudimg-amd64
|
|
||||||
if [ ! -d $CACHEDIR/$DIST_NAME ]; then
|
|
||||||
mkdir -p $CACHEDIR/$DIST_NAME
|
|
||||||
fi
|
|
||||||
if [ ! -e $CACHEDIR/$DIST_NAME/$UEC_NAME.tar.gz ]; then
|
|
||||||
(cd $CACHEDIR/$DIST_NAME && wget -N http://uec-images.ubuntu.com/$DIST_NAME/current/$UEC_NAME.tar.gz)
|
|
||||||
(cd $CACHEDIR/$DIST_NAME && tar Sxvzf $UEC_NAME.tar.gz)
|
|
||||||
fi
|
|
||||||
|
|
||||||
$RESIZE $CACHEDIR/$DIST_NAME/$UEC_NAME.img ${ROOTSIZE} $IMG_FILE_TMP
|
|
||||||
mv $IMG_FILE_TMP $IMG_FILE
|
|
||||||
|
|
||||||
# Copy kernel to destination
|
|
||||||
if [ -n "$KERNEL" ]; then
|
|
||||||
cp -p $CACHEDIR/$DIST_NAME/*-vmlinuz-virtual $KERNEL
|
|
||||||
fi
|
|
||||||
|
|
||||||
trap - SIGHUP SIGINT SIGTERM SIGQUIT EXIT
|
|
@ -1,221 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# **install_openvpn.sh**
|
|
||||||
|
|
||||||
# Install OpenVPN and generate required certificates
|
|
||||||
#
|
|
||||||
# install_openvpn.sh --client name
|
|
||||||
# install_openvpn.sh --server [name]
|
|
||||||
#
|
|
||||||
# name is used on the CN of the generated cert, and the filename of
|
|
||||||
# the configuration, certificate and key files.
|
|
||||||
#
|
|
||||||
# --server mode configures the host with a running OpenVPN server instance
|
|
||||||
# --client mode creates a tarball of a client configuration for this server
|
|
||||||
|
|
||||||
# Get config file
|
|
||||||
if [ -e localrc ]; then
|
|
||||||
. localrc
|
|
||||||
fi
|
|
||||||
if [ -e vpnrc ]; then
|
|
||||||
. vpnrc
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Do some IP manipulation
|
|
||||||
function cidr2netmask {
|
|
||||||
set -- $(( 5 - ($1 / 8) )) 255 255 255 255 $(( (255 << (8 - ($1 % 8))) & 255 )) 0 0 0
|
|
||||||
if [[ $1 -gt 1 ]]; then
|
|
||||||
shift $1
|
|
||||||
else
|
|
||||||
shift
|
|
||||||
fi
|
|
||||||
echo ${1-0}.${2-0}.${3-0}.${4-0}
|
|
||||||
}
|
|
||||||
|
|
||||||
FIXED_NET=`echo $FIXED_RANGE | cut -d'/' -f1`
|
|
||||||
FIXED_CIDR=`echo $FIXED_RANGE | cut -d'/' -f2`
|
|
||||||
FIXED_MASK=`cidr2netmask $FIXED_CIDR`
|
|
||||||
|
|
||||||
# VPN Config
|
|
||||||
VPN_SERVER=${VPN_SERVER:-`ifconfig eth0 | awk "/inet addr:/ { print \$2 }" | cut -d: -f2`} # 50.56.12.212
|
|
||||||
VPN_PROTO=${VPN_PROTO:-tcp}
|
|
||||||
VPN_PORT=${VPN_PORT:-6081}
|
|
||||||
VPN_DEV=${VPN_DEV:-tap0}
|
|
||||||
VPN_BRIDGE=${VPN_BRIDGE:-br100}
|
|
||||||
VPN_BRIDGE_IF=${VPN_BRIDGE_IF:-$FLAT_INTERFACE}
|
|
||||||
VPN_CLIENT_NET=${VPN_CLIENT_NET:-$FIXED_NET}
|
|
||||||
VPN_CLIENT_MASK=${VPN_CLIENT_MASK:-$FIXED_MASK}
|
|
||||||
VPN_CLIENT_DHCP="${VPN_CLIENT_DHCP:-net.1 net.254}"
|
|
||||||
|
|
||||||
VPN_DIR=/etc/openvpn
|
|
||||||
CA_DIR=$VPN_DIR/easy-rsa
|
|
||||||
|
|
||||||
function usage {
|
|
||||||
echo "$0 - OpenVPN install and certificate generation"
|
|
||||||
echo ""
|
|
||||||
echo "$0 --client name"
|
|
||||||
echo "$0 --server [name]"
|
|
||||||
echo ""
|
|
||||||
echo " --server mode configures the host with a running OpenVPN server instance"
|
|
||||||
echo " --client mode creates a tarball of a client configuration for this server"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ -z $1 ]; then
|
|
||||||
usage
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Install OpenVPN
|
|
||||||
VPN_EXEC=`which openvpn`
|
|
||||||
if [ -z "$VPN_EXEC" -o ! -x "$VPN_EXEC" ]; then
|
|
||||||
apt-get install -y openvpn bridge-utils
|
|
||||||
fi
|
|
||||||
if [ ! -d $CA_DIR ]; then
|
|
||||||
cp -pR /usr/share/doc/openvpn/examples/easy-rsa/2.0/ $CA_DIR
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Keep track of the current directory
|
|
||||||
TOOLS_DIR=$(cd $(dirname "$0") && pwd)
|
|
||||||
TOP_DIR=$(cd $TOOLS_DIR/.. && pwd)
|
|
||||||
|
|
||||||
WEB_DIR=$TOP_DIR/../vpn
|
|
||||||
if [[ ! -d $WEB_DIR ]]; then
|
|
||||||
mkdir -p $WEB_DIR
|
|
||||||
fi
|
|
||||||
WEB_DIR=$(cd $TOP_DIR/../vpn && pwd)
|
|
||||||
|
|
||||||
cd $CA_DIR
|
|
||||||
source ./vars
|
|
||||||
|
|
||||||
# Override the defaults
|
|
||||||
export KEY_COUNTRY="US"
|
|
||||||
export KEY_PROVINCE="TX"
|
|
||||||
export KEY_CITY="SanAntonio"
|
|
||||||
export KEY_ORG="Cloudbuilders"
|
|
||||||
export KEY_EMAIL="rcb@lists.rackspace.com"
|
|
||||||
|
|
||||||
if [ ! -r $CA_DIR/keys/dh1024.pem ]; then
|
|
||||||
# Initialize a new CA
|
|
||||||
$CA_DIR/clean-all
|
|
||||||
$CA_DIR/build-dh
|
|
||||||
$CA_DIR/pkitool --initca
|
|
||||||
openvpn --genkey --secret $CA_DIR/keys/ta.key ## Build a TLS key
|
|
||||||
fi
|
|
||||||
|
|
||||||
function do_server {
|
|
||||||
NAME=$1
|
|
||||||
# Generate server certificate
|
|
||||||
$CA_DIR/pkitool --server $NAME
|
|
||||||
|
|
||||||
(cd $CA_DIR/keys;
|
|
||||||
cp $NAME.crt $NAME.key ca.crt dh1024.pem ta.key $VPN_DIR
|
|
||||||
)
|
|
||||||
cat >$VPN_DIR/br-up <<EOF
|
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
BR="$VPN_BRIDGE"
|
|
||||||
TAP="\$1"
|
|
||||||
|
|
||||||
if [[ ! -d /sys/class/net/\$BR ]]; then
|
|
||||||
brctl addbr \$BR
|
|
||||||
fi
|
|
||||||
|
|
||||||
for t in \$TAP; do
|
|
||||||
openvpn --mktun --dev \$t
|
|
||||||
brctl addif \$BR \$t
|
|
||||||
ifconfig \$t 0.0.0.0 promisc up
|
|
||||||
done
|
|
||||||
EOF
|
|
||||||
chmod +x $VPN_DIR/br-up
|
|
||||||
cat >$VPN_DIR/br-down <<EOF
|
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
BR="$VPN_BRIDGE"
|
|
||||||
TAP="\$1"
|
|
||||||
|
|
||||||
for i in \$TAP; do
|
|
||||||
brctl delif \$BR $t
|
|
||||||
openvpn --rmtun --dev \$i
|
|
||||||
done
|
|
||||||
EOF
|
|
||||||
chmod +x $VPN_DIR/br-down
|
|
||||||
cat >$VPN_DIR/$NAME.conf <<EOF
|
|
||||||
proto $VPN_PROTO
|
|
||||||
port $VPN_PORT
|
|
||||||
dev $VPN_DEV
|
|
||||||
up $VPN_DIR/br-up
|
|
||||||
down $VPN_DIR/br-down
|
|
||||||
cert $NAME.crt
|
|
||||||
key $NAME.key # This file should be kept secret
|
|
||||||
ca ca.crt
|
|
||||||
dh dh1024.pem
|
|
||||||
duplicate-cn
|
|
||||||
server-bridge $VPN_CLIENT_NET $VPN_CLIENT_MASK $VPN_CLIENT_DHCP
|
|
||||||
ifconfig-pool-persist ipp.txt
|
|
||||||
comp-lzo
|
|
||||||
user nobody
|
|
||||||
group nogroup
|
|
||||||
persist-key
|
|
||||||
persist-tun
|
|
||||||
status openvpn-status.log
|
|
||||||
EOF
|
|
||||||
/etc/init.d/openvpn restart
|
|
||||||
}
|
|
||||||
|
|
||||||
function do_client {
|
|
||||||
NAME=$1
|
|
||||||
# Generate a client certificate
|
|
||||||
$CA_DIR/pkitool $NAME
|
|
||||||
|
|
||||||
TMP_DIR=`mktemp -d`
|
|
||||||
(cd $CA_DIR/keys;
|
|
||||||
cp -p ca.crt ta.key $NAME.key $NAME.crt $TMP_DIR
|
|
||||||
)
|
|
||||||
if [ -r $VPN_DIR/hostname ]; then
|
|
||||||
HOST=`cat $VPN_DIR/hostname`
|
|
||||||
else
|
|
||||||
HOST=`hostname`
|
|
||||||
fi
|
|
||||||
cat >$TMP_DIR/$HOST.conf <<EOF
|
|
||||||
proto $VPN_PROTO
|
|
||||||
port $VPN_PORT
|
|
||||||
dev $VPN_DEV
|
|
||||||
cert $NAME.crt
|
|
||||||
key $NAME.key # This file should be kept secret
|
|
||||||
ca ca.crt
|
|
||||||
client
|
|
||||||
remote $VPN_SERVER $VPN_PORT
|
|
||||||
resolv-retry infinite
|
|
||||||
nobind
|
|
||||||
user nobody
|
|
||||||
group nogroup
|
|
||||||
persist-key
|
|
||||||
persist-tun
|
|
||||||
comp-lzo
|
|
||||||
verb 3
|
|
||||||
EOF
|
|
||||||
(cd $TMP_DIR; tar cf $WEB_DIR/$NAME.tar *)
|
|
||||||
rm -rf $TMP_DIR
|
|
||||||
echo "Client certificate and configuration is in $WEB_DIR/$NAME.tar"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Process command line args
|
|
||||||
case $1 in
|
|
||||||
--client) if [ -z $2 ]; then
|
|
||||||
usage
|
|
||||||
fi
|
|
||||||
do_client $2
|
|
||||||
;;
|
|
||||||
--server) if [ -z $2 ]; then
|
|
||||||
NAME=`hostname`
|
|
||||||
else
|
|
||||||
NAME=$2
|
|
||||||
# Save for --client use
|
|
||||||
echo $NAME >$VPN_DIR/hostname
|
|
||||||
fi
|
|
||||||
do_server $NAME
|
|
||||||
;;
|
|
||||||
--clean) $CA_DIR/clean-all
|
|
||||||
;;
|
|
||||||
*) usage
|
|
||||||
esac
|
|
@ -1,53 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# **warm_apts_for_uec.sh**
|
|
||||||
|
|
||||||
# Echo commands
|
|
||||||
set -o xtrace
|
|
||||||
|
|
||||||
# Exit on error to stop unexpected errors
|
|
||||||
set -o errexit
|
|
||||||
|
|
||||||
# Keep track of the current directory
|
|
||||||
TOOLS_DIR=$(cd $(dirname "$0") && pwd)
|
|
||||||
TOP_DIR=`cd $TOOLS_DIR/..; pwd`
|
|
||||||
|
|
||||||
# Change dir to top of devstack
|
|
||||||
cd $TOP_DIR
|
|
||||||
|
|
||||||
# Echo usage
|
|
||||||
function usage {
|
|
||||||
echo "Cache OpenStack dependencies on a uec image to speed up performance."
|
|
||||||
echo ""
|
|
||||||
echo "Usage: $0 [full path to raw uec base image]"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Make sure this is a raw image
|
|
||||||
if ! qemu-img info $1 | grep -q "file format: raw"; then
|
|
||||||
usage
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Make sure we are in the correct dir
|
|
||||||
if [ ! -d files/apts ]; then
|
|
||||||
echo "Please run this script from devstack/tools/"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Mount the image
|
|
||||||
STAGING_DIR=/tmp/`echo $1 | sed "s/\//_/g"`.stage
|
|
||||||
mkdir -p $STAGING_DIR
|
|
||||||
umount $STAGING_DIR || true
|
|
||||||
sleep 1
|
|
||||||
mount -t ext4 -o loop $1 $STAGING_DIR
|
|
||||||
|
|
||||||
# Make sure that base requirements are installed
|
|
||||||
cp /etc/resolv.conf $STAGING_DIR/etc/resolv.conf
|
|
||||||
|
|
||||||
# Perform caching on the base image to speed up subsequent runs
|
|
||||||
chroot $STAGING_DIR apt-get update
|
|
||||||
chroot $STAGING_DIR apt-get install -y --download-only `cat files/apts/* | grep NOPRIME | cut -d\# -f1`
|
|
||||||
chroot $STAGING_DIR apt-get install -y --force-yes `cat files/apts/* | grep -v NOPRIME | cut -d\# -f1` || true
|
|
||||||
|
|
||||||
# Unmount
|
|
||||||
umount $STAGING_DIR
|
|
Reference in New Issue
Block a user