Merge remote-tracking branch 'origin/master' into password_prompt
This commit is contained in:
commit
f8dfba1c73
8 changed files with 176 additions and 74 deletions
|
@ -7,6 +7,8 @@ Tool to quickly deploy openstack dev environments.
|
|||
* To make it easier for developers to dive into openstack so that they can productively contribute without having to understand every part of the system at once
|
||||
* To make it easy to prototype cross-project features
|
||||
|
||||
Read more at http://devstack.org (built from the gh-pages branch)
|
||||
|
||||
Be sure to carefully read these scripts before you run them as they install software and may alter your networking configuration.
|
||||
|
||||
# To start a dev cloud on your local machine (installing on a dedicated vm is safer!):
|
||||
|
@ -32,7 +34,6 @@ You can tweak environment variables by creating file name 'localrc' should you n
|
|||
|
||||
* Add python-novaclient cli support
|
||||
* syslog
|
||||
* allow rabbit connection to be specified via environment variables with sensible defaults
|
||||
* Add volume support
|
||||
* Add quantum support
|
||||
|
95
stack.sh
95
stack.sh
|
@ -20,9 +20,6 @@
|
|||
# Sanity Check
|
||||
# ============
|
||||
|
||||
# Record the start time. This allows us to print how long this script takes to run.
|
||||
START_TIME=`python -c "import time; print time.time()"`
|
||||
|
||||
# Warn users who aren't on natty, but allow them to override check and attempt
|
||||
# installation with ``FORCE=yes ./stack``
|
||||
if ! grep -q natty /etc/lsb-release; then
|
||||
|
@ -53,40 +50,38 @@ TOP_DIR=$(cd $(dirname "$0") && pwd)
|
|||
|
||||
if [[ $EUID -eq 0 ]]; then
|
||||
echo "You are running this script as root."
|
||||
echo "In 10 seconds, we will create a user 'stack' and run as that user"
|
||||
sleep 10
|
||||
|
||||
# since this script runs as a normal user, we need to give that user
|
||||
# ability to run sudo
|
||||
apt-get update
|
||||
apt-get install -qqy sudo
|
||||
apt-get install -y sudo
|
||||
|
||||
if ! getent passwd | grep -q stack; then
|
||||
if ! getent passwd stack >/dev/null; then
|
||||
echo "Creating a user called stack"
|
||||
useradd -U -G sudo -s /bin/bash -m stack
|
||||
fi
|
||||
|
||||
echo "Giving stack user passwordless sudo priviledges"
|
||||
echo "stack ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
|
||||
# natty uec images sudoers does not have a '#includedir'. add one.
|
||||
grep -q "^#includedir.*/etc/sudoers.d" /etc/sudoers ||
|
||||
echo "#includedir /etc/sudoers.d" >> /etc/sudoers
|
||||
( umask 226 && echo "stack ALL=(ALL) NOPASSWD:ALL" \
|
||||
> /etc/sudoers.d/50_stack_sh )
|
||||
|
||||
echo "Copying files to stack user"
|
||||
cp -r -f `pwd` /home/stack/
|
||||
THIS_DIR=$(basename $(dirname $(readlink -f $0)))
|
||||
chown -R stack /home/stack/$THIS_DIR
|
||||
echo "Running the script as stack in 3 seconds..."
|
||||
sleep 3
|
||||
STACK_DIR="/home/stack/${PWD##*/}"
|
||||
cp -r -f "$PWD" "$STACK_DIR"
|
||||
chown -R stack "$STACK_DIR"
|
||||
if [[ "$SHELL_AFTER_RUN" != "no" ]]; then
|
||||
exec su -c "cd /home/stack/$THIS_DIR/; bash stack.sh; bash" stack
|
||||
exec su -c "set -e; cd $STACK_DIR; bash stack.sh; bash" stack
|
||||
else
|
||||
exec su -c "cd /home/stack/$THIS_DIR/; bash stack.sh" stack
|
||||
exec su -c "set -e; cd $STACK_DIR; bash stack.sh" stack
|
||||
fi
|
||||
exit 0
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# So that errors don't compound we exit on any errors so you see only the
|
||||
# first error that occured.
|
||||
set -o errexit
|
||||
|
||||
# Print the commands being run so that we can see the command that triggers
|
||||
# an error. It is also useful for following allowing as the install occurs.
|
||||
set -o xtrace
|
||||
|
||||
# Settings
|
||||
# ========
|
||||
|
@ -120,8 +115,6 @@ source ./stackrc
|
|||
|
||||
# Destination path for installation ``DEST``
|
||||
DEST=${DEST:-/opt/stack}
|
||||
sudo mkdir -p $DEST
|
||||
sudo chown `whoami` $DEST
|
||||
|
||||
# Set the destination directories for openstack projects
|
||||
NOVA_DIR=$DEST/nova
|
||||
|
@ -261,6 +254,24 @@ read_password SERVICE_TOKEN "ENTER A SERVICE_TOKEN TO USE FOR THE SERVICE ADMIN
|
|||
# Dash currently truncates usernames and passwords at 20 characters
|
||||
read_password ADMIN_PASSWORD "ENTER A PASSWORD TO USE FOR DASH AND KEYSTONE (20 CHARS OR LESS)."
|
||||
|
||||
LOGFILE=${LOGFILE:-"$PWD/stack.sh.$$.log"}
|
||||
(
|
||||
# So that errors don't compound we exit on any errors so you see only the
|
||||
# first error that occured.
|
||||
trap failed ERR
|
||||
failed() {
|
||||
local r=$?
|
||||
set +o xtrace
|
||||
[ -n "$LOGFILE" ] && echo "${0##*/} failed: full log in $LOGFILE"
|
||||
exit $r
|
||||
}
|
||||
|
||||
# Print the commands being run so that we can see the command that triggers
|
||||
# an error. It is also useful for following along as the install occurs.
|
||||
set -o xtrace
|
||||
|
||||
sudo mkdir -p $DEST
|
||||
sudo chown `whoami` $DEST
|
||||
|
||||
# Install Packages
|
||||
# ================
|
||||
|
@ -269,6 +280,7 @@ read_password ADMIN_PASSWORD "ENTER A PASSWORD TO USE FOR DASH AND KEYSTONE (20
|
|||
|
||||
|
||||
# install apt requirements
|
||||
sudo apt-get update
|
||||
sudo apt-get install -qqy `cat $FILES/apts/* | cut -d\# -f1 | grep -Ev "mysql-server|rabbitmq-server"`
|
||||
|
||||
# install python requirements
|
||||
|
@ -347,6 +359,19 @@ mysql-server-5.1 mysql-server/root_password_again password $MYSQL_PASSWORD
|
|||
mysql-server-5.1 mysql-server/start_on_boot boolean true
|
||||
MYSQL_PRESEED
|
||||
|
||||
# while ``.my.cnf`` is not needed for openstack to function, it is useful
|
||||
# as it allows you to access the mysql databases via ``mysql nova`` instead
|
||||
# of having to specify the username/password each time.
|
||||
if [[ ! -e $HOME/.my.cnf ]]; then
|
||||
cat <<EOF >$HOME/.my.cnf
|
||||
[client]
|
||||
user=$MYSQL_USER
|
||||
password=$MYSQL_PASS
|
||||
host=$MYSQL_HOST
|
||||
EOF
|
||||
chmod 0600 $HOME/.my.cnf
|
||||
fi
|
||||
|
||||
# Install and start mysql-server
|
||||
sudo apt-get -y -q install mysql-server
|
||||
# Update the DB to give user ‘$MYSQL_USER’@’%’ full control of the all databases:
|
||||
|
@ -625,9 +650,8 @@ fi
|
|||
# have to do a little more than that in our script. Since we add the group
|
||||
# ``libvirtd`` to our user in this script, when nova-compute is run it is
|
||||
# within the context of our original shell (so our groups won't be updated).
|
||||
# We can send the command nova-compute to the ``newgrp`` command to execute
|
||||
# in a specific context.
|
||||
screen_it n-cpu "cd $NOVA_DIR && echo $NOVA_DIR/bin/nova-compute | newgrp libvirtd"
|
||||
# Use 'sg' to execute nova-compute as a member of the libvirtd group.
|
||||
screen_it n-cpu "cd $NOVA_DIR && sg libvirtd $NOVA_DIR/bin/nova-compute"
|
||||
screen_it n-net "cd $NOVA_DIR && $NOVA_DIR/bin/nova-network"
|
||||
screen_it n-sch "cd $NOVA_DIR && $NOVA_DIR/bin/nova-scheduler"
|
||||
screen_it n-vnc "cd $NOVNC_DIR && ./utils/nova-wsproxy.py 6080 --web . --flagfile=../nova/bin/nova.conf"
|
||||
|
@ -687,6 +711,16 @@ if [[ "$ENABLED_SERVICES" =~ "g-reg" ]]; then
|
|||
|
||||
fi
|
||||
|
||||
# Fin
|
||||
# ===
|
||||
|
||||
|
||||
) 2>&1 | tee "${LOGFILE}"
|
||||
|
||||
# Check that the left side of the above pipe succeeded
|
||||
for ret in "${PIPESTATUS[@]}"; do [ $ret -eq 0 ] || exit $ret; done
|
||||
|
||||
(
|
||||
# Using the cloud
|
||||
# ===============
|
||||
|
||||
|
@ -704,10 +738,7 @@ if [[ "$ENABLED_SERVICES" =~ "key" ]]; then
|
|||
echo "the password: $ADMIN_PASSWORD"
|
||||
fi
|
||||
|
||||
# Fin
|
||||
# ===
|
||||
# indicate how long this took to run (bash maintained variable 'SECONDS')
|
||||
echo "stack.sh completed in $SECONDS seconds."
|
||||
|
||||
# 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."
|
||||
) | tee -a "$LOGFILE"
|
||||
|
|
|
@ -4,15 +4,8 @@
|
|||
# build_pxe_boot.sh [-k kernel-version] destdir
|
||||
#
|
||||
# Assumes syslinux is installed
|
||||
# Assumes devstack files are in `pwd`/pxe
|
||||
# Only needs to run as root if the destdir permissions require it
|
||||
|
||||
UBUNTU_MIRROR=http://archive.ubuntu.com/ubuntu/dists/natty/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64
|
||||
|
||||
MEMTEST_VER=4.10
|
||||
MEMTEST_BIN=memtest86+-${MEMTEST_VER}.bin
|
||||
MEMTEST_URL=http://www.memtest.org/download/${MEMTEST_VER}/
|
||||
|
||||
KVER=`uname -r`
|
||||
if [ "$1" = "-k" ]; then
|
||||
KVER=$2
|
||||
|
@ -30,8 +23,8 @@ for i in memdisk menu.c32 pxelinux.0; do
|
|||
cp -p /usr/lib/syslinux/$i $DEST_DIR
|
||||
done
|
||||
|
||||
DEFAULT=$DEST_DIR/pxelinux.cfg/default
|
||||
cat >$DEFAULT <<EOF
|
||||
CFG=$DEST_DIR/pxelinux.cfg/default
|
||||
cat >$CFG <<EOF
|
||||
default menu.c32
|
||||
prompt 0
|
||||
timeout 0
|
||||
|
@ -56,10 +49,10 @@ fi
|
|||
cp -p $PXEDIR/vmlinuz-${KVER} $DEST_DIR/ubuntu
|
||||
if [ ! -r $PXEDIR/stack-initrd.gz ]; then
|
||||
cd $OPWD
|
||||
sudo $PROGDIR/build_pxe_ramdisk.sh $PXEDIR/stack-initrd.gz
|
||||
sudo $PROGDIR/build_ramdisk.sh $PXEDIR/stack-initrd.gz
|
||||
fi
|
||||
cp -p $PXEDIR/stack-initrd.gz $DEST_DIR/ubuntu
|
||||
cat >>$DEFAULT <<EOF
|
||||
cat >>$CFG <<EOF
|
||||
|
||||
LABEL devstack
|
||||
MENU LABEL ^devstack
|
||||
|
@ -69,48 +62,21 @@ LABEL devstack
|
|||
EOF
|
||||
|
||||
# Get Ubuntu
|
||||
if [ -d $PXEDIR ]; then
|
||||
if [ -d $PXEDIR -a -r $PXEDIR/natty-base-initrd.gz ]; then
|
||||
cp -p $PXEDIR/natty-base-initrd.gz $DEST_DIR/ubuntu
|
||||
fi
|
||||
cat >>$DEFAULT <<EOF
|
||||
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
|
||||
|
||||
# Get Memtest
|
||||
cd $DEST_DIR
|
||||
if [ ! -r $MEMTEST_BIN ]; then
|
||||
wget -N --quiet ${MEMTEST_URL}/${MEMTEST_BIN}.gz
|
||||
gunzip $MEMTEST_BIN
|
||||
fi
|
||||
cat >>$DEFAULT <<EOF
|
||||
|
||||
LABEL memtest
|
||||
MENU LABEL ^Memtest86+
|
||||
KERNEL $MEMTEST_BIN
|
||||
EOF
|
||||
|
||||
# Get FreeDOS
|
||||
mkdir -p $DEST_DIR/freedos
|
||||
cd $DEST_DIR/freedos
|
||||
wget -N --quiet http://www.fdos.org/bootdisks/autogen/FDSTD.288.gz
|
||||
gunzip -f FDSTD.288.gz
|
||||
cat >>$DEFAULT <<EOF
|
||||
|
||||
LABEL freedos
|
||||
MENU LABEL ^FreeDOS bootdisk
|
||||
KERNEL memdisk
|
||||
APPEND initrd=freedos/FDSTD.288
|
||||
EOF
|
||||
|
||||
# Local disk boot
|
||||
cat >>$DEFAULT <<EOF
|
||||
cat >>$CFG <<EOF
|
||||
|
||||
LABEL local
|
||||
MENU LABEL ^Local disk
|
||||
MENU DEFAULT
|
||||
LOCALBOOT 0
|
||||
EOF
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/bash
|
||||
# build_ramdisk.sh - Build RAM disk images
|
||||
|
||||
if [ ! "$#" -eq "1" ]; then
|
||||
echo "$0 builds a gziped natty openstack install"
|
103
tools/build_usb_boot.sh
Executable file
103
tools/build_usb_boot.sh
Executable file
|
@ -0,0 +1,103 @@
|
|||
#!/bin/bash -e
|
||||
# build_usb_boot.sh - Create a syslinux boot environment
|
||||
#
|
||||
# build_usb_boot.sh [-k kernel-version] destdev
|
||||
#
|
||||
# Assumes syslinux is installed
|
||||
# Needs to run as root
|
||||
|
||||
KVER=`uname -r`
|
||||
if [ "$1" = "-k" ]; then
|
||||
KVER=$2
|
||||
shift;shift
|
||||
fi
|
||||
|
||||
DEST_DIR=${1:-/tmp/syslinux-boot}
|
||||
PXEDIR=${PXEDIR:-/var/cache/devstack/pxe}
|
||||
OPWD=`pwd`
|
||||
PROGDIR=`dirname $0`
|
||||
|
||||
if [ -b $DEST_DIR ]; then
|
||||
# We have a block device, install syslinux and mount it
|
||||
DEST_DEV=$DEST_DIR
|
||||
DEST_DIR=`mktemp -d mntXXXXXX`
|
||||
|
||||
# Install syslinux on the device
|
||||
syslinux --install --directory syslinux $DEST_DEV
|
||||
|
||||
mount $DEST_DEV $DEST_DIR
|
||||
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 -p /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 Boot Menu
|
||||
|
||||
EOF
|
||||
|
||||
# Setup devstack boot
|
||||
mkdir -p $DEST_DIR/ubuntu
|
||||
if [ ! -d $PXEDIR ]; then
|
||||
mkdir -p $PXEDIR
|
||||
fi
|
||||
if [ ! -r $PXEDIR/vmlinuz-${KVER} ]; then
|
||||
sudo chmod 644 /boot/vmlinuz-${KVER}
|
||||
if [ ! -r /boot/vmlinuz-${KVER} ]; then
|
||||
echo "No kernel found"
|
||||
else
|
||||
cp -p /boot/vmlinuz-${KVER} $PXEDIR
|
||||
fi
|
||||
fi
|
||||
cp -p $PXEDIR/vmlinuz-${KVER} $DEST_DIR/ubuntu
|
||||
if [ ! -r $PXEDIR/stack-initrd.gz ]; then
|
||||
cd $OPWD
|
||||
sudo $PROGDIR/build_ramdisk.sh $PXEDIR/stack-initrd.gz
|
||||
fi
|
||||
cp -p $PXEDIR/stack-initrd.gz $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 -p $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
|
Loading…
Reference in a new issue