| 1 | 1 |
deleted file mode 100755 |
| ... | ... |
@@ -1,117 +0,0 @@ |
| 1 |
-#!/bin/bash |
|
| 2 |
- |
|
| 3 |
-PROGDIR=`dirname $0` |
|
| 4 |
-CHROOTCACHE=${CHROOTCACHE:-/var/cache/devstack}
|
|
| 5 |
- |
|
| 6 |
-# Source params |
|
| 7 |
-source ./stackrc |
|
| 8 |
- |
|
| 9 |
-# Store cwd |
|
| 10 |
-CWD=`pwd` |
|
| 11 |
- |
|
| 12 |
-NAME=$1 |
|
| 13 |
-NFSDIR="/nfs/$NAME" |
|
| 14 |
-DEST=${DEST:-/opt/stack}
|
|
| 15 |
- |
|
| 16 |
-# Option to use the version of devstack on which we are currently working |
|
| 17 |
-USE_CURRENT_DEVSTACK=${USE_CURRENT_DEVSTACK:-1}
|
|
| 18 |
- |
|
| 19 |
-# remove old nfs filesystem if one exists |
|
| 20 |
-rm -rf $DEST |
|
| 21 |
- |
|
| 22 |
-# clean install of natty |
|
| 23 |
-if [ ! -d $CHROOTCACHE/natty-base ]; then |
|
| 24 |
- $PROGDIR/make_image.sh -C natty $CHROOTCACHE/natty-base |
|
| 25 |
- # copy kernel modules... |
|
| 26 |
- # NOTE(ja): is there a better way to do this? |
|
| 27 |
- cp -pr /lib/modules/`uname -r` $CHROOTCACHE/natty-base/lib/modules |
|
| 28 |
- # a simple password - pass |
|
| 29 |
- echo root:pass | chroot $CHROOTCACHE/natty-base chpasswd |
|
| 30 |
-fi |
|
| 31 |
- |
|
| 32 |
-# prime natty with as many apt/pips as we can |
|
| 33 |
-if [ ! -d $CHROOTCACHE/natty-dev ]; then |
|
| 34 |
- rsync -azH $CHROOTCACHE/natty-base/ $CHROOTCACHE/natty-dev/ |
|
| 35 |
- chroot $CHROOTCACHE/natty-dev apt-get install -y `cat files/apts/* | cut -d\# -f1 | egrep -v "(rabbitmq|libvirt-bin|mysql-server)"` |
|
| 36 |
- chroot $CHROOTCACHE/natty-dev pip install `cat files/pips/*` |
|
| 37 |
- |
|
| 38 |
- # Create a stack user that is a member of the libvirtd group so that stack |
|
| 39 |
- # is able to interact with libvirt. |
|
| 40 |
- chroot $CHROOTCACHE/natty-dev groupadd libvirtd |
|
| 41 |
- chroot $CHROOTCACHE/natty-dev useradd stack -s /bin/bash -d $DEST -G libvirtd |
|
| 42 |
- mkdir -p $CHROOTCACHE/natty-dev/$DEST |
|
| 43 |
- chown stack $CHROOTCACHE/natty-dev/$DEST |
|
| 44 |
- |
|
| 45 |
- # a simple password - pass |
|
| 46 |
- echo stack:pass | chroot $CHROOTCACHE/natty-dev chpasswd |
|
| 47 |
- |
|
| 48 |
- # and has sudo ability (in the future this should be limited to only what |
|
| 49 |
- # stack requires) |
|
| 50 |
- echo "stack ALL=(ALL) NOPASSWD: ALL" >> $CHROOTCACHE/natty-dev/etc/sudoers |
|
| 51 |
-fi |
|
| 52 |
- |
|
| 53 |
-# clone git repositories onto the system |
|
| 54 |
-# ====================================== |
|
| 55 |
- |
|
| 56 |
-if [ ! -d $CHROOTCACHE/natty-stack ]; then |
|
| 57 |
- rsync -azH $CHROOTCACHE/natty-dev/ $CHROOTCACHE/natty-stack/ |
|
| 58 |
-fi |
|
| 59 |
- |
|
| 60 |
-# git clone only if directory doesn't exist already. Since ``DEST`` might not |
|
| 61 |
-# be owned by the installation user, we create the directory and change the |
|
| 62 |
-# ownership to the proper user. |
|
| 63 |
-function git_clone {
|
|
| 64 |
- |
|
| 65 |
- # clone new copy or fetch latest changes |
|
| 66 |
- CHECKOUT=$CHROOTCACHE/natty-stack$2 |
|
| 67 |
- if [ ! -d $CHECKOUT ]; then |
|
| 68 |
- mkdir -p $CHECKOUT |
|
| 69 |
- git clone $1 $CHECKOUT |
|
| 70 |
- else |
|
| 71 |
- pushd $CHECKOUT |
|
| 72 |
- git fetch |
|
| 73 |
- popd |
|
| 74 |
- fi |
|
| 75 |
- |
|
| 76 |
- # FIXME(ja): checkout specified version (should works for branches and tags) |
|
| 77 |
- |
|
| 78 |
- pushd $CHECKOUT |
|
| 79 |
- # checkout the proper branch/tag |
|
| 80 |
- git checkout $3 |
|
| 81 |
- # force our local version to be the same as the remote version |
|
| 82 |
- git reset --hard origin/$3 |
|
| 83 |
- popd |
|
| 84 |
- |
|
| 85 |
- # give ownership to the stack user |
|
| 86 |
- chroot $CHROOTCACHE/natty-stack/ chown -R stack $2 |
|
| 87 |
-} |
|
| 88 |
- |
|
| 89 |
-git_clone $NOVA_REPO $DEST/nova $NOVA_BRANCH |
|
| 90 |
-git_clone $GLANCE_REPO $DEST/glance $GLANCE_BRANCH |
|
| 91 |
-git_clone $KEYSTONE_REPO $DEST/keystone $KEYSTONE_BRANCH |
|
| 92 |
-git_clone $NOVNC_REPO $DEST/novnc $NOVNC_BRANCH |
|
| 93 |
-git_clone $DASH_REPO $DEST/dash $DASH_BRANCH $DASH_TAG |
|
| 94 |
-git_clone $NOVACLIENT_REPO $DEST/python-novaclient $NOVACLIENT_BRANCH |
|
| 95 |
-git_clone $OPENSTACKX_REPO $DEST/openstackx $OPENSTACKX_BRANCH |
|
| 96 |
- |
|
| 97 |
-chroot $CHROOTCACHE/natty-stack mkdir -p $DEST/files |
|
| 98 |
-wget -c http://images.ansolabs.com/tty.tgz -O $CHROOTCACHE/natty-stack$DEST/files/tty.tgz |
|
| 99 |
- |
|
| 100 |
-# Use this version of devstack? |
|
| 101 |
-if [ "$USE_CURRENT_DEVSTACK" = "1" ]; then |
|
| 102 |
- rm -rf $CHROOTCACHE/natty-stack/$DEST/devstack |
|
| 103 |
- cp -pr $CWD $CHROOTCACHE/natty-stack/$DEST/devstack |
|
| 104 |
-fi |
|
| 105 |
- |
|
| 106 |
-cp -pr $CHROOTCACHE/natty-stack $NFSDIR |
|
| 107 |
- |
|
| 108 |
-# set hostname |
|
| 109 |
-echo $NAME > $NFSDIR/etc/hostname |
|
| 110 |
-echo "127.0.0.1 localhost $NAME" > $NFSDIR/etc/hosts |
|
| 111 |
- |
|
| 112 |
-# injecting root's public ssh key if it exists |
|
| 113 |
-if [ -f /root/.ssh/id_rsa.pub ]; then |
|
| 114 |
- mkdir $NFSDIR/root/.ssh |
|
| 115 |
- chmod 700 $NFSDIR/root/.ssh |
|
| 116 |
- cp /root/.ssh/id_rsa.pub $NFSDIR/root/.ssh/authorized_keys |
|
| 117 |
-fi |
| 118 | 1 |
deleted file mode 100755 |
| ... | ... |
@@ -1,116 +0,0 @@ |
| 1 |
-#!/bin/bash -e |
|
| 2 |
-# build_pxe_boot.sh - Create a PXE boot environment |
|
| 3 |
-# |
|
| 4 |
-# build_pxe_boot.sh [-k kernel-version] destdir |
|
| 5 |
-# |
|
| 6 |
-# Assumes syslinux is installed |
|
| 7 |
-# Assumes devstack files are in `pwd`/pxe |
|
| 8 |
-# Only needs to run as root if the destdir permissions require it |
|
| 9 |
- |
|
| 10 |
-UBUNTU_MIRROR=http://archive.ubuntu.com/ubuntu/dists/natty/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64 |
|
| 11 |
- |
|
| 12 |
-MEMTEST_VER=4.10 |
|
| 13 |
-MEMTEST_BIN=memtest86+-${MEMTEST_VER}.bin
|
|
| 14 |
-MEMTEST_URL=http://www.memtest.org/download/${MEMTEST_VER}/
|
|
| 15 |
- |
|
| 16 |
-KVER=`uname -r` |
|
| 17 |
-if [ "$1" = "-k" ]; then |
|
| 18 |
- KVER=$2 |
|
| 19 |
- shift;shift |
|
| 20 |
-fi |
|
| 21 |
- |
|
| 22 |
-DEST_DIR=${1:-/tmp}/tftpboot
|
|
| 23 |
-PXEDIR=${PXEDIR:-/var/cache/devstack/pxe}
|
|
| 24 |
-OPWD=`pwd` |
|
| 25 |
-PROGDIR=`dirname $0` |
|
| 26 |
- |
|
| 27 |
-mkdir -p $DEST_DIR/pxelinux.cfg |
|
| 28 |
-cd $DEST_DIR |
|
| 29 |
-for i in memdisk menu.c32 pxelinux.0; do |
|
| 30 |
- cp -p /usr/lib/syslinux/$i $DEST_DIR |
|
| 31 |
-done |
|
| 32 |
- |
|
| 33 |
-DEFAULT=$DEST_DIR/pxelinux.cfg/default |
|
| 34 |
-cat >$DEFAULT <<EOF |
|
| 35 |
-default menu.c32 |
|
| 36 |
-prompt 0 |
|
| 37 |
-timeout 0 |
|
| 38 |
- |
|
| 39 |
-MENU TITLE PXE Boot Menu |
|
| 40 |
- |
|
| 41 |
-EOF |
|
| 42 |
- |
|
| 43 |
-# Setup devstack boot |
|
| 44 |
-mkdir -p $DEST_DIR/ubuntu |
|
| 45 |
-if [ ! -d $PXEDIR ]; then |
|
| 46 |
- mkdir -p $PXEDIR |
|
| 47 |
-fi |
|
| 48 |
-if [ ! -r $PXEDIR/vmlinuz-${KVER} ]; then
|
|
| 49 |
- sudo chmod 644 /boot/vmlinuz-${KVER}
|
|
| 50 |
- if [ ! -r /boot/vmlinuz-${KVER} ]; then
|
|
| 51 |
- echo "No kernel found" |
|
| 52 |
- else |
|
| 53 |
- cp -p /boot/vmlinuz-${KVER} $PXEDIR
|
|
| 54 |
- fi |
|
| 55 |
-fi |
|
| 56 |
-cp -p $PXEDIR/vmlinuz-${KVER} $DEST_DIR/ubuntu
|
|
| 57 |
-if [ ! -r $PXEDIR/stack-initrd.gz ]; then |
|
| 58 |
- cd $OPWD |
|
| 59 |
- sudo $PROGDIR/build_pxe_ramdisk.sh $PXEDIR/stack-initrd.gz |
|
| 60 |
-fi |
|
| 61 |
-cp -p $PXEDIR/stack-initrd.gz $DEST_DIR/ubuntu |
|
| 62 |
-cat >>$DEFAULT <<EOF |
|
| 63 |
- |
|
| 64 |
-LABEL devstack |
|
| 65 |
- MENU LABEL ^devstack |
|
| 66 |
- MENU DEFAULT |
|
| 67 |
- KERNEL ubuntu/vmlinuz-$KVER |
|
| 68 |
- APPEND initrd=ubuntu/stack-initrd.gz ramdisk_size=2109600 root=/dev/ram0 |
|
| 69 |
-EOF |
|
| 70 |
- |
|
| 71 |
-# Get Ubuntu |
|
| 72 |
-if [ -d $PXEDIR ]; then |
|
| 73 |
- cp -p $PXEDIR/natty-base-initrd.gz $DEST_DIR/ubuntu |
|
| 74 |
-fi |
|
| 75 |
-cat >>$DEFAULT <<EOF |
|
| 76 |
- |
|
| 77 |
-LABEL ubuntu |
|
| 78 |
- MENU LABEL ^Ubuntu Natty |
|
| 79 |
- KERNEL ubuntu/vmlinuz-$KVER |
|
| 80 |
- APPEND initrd=ubuntu/natty-base-initrd.gz ramdisk_size=419600 root=/dev/ram0 |
|
| 81 |
-EOF |
|
| 82 |
- |
|
| 83 |
-# Get Memtest |
|
| 84 |
-cd $DEST_DIR |
|
| 85 |
-if [ ! -r $MEMTEST_BIN ]; then |
|
| 86 |
- wget -N --quiet ${MEMTEST_URL}/${MEMTEST_BIN}.gz
|
|
| 87 |
- gunzip $MEMTEST_BIN |
|
| 88 |
-fi |
|
| 89 |
-cat >>$DEFAULT <<EOF |
|
| 90 |
- |
|
| 91 |
-LABEL memtest |
|
| 92 |
- MENU LABEL ^Memtest86+ |
|
| 93 |
- KERNEL $MEMTEST_BIN |
|
| 94 |
-EOF |
|
| 95 |
- |
|
| 96 |
-# Get FreeDOS |
|
| 97 |
-mkdir -p $DEST_DIR/freedos |
|
| 98 |
-cd $DEST_DIR/freedos |
|
| 99 |
-wget -N --quiet http://www.fdos.org/bootdisks/autogen/FDSTD.288.gz |
|
| 100 |
-gunzip -f FDSTD.288.gz |
|
| 101 |
-cat >>$DEFAULT <<EOF |
|
| 102 |
- |
|
| 103 |
-LABEL freedos |
|
| 104 |
- MENU LABEL ^FreeDOS bootdisk |
|
| 105 |
- KERNEL memdisk |
|
| 106 |
- APPEND initrd=freedos/FDSTD.288 |
|
| 107 |
-EOF |
|
| 108 |
- |
|
| 109 |
-# Local disk boot |
|
| 110 |
-cat >>$DEFAULT <<EOF |
|
| 111 |
- |
|
| 112 |
-LABEL local |
|
| 113 |
- MENU LABEL ^Local disk |
|
| 114 |
- MENU DEFAULT |
|
| 115 |
- LOCALBOOT 0 |
|
| 116 |
-EOF |
| 117 | 1 |
deleted file mode 100755 |
| ... | ... |
@@ -1,135 +0,0 @@ |
| 1 |
-#!/bin/bash |
|
| 2 |
- |
|
| 3 |
-if [ ! "$#" -eq "1" ]; then |
|
| 4 |
- echo "$0 builds a gziped natty openstack install" |
|
| 5 |
- echo "usage: $0 dest" |
|
| 6 |
- exit 1 |
|
| 7 |
-fi |
|
| 8 |
- |
|
| 9 |
-PROGDIR=`dirname $0` |
|
| 10 |
-CHROOTCACHE=${CHROOTCACHE:-/var/cache/devstack}
|
|
| 11 |
- |
|
| 12 |
-# Source params |
|
| 13 |
-source ./stackrc |
|
| 14 |
- |
|
| 15 |
-# Store cwd |
|
| 16 |
-CWD=`pwd` |
|
| 17 |
- |
|
| 18 |
-DEST=${DEST:-/opt/stack}
|
|
| 19 |
- |
|
| 20 |
-# Option to use the version of devstack on which we are currently working |
|
| 21 |
-USE_CURRENT_DEVSTACK=${USE_CURRENT_DEVSTACK:-1}
|
|
| 22 |
- |
|
| 23 |
-# clean install of natty |
|
| 24 |
-if [ ! -d $CHROOTCACHE/natty-base ]; then |
|
| 25 |
- $PROGDIR/make_image.sh -C natty $CHROOTCACHE/natty-base |
|
| 26 |
- # copy kernel modules... |
|
| 27 |
- # NOTE(ja): is there a better way to do this? |
|
| 28 |
- cp -pr /lib/modules/`uname -r` $CHROOTCACHE/natty-base/lib/modules |
|
| 29 |
- # a simple password - pass |
|
| 30 |
- echo root:pass | chroot $CHROOTCACHE/natty-base chpasswd |
|
| 31 |
-fi |
|
| 32 |
- |
|
| 33 |
-# prime natty with as many apt/pips as we can |
|
| 34 |
-if [ ! -d $CHROOTCACHE/natty-dev ]; then |
|
| 35 |
- rsync -azH $CHROOTCACHE/natty-base/ $CHROOTCACHE/natty-dev/ |
|
| 36 |
- chroot $CHROOTCACHE/natty-dev apt-get install -y `cat files/apts/* | cut -d\# -f1 | egrep -v "(rabbitmq|libvirt-bin|mysql-server)"` |
|
| 37 |
- chroot $CHROOTCACHE/natty-dev pip install `cat files/pips/*` |
|
| 38 |
- |
|
| 39 |
- # Create a stack user that is a member of the libvirtd group so that stack |
|
| 40 |
- # is able to interact with libvirt. |
|
| 41 |
- chroot $CHROOTCACHE/natty-dev groupadd libvirtd |
|
| 42 |
- chroot $CHROOTCACHE/natty-dev useradd stack -s /bin/bash -d $DEST -G libvirtd |
|
| 43 |
- mkdir -p $CHROOTCACHE/natty-dev/$DEST |
|
| 44 |
- chown stack $CHROOTCACHE/natty-dev/$DEST |
|
| 45 |
- |
|
| 46 |
- # a simple password - pass |
|
| 47 |
- echo stack:pass | chroot $CHROOTCACHE/natty-dev chpasswd |
|
| 48 |
- |
|
| 49 |
- # and has sudo ability (in the future this should be limited to only what |
|
| 50 |
- # stack requires) |
|
| 51 |
- echo "stack ALL=(ALL) NOPASSWD: ALL" >> $CHROOTCACHE/natty-dev/etc/sudoers |
|
| 52 |
-fi |
|
| 53 |
- |
|
| 54 |
-# clone git repositories onto the system |
|
| 55 |
-# ====================================== |
|
| 56 |
- |
|
| 57 |
-if [ ! -d $CHROOTCACHE/natty-stack ]; then |
|
| 58 |
- rsync -azH $CHROOTCACHE/natty-dev/ $CHROOTCACHE/natty-stack/ |
|
| 59 |
-fi |
|
| 60 |
- |
|
| 61 |
-# git clone only if directory doesn't exist already. Since ``DEST`` might not |
|
| 62 |
-# be owned by the installation user, we create the directory and change the |
|
| 63 |
-# ownership to the proper user. |
|
| 64 |
-function git_clone {
|
|
| 65 |
- |
|
| 66 |
- # clone new copy or fetch latest changes |
|
| 67 |
- CHECKOUT=$CHROOTCACHE/natty-stack$2 |
|
| 68 |
- if [ ! -d $CHECKOUT ]; then |
|
| 69 |
- mkdir -p $CHECKOUT |
|
| 70 |
- git clone $1 $CHECKOUT |
|
| 71 |
- else |
|
| 72 |
- pushd $CHECKOUT |
|
| 73 |
- git fetch |
|
| 74 |
- popd |
|
| 75 |
- fi |
|
| 76 |
- |
|
| 77 |
- # FIXME(ja): checkout specified version (should works for branches and tags) |
|
| 78 |
- |
|
| 79 |
- pushd $CHECKOUT |
|
| 80 |
- # checkout the proper branch/tag |
|
| 81 |
- git checkout $3 |
|
| 82 |
- # force our local version to be the same as the remote version |
|
| 83 |
- git reset --hard origin/$3 |
|
| 84 |
- popd |
|
| 85 |
- |
|
| 86 |
- # give ownership to the stack user |
|
| 87 |
- chroot $CHROOTCACHE/natty-stack/ chown -R stack $2 |
|
| 88 |
-} |
|
| 89 |
- |
|
| 90 |
-git_clone $NOVA_REPO $DEST/nova $NOVA_BRANCH |
|
| 91 |
-git_clone $GLANCE_REPO $DEST/glance $GLANCE_BRANCH |
|
| 92 |
-git_clone $KEYSTONE_REPO $DEST/keystone $KEYSTONE_BRANCH |
|
| 93 |
-git_clone $NOVNC_REPO $DEST/novnc $NOVNC_BRANCH |
|
| 94 |
-git_clone $DASH_REPO $DEST/dash $DASH_BRANCH |
|
| 95 |
-git_clone $NOVACLIENT_REPO $DEST/python-novaclient $NOVACLIENT_BRANCH |
|
| 96 |
-git_clone $OPENSTACKX_REPO $DEST/openstackx $OPENSTACKX_BRANCH |
|
| 97 |
- |
|
| 98 |
-# Use this version of devstack? |
|
| 99 |
-if [ "$USE_CURRENT_DEVSTACK" = "1" ]; then |
|
| 100 |
- rm -rf $CHROOTCACHE/natty-stack/$DEST/devstack |
|
| 101 |
- cp -pr $CWD $CHROOTCACHE/natty-stack/$DEST/devstack |
|
| 102 |
-fi |
|
| 103 |
- |
|
| 104 |
-# Configure host network for DHCP |
|
| 105 |
-mkdir -p $CHROOTCACHE/natty-stack/etc/network |
|
| 106 |
-cat > $CHROOTCACHE/natty-stack/etc/network/interfaces <<EOF |
|
| 107 |
-auto lo |
|
| 108 |
-iface lo inet loopback |
|
| 109 |
- |
|
| 110 |
-auto eth0 |
|
| 111 |
-iface eth0 inet dhcp |
|
| 112 |
-EOF |
|
| 113 |
- |
|
| 114 |
-# build a new image |
|
| 115 |
-BASE=$CHROOTCACHE/build.$$ |
|
| 116 |
-IMG=$BASE.img |
|
| 117 |
-MNT=$BASE/ |
|
| 118 |
- |
|
| 119 |
-# (quickly) create a 2GB blank filesystem |
|
| 120 |
-dd bs=1 count=1 seek=$((2*1024*1024*1024)) if=/dev/zero of=$IMG |
|
| 121 |
-# force it to be initialized as ext2 |
|
| 122 |
-mkfs.ext2 -F $IMG |
|
| 123 |
- |
|
| 124 |
-# mount blank image loopback and load it |
|
| 125 |
-mkdir -p $MNT |
|
| 126 |
-mount -o loop $IMG $MNT |
|
| 127 |
-rsync -azH $CHROOTCACHE/natty-stack/ $MNT |
|
| 128 |
- |
|
| 129 |
-# umount and cleanup |
|
| 130 |
-umount $MNT |
|
| 131 |
-rmdir $MNT |
|
| 132 |
- |
|
| 133 |
-# gzip into final location |
|
| 134 |
-gzip -1 $IMG -c > $1 |
|
| 135 |
- |
| 136 | 1 |
deleted file mode 100755 |
| ... | ... |
@@ -1,178 +0,0 @@ |
| 1 |
-#!/bin/bash |
|
| 2 |
-# make_image.sh - Create Ubuntu images in various formats |
|
| 3 |
-# |
|
| 4 |
-# Supported formats: qcow (kvm), vmdk (vmserver), vdi (vbox), vhd (vpc), raw |
|
| 5 |
-# |
|
| 6 |
-# Requires sudo to root |
|
| 7 |
- |
|
| 8 |
-ROOTSIZE=${ROOTSIZE:-8192}
|
|
| 9 |
-SWAPSIZE=${SWAPSIZE:-1024}
|
|
| 10 |
-MIN_PKGS=${MIN_PKGS:-"apt-utils gpgv openssh-server"}
|
|
| 11 |
- |
|
| 12 |
-usage() {
|
|
| 13 |
- echo "Usage: $0 - Create Ubuntu images" |
|
| 14 |
- echo "" |
|
| 15 |
- echo "$0 [-m] [-r rootsize] [-s swapsize] release format" |
|
| 16 |
- echo "$0 -C [-m] release chrootdir" |
|
| 17 |
- echo "$0 -I [-r rootsize] [-s swapsize] chrootdir format" |
|
| 18 |
- echo "" |
|
| 19 |
- echo "-C - Create the initial chroot dir" |
|
| 20 |
- echo "-I - Create the final image from a chroot" |
|
| 21 |
- echo "-m - minimal installation" |
|
| 22 |
- echo "-r size - root fs size in MB" |
|
| 23 |
- echo "-s size - swap fs size in MB" |
|
| 24 |
- echo "release - Ubuntu release: jaunty - oneric" |
|
| 25 |
- echo "format - image format: qcow2, vmdk, vdi, vhd, xen, raw, fs" |
|
| 26 |
- exit 1 |
|
| 27 |
-} |
|
| 28 |
- |
|
| 29 |
-while getopts CIhmr:s: c; do |
|
| 30 |
- case $c in |
|
| 31 |
- C) CHROOTONLY=1 |
|
| 32 |
- ;; |
|
| 33 |
- I) IMAGEONLY=1 |
|
| 34 |
- ;; |
|
| 35 |
- h) usage |
|
| 36 |
- ;; |
|
| 37 |
- m) MINIMAL=1 |
|
| 38 |
- ;; |
|
| 39 |
- r) ROOTSIZE=$OPTARG |
|
| 40 |
- ;; |
|
| 41 |
- s) SWAPSIZE=$OPTARG |
|
| 42 |
- ;; |
|
| 43 |
- esac |
|
| 44 |
-done |
|
| 45 |
-shift `expr $OPTIND - 1` |
|
| 46 |
- |
|
| 47 |
-if [ ! "$#" -eq "2" -o -n "$CHROOTONLY" -a -n "$IMAGEONLY" ]; then |
|
| 48 |
- usage |
|
| 49 |
-fi |
|
| 50 |
- |
|
| 51 |
-# Default args |
|
| 52 |
-RELEASE=$1 |
|
| 53 |
-FORMAT=$2 |
|
| 54 |
-CHROOTDIR="" |
|
| 55 |
- |
|
| 56 |
-if [ -n "$CHROOTONLY" ]; then |
|
| 57 |
- RELEASE=$1 |
|
| 58 |
- CHROOTDIR=$2 |
|
| 59 |
- FORMAT="pass" |
|
| 60 |
-fi |
|
| 61 |
- |
|
| 62 |
-if [ -n "$IMAGEONLY" ]; then |
|
| 63 |
- CHROOTDIR=$1 |
|
| 64 |
- FORMAT=$2 |
|
| 65 |
- RELEASE="pass" |
|
| 66 |
-fi |
|
| 67 |
- |
|
| 68 |
-case $FORMAT in |
|
| 69 |
- kvm|qcow2) FORMAT=qcow2 |
|
| 70 |
- QFORMAT=qcow2 |
|
| 71 |
- HYPER=kvm |
|
| 72 |
- ;; |
|
| 73 |
- vmserver|vmdk) |
|
| 74 |
- FORMAT=vmdk |
|
| 75 |
- QFORMAT=vmdk |
|
| 76 |
- HYPER=vmserver |
|
| 77 |
- ;; |
|
| 78 |
- vbox|vdi) FORMAT=vdi |
|
| 79 |
- QFORMAT=vdi |
|
| 80 |
- HYPER=kvm |
|
| 81 |
- ;; |
|
| 82 |
- vhd|vpc) FORMAT=vhd |
|
| 83 |
- QFORMAT=vpc |
|
| 84 |
- HYPER=kvm |
|
| 85 |
- ;; |
|
| 86 |
- xen) FORMAT=raw |
|
| 87 |
- QFORMAT=raw |
|
| 88 |
- HYPER=xen |
|
| 89 |
- ;; |
|
| 90 |
- raw) FORMAT=raw |
|
| 91 |
- QFORMAT=raw |
|
| 92 |
- HYPER=kvm |
|
| 93 |
- ;; |
|
| 94 |
- pass) ;; |
|
| 95 |
- *) echo "Unknown format: $FORMAT" |
|
| 96 |
- usage |
|
| 97 |
-esac |
|
| 98 |
- |
|
| 99 |
-case $RELEASE in |
|
| 100 |
- natty) ;; |
|
| 101 |
- maverick) ;; |
|
| 102 |
- lucid) ;; |
|
| 103 |
- karmic) ;; |
|
| 104 |
- jaunty) ;; |
|
| 105 |
- pass) ;; |
|
| 106 |
- *) echo "Unknown release: $RELEASE" |
|
| 107 |
- usage |
|
| 108 |
- ;; |
|
| 109 |
-esac |
|
| 110 |
- |
|
| 111 |
-# Install stuff if necessary |
|
| 112 |
-if [ -z `which vmbuilder` ]; then |
|
| 113 |
- sudo apt-get install ubuntu-vm-builder |
|
| 114 |
-fi |
|
| 115 |
- |
|
| 116 |
-if [ -n "$CHROOTONLY" ]; then |
|
| 117 |
- # Build a chroot directory |
|
| 118 |
- HYPER=kvm |
|
| 119 |
- if [ "$MINIMAL" = 1 ]; then |
|
| 120 |
- ARGS="--variant=minbase" |
|
| 121 |
- for i in $MIN_PKGS; do |
|
| 122 |
- ARGS="$ARGS --addpkg=$i" |
|
| 123 |
- done |
|
| 124 |
- fi |
|
| 125 |
- sudo vmbuilder $HYPER ubuntu $ARGS \ |
|
| 126 |
- --suite $RELEASE \ |
|
| 127 |
- --only-chroot \ |
|
| 128 |
- --chroot-dir=$CHROOTDIR \ |
|
| 129 |
- --overwrite \ |
|
| 130 |
- --addpkg=$MIN_PKGS \ |
|
| 131 |
- |
|
| 132 |
- sudo cp -p files/sources.list $CHROOTDIR/etc/apt/sources.list |
|
| 133 |
- sudo chroot $CHROOTDIR apt-get update |
|
| 134 |
- |
|
| 135 |
- exit 0 |
|
| 136 |
-fi |
|
| 137 |
- |
|
| 138 |
-# Build the image |
|
| 139 |
-TMPDIR=tmp |
|
| 140 |
-TMPDISK=`mktemp imgXXXXXXXX` |
|
| 141 |
-SIZE=$[$ROOTSIZE+$SWAPSIZE+1] |
|
| 142 |
-dd if=/dev/null of=$TMPDISK bs=1M seek=$SIZE count=1 |
|
| 143 |
- |
|
| 144 |
-if [ -n "$IMAGEONLY" ]; then |
|
| 145 |
- # Build image from chroot |
|
| 146 |
- sudo vmbuilder $HYPER ubuntu $ARGS \ |
|
| 147 |
- --existing-chroot=$CHROOTDIR \ |
|
| 148 |
- --overwrite \ |
|
| 149 |
- --rootsize=$ROOTSIZE \ |
|
| 150 |
- --swapsize=$SWAPSIZE \ |
|
| 151 |
- --tmpfs - \ |
|
| 152 |
- --raw=$TMPDISK \ |
|
| 153 |
- |
|
| 154 |
-else |
|
| 155 |
- # Do the whole shebang in one pass |
|
| 156 |
- ARGS="--variant=minbase" |
|
| 157 |
- for i in $MIN_PKGS; do |
|
| 158 |
- ARGS="$ARGS --addpkg=$i" |
|
| 159 |
- done |
|
| 160 |
- sudo vmbuilder $HYPER ubuntu $ARGS \ |
|
| 161 |
- --suite $RELEASE \ |
|
| 162 |
- --overwrite \ |
|
| 163 |
- --rootsize=$ROOTSIZE \ |
|
| 164 |
- --swapsize=$SWAPSIZE \ |
|
| 165 |
- --tmpfs - \ |
|
| 166 |
- --raw=$TMPDISK \ |
|
| 167 |
- |
|
| 168 |
-fi |
|
| 169 |
- |
|
| 170 |
-if [ "$FORMAT" = "raw" ]; then |
|
| 171 |
- # Get image |
|
| 172 |
- mv $TMPDISK $RELEASE.$FORMAT |
|
| 173 |
-else |
|
| 174 |
- # Convert image |
|
| 175 |
- qemu-img convert -O $QFORMAT $TMPDISK $RELEASE.$FORMAT |
|
| 176 |
- rm $TMPDISK |
|
| 177 |
-fi |
|
| 178 |
-rm -rf ubuntu-$HYPER |
| 179 | 1 |
new file mode 100755 |
| ... | ... |
@@ -0,0 +1,117 @@ |
| 0 |
+#!/bin/bash |
|
| 1 |
+ |
|
| 2 |
+PROGDIR=`dirname $0` |
|
| 3 |
+CHROOTCACHE=${CHROOTCACHE:-/var/cache/devstack}
|
|
| 4 |
+ |
|
| 5 |
+# Source params |
|
| 6 |
+source ./stackrc |
|
| 7 |
+ |
|
| 8 |
+# Store cwd |
|
| 9 |
+CWD=`pwd` |
|
| 10 |
+ |
|
| 11 |
+NAME=$1 |
|
| 12 |
+NFSDIR="/nfs/$NAME" |
|
| 13 |
+DEST=${DEST:-/opt/stack}
|
|
| 14 |
+ |
|
| 15 |
+# Option to use the version of devstack on which we are currently working |
|
| 16 |
+USE_CURRENT_DEVSTACK=${USE_CURRENT_DEVSTACK:-1}
|
|
| 17 |
+ |
|
| 18 |
+# remove old nfs filesystem if one exists |
|
| 19 |
+rm -rf $DEST |
|
| 20 |
+ |
|
| 21 |
+# clean install of natty |
|
| 22 |
+if [ ! -d $CHROOTCACHE/natty-base ]; then |
|
| 23 |
+ $PROGDIR/make_image.sh -C natty $CHROOTCACHE/natty-base |
|
| 24 |
+ # copy kernel modules... |
|
| 25 |
+ # NOTE(ja): is there a better way to do this? |
|
| 26 |
+ cp -pr /lib/modules/`uname -r` $CHROOTCACHE/natty-base/lib/modules |
|
| 27 |
+ # a simple password - pass |
|
| 28 |
+ echo root:pass | chroot $CHROOTCACHE/natty-base chpasswd |
|
| 29 |
+fi |
|
| 30 |
+ |
|
| 31 |
+# prime natty with as many apt/pips as we can |
|
| 32 |
+if [ ! -d $CHROOTCACHE/natty-dev ]; then |
|
| 33 |
+ rsync -azH $CHROOTCACHE/natty-base/ $CHROOTCACHE/natty-dev/ |
|
| 34 |
+ chroot $CHROOTCACHE/natty-dev apt-get install -y `cat files/apts/* | cut -d\# -f1 | egrep -v "(rabbitmq|libvirt-bin|mysql-server)"` |
|
| 35 |
+ chroot $CHROOTCACHE/natty-dev pip install `cat files/pips/*` |
|
| 36 |
+ |
|
| 37 |
+ # Create a stack user that is a member of the libvirtd group so that stack |
|
| 38 |
+ # is able to interact with libvirt. |
|
| 39 |
+ chroot $CHROOTCACHE/natty-dev groupadd libvirtd |
|
| 40 |
+ chroot $CHROOTCACHE/natty-dev useradd stack -s /bin/bash -d $DEST -G libvirtd |
|
| 41 |
+ mkdir -p $CHROOTCACHE/natty-dev/$DEST |
|
| 42 |
+ chown stack $CHROOTCACHE/natty-dev/$DEST |
|
| 43 |
+ |
|
| 44 |
+ # a simple password - pass |
|
| 45 |
+ echo stack:pass | chroot $CHROOTCACHE/natty-dev chpasswd |
|
| 46 |
+ |
|
| 47 |
+ # and has sudo ability (in the future this should be limited to only what |
|
| 48 |
+ # stack requires) |
|
| 49 |
+ echo "stack ALL=(ALL) NOPASSWD: ALL" >> $CHROOTCACHE/natty-dev/etc/sudoers |
|
| 50 |
+fi |
|
| 51 |
+ |
|
| 52 |
+# clone git repositories onto the system |
|
| 53 |
+# ====================================== |
|
| 54 |
+ |
|
| 55 |
+if [ ! -d $CHROOTCACHE/natty-stack ]; then |
|
| 56 |
+ rsync -azH $CHROOTCACHE/natty-dev/ $CHROOTCACHE/natty-stack/ |
|
| 57 |
+fi |
|
| 58 |
+ |
|
| 59 |
+# git clone only if directory doesn't exist already. Since ``DEST`` might not |
|
| 60 |
+# be owned by the installation user, we create the directory and change the |
|
| 61 |
+# ownership to the proper user. |
|
| 62 |
+function git_clone {
|
|
| 63 |
+ |
|
| 64 |
+ # clone new copy or fetch latest changes |
|
| 65 |
+ CHECKOUT=$CHROOTCACHE/natty-stack$2 |
|
| 66 |
+ if [ ! -d $CHECKOUT ]; then |
|
| 67 |
+ mkdir -p $CHECKOUT |
|
| 68 |
+ git clone $1 $CHECKOUT |
|
| 69 |
+ else |
|
| 70 |
+ pushd $CHECKOUT |
|
| 71 |
+ git fetch |
|
| 72 |
+ popd |
|
| 73 |
+ fi |
|
| 74 |
+ |
|
| 75 |
+ # FIXME(ja): checkout specified version (should works for branches and tags) |
|
| 76 |
+ |
|
| 77 |
+ pushd $CHECKOUT |
|
| 78 |
+ # checkout the proper branch/tag |
|
| 79 |
+ git checkout $3 |
|
| 80 |
+ # force our local version to be the same as the remote version |
|
| 81 |
+ git reset --hard origin/$3 |
|
| 82 |
+ popd |
|
| 83 |
+ |
|
| 84 |
+ # give ownership to the stack user |
|
| 85 |
+ chroot $CHROOTCACHE/natty-stack/ chown -R stack $2 |
|
| 86 |
+} |
|
| 87 |
+ |
|
| 88 |
+git_clone $NOVA_REPO $DEST/nova $NOVA_BRANCH |
|
| 89 |
+git_clone $GLANCE_REPO $DEST/glance $GLANCE_BRANCH |
|
| 90 |
+git_clone $KEYSTONE_REPO $DEST/keystone $KEYSTONE_BRANCH |
|
| 91 |
+git_clone $NOVNC_REPO $DEST/novnc $NOVNC_BRANCH |
|
| 92 |
+git_clone $DASH_REPO $DEST/dash $DASH_BRANCH $DASH_TAG |
|
| 93 |
+git_clone $NOVACLIENT_REPO $DEST/python-novaclient $NOVACLIENT_BRANCH |
|
| 94 |
+git_clone $OPENSTACKX_REPO $DEST/openstackx $OPENSTACKX_BRANCH |
|
| 95 |
+ |
|
| 96 |
+chroot $CHROOTCACHE/natty-stack mkdir -p $DEST/files |
|
| 97 |
+wget -c http://images.ansolabs.com/tty.tgz -O $CHROOTCACHE/natty-stack$DEST/files/tty.tgz |
|
| 98 |
+ |
|
| 99 |
+# Use this version of devstack? |
|
| 100 |
+if [ "$USE_CURRENT_DEVSTACK" = "1" ]; then |
|
| 101 |
+ rm -rf $CHROOTCACHE/natty-stack/$DEST/devstack |
|
| 102 |
+ cp -pr $CWD $CHROOTCACHE/natty-stack/$DEST/devstack |
|
| 103 |
+fi |
|
| 104 |
+ |
|
| 105 |
+cp -pr $CHROOTCACHE/natty-stack $NFSDIR |
|
| 106 |
+ |
|
| 107 |
+# set hostname |
|
| 108 |
+echo $NAME > $NFSDIR/etc/hostname |
|
| 109 |
+echo "127.0.0.1 localhost $NAME" > $NFSDIR/etc/hosts |
|
| 110 |
+ |
|
| 111 |
+# injecting root's public ssh key if it exists |
|
| 112 |
+if [ -f /root/.ssh/id_rsa.pub ]; then |
|
| 113 |
+ mkdir $NFSDIR/root/.ssh |
|
| 114 |
+ chmod 700 $NFSDIR/root/.ssh |
|
| 115 |
+ cp /root/.ssh/id_rsa.pub $NFSDIR/root/.ssh/authorized_keys |
|
| 116 |
+fi |
| 0 | 117 |
new file mode 100755 |
| ... | ... |
@@ -0,0 +1,116 @@ |
| 0 |
+#!/bin/bash -e |
|
| 1 |
+# build_pxe_boot.sh - Create a PXE boot environment |
|
| 2 |
+# |
|
| 3 |
+# build_pxe_boot.sh [-k kernel-version] destdir |
|
| 4 |
+# |
|
| 5 |
+# Assumes syslinux is installed |
|
| 6 |
+# Assumes devstack files are in `pwd`/pxe |
|
| 7 |
+# Only needs to run as root if the destdir permissions require it |
|
| 8 |
+ |
|
| 9 |
+UBUNTU_MIRROR=http://archive.ubuntu.com/ubuntu/dists/natty/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64 |
|
| 10 |
+ |
|
| 11 |
+MEMTEST_VER=4.10 |
|
| 12 |
+MEMTEST_BIN=memtest86+-${MEMTEST_VER}.bin
|
|
| 13 |
+MEMTEST_URL=http://www.memtest.org/download/${MEMTEST_VER}/
|
|
| 14 |
+ |
|
| 15 |
+KVER=`uname -r` |
|
| 16 |
+if [ "$1" = "-k" ]; then |
|
| 17 |
+ KVER=$2 |
|
| 18 |
+ shift;shift |
|
| 19 |
+fi |
|
| 20 |
+ |
|
| 21 |
+DEST_DIR=${1:-/tmp}/tftpboot
|
|
| 22 |
+PXEDIR=${PXEDIR:-/var/cache/devstack/pxe}
|
|
| 23 |
+OPWD=`pwd` |
|
| 24 |
+PROGDIR=`dirname $0` |
|
| 25 |
+ |
|
| 26 |
+mkdir -p $DEST_DIR/pxelinux.cfg |
|
| 27 |
+cd $DEST_DIR |
|
| 28 |
+for i in memdisk menu.c32 pxelinux.0; do |
|
| 29 |
+ cp -p /usr/lib/syslinux/$i $DEST_DIR |
|
| 30 |
+done |
|
| 31 |
+ |
|
| 32 |
+DEFAULT=$DEST_DIR/pxelinux.cfg/default |
|
| 33 |
+cat >$DEFAULT <<EOF |
|
| 34 |
+default menu.c32 |
|
| 35 |
+prompt 0 |
|
| 36 |
+timeout 0 |
|
| 37 |
+ |
|
| 38 |
+MENU TITLE PXE Boot Menu |
|
| 39 |
+ |
|
| 40 |
+EOF |
|
| 41 |
+ |
|
| 42 |
+# Setup devstack boot |
|
| 43 |
+mkdir -p $DEST_DIR/ubuntu |
|
| 44 |
+if [ ! -d $PXEDIR ]; then |
|
| 45 |
+ mkdir -p $PXEDIR |
|
| 46 |
+fi |
|
| 47 |
+if [ ! -r $PXEDIR/vmlinuz-${KVER} ]; then
|
|
| 48 |
+ sudo chmod 644 /boot/vmlinuz-${KVER}
|
|
| 49 |
+ if [ ! -r /boot/vmlinuz-${KVER} ]; then
|
|
| 50 |
+ echo "No kernel found" |
|
| 51 |
+ else |
|
| 52 |
+ cp -p /boot/vmlinuz-${KVER} $PXEDIR
|
|
| 53 |
+ fi |
|
| 54 |
+fi |
|
| 55 |
+cp -p $PXEDIR/vmlinuz-${KVER} $DEST_DIR/ubuntu
|
|
| 56 |
+if [ ! -r $PXEDIR/stack-initrd.gz ]; then |
|
| 57 |
+ cd $OPWD |
|
| 58 |
+ sudo $PROGDIR/build_ramdisk.sh $PXEDIR/stack-initrd.gz |
|
| 59 |
+fi |
|
| 60 |
+cp -p $PXEDIR/stack-initrd.gz $DEST_DIR/ubuntu |
|
| 61 |
+cat >>$DEFAULT <<EOF |
|
| 62 |
+ |
|
| 63 |
+LABEL devstack |
|
| 64 |
+ MENU LABEL ^devstack |
|
| 65 |
+ MENU DEFAULT |
|
| 66 |
+ KERNEL ubuntu/vmlinuz-$KVER |
|
| 67 |
+ APPEND initrd=ubuntu/stack-initrd.gz ramdisk_size=2109600 root=/dev/ram0 |
|
| 68 |
+EOF |
|
| 69 |
+ |
|
| 70 |
+# Get Ubuntu |
|
| 71 |
+if [ -d $PXEDIR ]; then |
|
| 72 |
+ cp -p $PXEDIR/natty-base-initrd.gz $DEST_DIR/ubuntu |
|
| 73 |
+fi |
|
| 74 |
+cat >>$DEFAULT <<EOF |
|
| 75 |
+ |
|
| 76 |
+LABEL ubuntu |
|
| 77 |
+ MENU LABEL ^Ubuntu Natty |
|
| 78 |
+ KERNEL ubuntu/vmlinuz-$KVER |
|
| 79 |
+ APPEND initrd=ubuntu/natty-base-initrd.gz ramdisk_size=419600 root=/dev/ram0 |
|
| 80 |
+EOF |
|
| 81 |
+ |
|
| 82 |
+# Get Memtest |
|
| 83 |
+cd $DEST_DIR |
|
| 84 |
+if [ ! -r $MEMTEST_BIN ]; then |
|
| 85 |
+ wget -N --quiet ${MEMTEST_URL}/${MEMTEST_BIN}.gz
|
|
| 86 |
+ gunzip $MEMTEST_BIN |
|
| 87 |
+fi |
|
| 88 |
+cat >>$DEFAULT <<EOF |
|
| 89 |
+ |
|
| 90 |
+LABEL memtest |
|
| 91 |
+ MENU LABEL ^Memtest86+ |
|
| 92 |
+ KERNEL $MEMTEST_BIN |
|
| 93 |
+EOF |
|
| 94 |
+ |
|
| 95 |
+# Get FreeDOS |
|
| 96 |
+mkdir -p $DEST_DIR/freedos |
|
| 97 |
+cd $DEST_DIR/freedos |
|
| 98 |
+wget -N --quiet http://www.fdos.org/bootdisks/autogen/FDSTD.288.gz |
|
| 99 |
+gunzip -f FDSTD.288.gz |
|
| 100 |
+cat >>$DEFAULT <<EOF |
|
| 101 |
+ |
|
| 102 |
+LABEL freedos |
|
| 103 |
+ MENU LABEL ^FreeDOS bootdisk |
|
| 104 |
+ KERNEL memdisk |
|
| 105 |
+ APPEND initrd=freedos/FDSTD.288 |
|
| 106 |
+EOF |
|
| 107 |
+ |
|
| 108 |
+# Local disk boot |
|
| 109 |
+cat >>$DEFAULT <<EOF |
|
| 110 |
+ |
|
| 111 |
+LABEL local |
|
| 112 |
+ MENU LABEL ^Local disk |
|
| 113 |
+ MENU DEFAULT |
|
| 114 |
+ LOCALBOOT 0 |
|
| 115 |
+EOF |
| 0 | 116 |
new file mode 100755 |
| ... | ... |
@@ -0,0 +1,136 @@ |
| 0 |
+#!/bin/bash |
|
| 1 |
+# build_ramdisk.sh - Build RAM disk images |
|
| 2 |
+ |
|
| 3 |
+if [ ! "$#" -eq "1" ]; then |
|
| 4 |
+ echo "$0 builds a gziped natty openstack install" |
|
| 5 |
+ echo "usage: $0 dest" |
|
| 6 |
+ exit 1 |
|
| 7 |
+fi |
|
| 8 |
+ |
|
| 9 |
+PROGDIR=`dirname $0` |
|
| 10 |
+CHROOTCACHE=${CHROOTCACHE:-/var/cache/devstack}
|
|
| 11 |
+ |
|
| 12 |
+# Source params |
|
| 13 |
+source ./stackrc |
|
| 14 |
+ |
|
| 15 |
+# Store cwd |
|
| 16 |
+CWD=`pwd` |
|
| 17 |
+ |
|
| 18 |
+DEST=${DEST:-/opt/stack}
|
|
| 19 |
+ |
|
| 20 |
+# Option to use the version of devstack on which we are currently working |
|
| 21 |
+USE_CURRENT_DEVSTACK=${USE_CURRENT_DEVSTACK:-1}
|
|
| 22 |
+ |
|
| 23 |
+# clean install of natty |
|
| 24 |
+if [ ! -d $CHROOTCACHE/natty-base ]; then |
|
| 25 |
+ $PROGDIR/make_image.sh -C natty $CHROOTCACHE/natty-base |
|
| 26 |
+ # copy kernel modules... |
|
| 27 |
+ # NOTE(ja): is there a better way to do this? |
|
| 28 |
+ cp -pr /lib/modules/`uname -r` $CHROOTCACHE/natty-base/lib/modules |
|
| 29 |
+ # a simple password - pass |
|
| 30 |
+ echo root:pass | chroot $CHROOTCACHE/natty-base chpasswd |
|
| 31 |
+fi |
|
| 32 |
+ |
|
| 33 |
+# prime natty with as many apt/pips as we can |
|
| 34 |
+if [ ! -d $CHROOTCACHE/natty-dev ]; then |
|
| 35 |
+ rsync -azH $CHROOTCACHE/natty-base/ $CHROOTCACHE/natty-dev/ |
|
| 36 |
+ chroot $CHROOTCACHE/natty-dev apt-get install -y `cat files/apts/* | cut -d\# -f1 | egrep -v "(rabbitmq|libvirt-bin|mysql-server)"` |
|
| 37 |
+ chroot $CHROOTCACHE/natty-dev pip install `cat files/pips/*` |
|
| 38 |
+ |
|
| 39 |
+ # Create a stack user that is a member of the libvirtd group so that stack |
|
| 40 |
+ # is able to interact with libvirt. |
|
| 41 |
+ chroot $CHROOTCACHE/natty-dev groupadd libvirtd |
|
| 42 |
+ chroot $CHROOTCACHE/natty-dev useradd stack -s /bin/bash -d $DEST -G libvirtd |
|
| 43 |
+ mkdir -p $CHROOTCACHE/natty-dev/$DEST |
|
| 44 |
+ chown stack $CHROOTCACHE/natty-dev/$DEST |
|
| 45 |
+ |
|
| 46 |
+ # a simple password - pass |
|
| 47 |
+ echo stack:pass | chroot $CHROOTCACHE/natty-dev chpasswd |
|
| 48 |
+ |
|
| 49 |
+ # and has sudo ability (in the future this should be limited to only what |
|
| 50 |
+ # stack requires) |
|
| 51 |
+ echo "stack ALL=(ALL) NOPASSWD: ALL" >> $CHROOTCACHE/natty-dev/etc/sudoers |
|
| 52 |
+fi |
|
| 53 |
+ |
|
| 54 |
+# clone git repositories onto the system |
|
| 55 |
+# ====================================== |
|
| 56 |
+ |
|
| 57 |
+if [ ! -d $CHROOTCACHE/natty-stack ]; then |
|
| 58 |
+ rsync -azH $CHROOTCACHE/natty-dev/ $CHROOTCACHE/natty-stack/ |
|
| 59 |
+fi |
|
| 60 |
+ |
|
| 61 |
+# git clone only if directory doesn't exist already. Since ``DEST`` might not |
|
| 62 |
+# be owned by the installation user, we create the directory and change the |
|
| 63 |
+# ownership to the proper user. |
|
| 64 |
+function git_clone {
|
|
| 65 |
+ |
|
| 66 |
+ # clone new copy or fetch latest changes |
|
| 67 |
+ CHECKOUT=$CHROOTCACHE/natty-stack$2 |
|
| 68 |
+ if [ ! -d $CHECKOUT ]; then |
|
| 69 |
+ mkdir -p $CHECKOUT |
|
| 70 |
+ git clone $1 $CHECKOUT |
|
| 71 |
+ else |
|
| 72 |
+ pushd $CHECKOUT |
|
| 73 |
+ git fetch |
|
| 74 |
+ popd |
|
| 75 |
+ fi |
|
| 76 |
+ |
|
| 77 |
+ # FIXME(ja): checkout specified version (should works for branches and tags) |
|
| 78 |
+ |
|
| 79 |
+ pushd $CHECKOUT |
|
| 80 |
+ # checkout the proper branch/tag |
|
| 81 |
+ git checkout $3 |
|
| 82 |
+ # force our local version to be the same as the remote version |
|
| 83 |
+ git reset --hard origin/$3 |
|
| 84 |
+ popd |
|
| 85 |
+ |
|
| 86 |
+ # give ownership to the stack user |
|
| 87 |
+ chroot $CHROOTCACHE/natty-stack/ chown -R stack $2 |
|
| 88 |
+} |
|
| 89 |
+ |
|
| 90 |
+git_clone $NOVA_REPO $DEST/nova $NOVA_BRANCH |
|
| 91 |
+git_clone $GLANCE_REPO $DEST/glance $GLANCE_BRANCH |
|
| 92 |
+git_clone $KEYSTONE_REPO $DEST/keystone $KEYSTONE_BRANCH |
|
| 93 |
+git_clone $NOVNC_REPO $DEST/novnc $NOVNC_BRANCH |
|
| 94 |
+git_clone $DASH_REPO $DEST/dash $DASH_BRANCH |
|
| 95 |
+git_clone $NOVACLIENT_REPO $DEST/python-novaclient $NOVACLIENT_BRANCH |
|
| 96 |
+git_clone $OPENSTACKX_REPO $DEST/openstackx $OPENSTACKX_BRANCH |
|
| 97 |
+ |
|
| 98 |
+# Use this version of devstack? |
|
| 99 |
+if [ "$USE_CURRENT_DEVSTACK" = "1" ]; then |
|
| 100 |
+ rm -rf $CHROOTCACHE/natty-stack/$DEST/devstack |
|
| 101 |
+ cp -pr $CWD $CHROOTCACHE/natty-stack/$DEST/devstack |
|
| 102 |
+fi |
|
| 103 |
+ |
|
| 104 |
+# Configure host network for DHCP |
|
| 105 |
+mkdir -p $CHROOTCACHE/natty-stack/etc/network |
|
| 106 |
+cat > $CHROOTCACHE/natty-stack/etc/network/interfaces <<EOF |
|
| 107 |
+auto lo |
|
| 108 |
+iface lo inet loopback |
|
| 109 |
+ |
|
| 110 |
+auto eth0 |
|
| 111 |
+iface eth0 inet dhcp |
|
| 112 |
+EOF |
|
| 113 |
+ |
|
| 114 |
+# build a new image |
|
| 115 |
+BASE=$CHROOTCACHE/build.$$ |
|
| 116 |
+IMG=$BASE.img |
|
| 117 |
+MNT=$BASE/ |
|
| 118 |
+ |
|
| 119 |
+# (quickly) create a 2GB blank filesystem |
|
| 120 |
+dd bs=1 count=1 seek=$((2*1024*1024*1024)) if=/dev/zero of=$IMG |
|
| 121 |
+# force it to be initialized as ext2 |
|
| 122 |
+mkfs.ext2 -F $IMG |
|
| 123 |
+ |
|
| 124 |
+# mount blank image loopback and load it |
|
| 125 |
+mkdir -p $MNT |
|
| 126 |
+mount -o loop $IMG $MNT |
|
| 127 |
+rsync -azH $CHROOTCACHE/natty-stack/ $MNT |
|
| 128 |
+ |
|
| 129 |
+# umount and cleanup |
|
| 130 |
+umount $MNT |
|
| 131 |
+rmdir $MNT |
|
| 132 |
+ |
|
| 133 |
+# gzip into final location |
|
| 134 |
+gzip -1 $IMG -c > $1 |
|
| 135 |
+ |
| 0 | 136 |
new file mode 100755 |
| ... | ... |
@@ -0,0 +1,178 @@ |
| 0 |
+#!/bin/bash |
|
| 1 |
+# make_image.sh - Create Ubuntu images in various formats |
|
| 2 |
+# |
|
| 3 |
+# Supported formats: qcow (kvm), vmdk (vmserver), vdi (vbox), vhd (vpc), raw |
|
| 4 |
+# |
|
| 5 |
+# Requires sudo to root |
|
| 6 |
+ |
|
| 7 |
+ROOTSIZE=${ROOTSIZE:-8192}
|
|
| 8 |
+SWAPSIZE=${SWAPSIZE:-1024}
|
|
| 9 |
+MIN_PKGS=${MIN_PKGS:-"apt-utils gpgv openssh-server"}
|
|
| 10 |
+ |
|
| 11 |
+usage() {
|
|
| 12 |
+ echo "Usage: $0 - Create Ubuntu images" |
|
| 13 |
+ echo "" |
|
| 14 |
+ echo "$0 [-m] [-r rootsize] [-s swapsize] release format" |
|
| 15 |
+ echo "$0 -C [-m] release chrootdir" |
|
| 16 |
+ echo "$0 -I [-r rootsize] [-s swapsize] chrootdir format" |
|
| 17 |
+ echo "" |
|
| 18 |
+ echo "-C - Create the initial chroot dir" |
|
| 19 |
+ echo "-I - Create the final image from a chroot" |
|
| 20 |
+ echo "-m - minimal installation" |
|
| 21 |
+ echo "-r size - root fs size in MB" |
|
| 22 |
+ echo "-s size - swap fs size in MB" |
|
| 23 |
+ echo "release - Ubuntu release: jaunty - oneric" |
|
| 24 |
+ echo "format - image format: qcow2, vmdk, vdi, vhd, xen, raw, fs" |
|
| 25 |
+ exit 1 |
|
| 26 |
+} |
|
| 27 |
+ |
|
| 28 |
+while getopts CIhmr:s: c; do |
|
| 29 |
+ case $c in |
|
| 30 |
+ C) CHROOTONLY=1 |
|
| 31 |
+ ;; |
|
| 32 |
+ I) IMAGEONLY=1 |
|
| 33 |
+ ;; |
|
| 34 |
+ h) usage |
|
| 35 |
+ ;; |
|
| 36 |
+ m) MINIMAL=1 |
|
| 37 |
+ ;; |
|
| 38 |
+ r) ROOTSIZE=$OPTARG |
|
| 39 |
+ ;; |
|
| 40 |
+ s) SWAPSIZE=$OPTARG |
|
| 41 |
+ ;; |
|
| 42 |
+ esac |
|
| 43 |
+done |
|
| 44 |
+shift `expr $OPTIND - 1` |
|
| 45 |
+ |
|
| 46 |
+if [ ! "$#" -eq "2" -o -n "$CHROOTONLY" -a -n "$IMAGEONLY" ]; then |
|
| 47 |
+ usage |
|
| 48 |
+fi |
|
| 49 |
+ |
|
| 50 |
+# Default args |
|
| 51 |
+RELEASE=$1 |
|
| 52 |
+FORMAT=$2 |
|
| 53 |
+CHROOTDIR="" |
|
| 54 |
+ |
|
| 55 |
+if [ -n "$CHROOTONLY" ]; then |
|
| 56 |
+ RELEASE=$1 |
|
| 57 |
+ CHROOTDIR=$2 |
|
| 58 |
+ FORMAT="pass" |
|
| 59 |
+fi |
|
| 60 |
+ |
|
| 61 |
+if [ -n "$IMAGEONLY" ]; then |
|
| 62 |
+ CHROOTDIR=$1 |
|
| 63 |
+ FORMAT=$2 |
|
| 64 |
+ RELEASE="pass" |
|
| 65 |
+fi |
|
| 66 |
+ |
|
| 67 |
+case $FORMAT in |
|
| 68 |
+ kvm|qcow2) FORMAT=qcow2 |
|
| 69 |
+ QFORMAT=qcow2 |
|
| 70 |
+ HYPER=kvm |
|
| 71 |
+ ;; |
|
| 72 |
+ vmserver|vmdk) |
|
| 73 |
+ FORMAT=vmdk |
|
| 74 |
+ QFORMAT=vmdk |
|
| 75 |
+ HYPER=vmserver |
|
| 76 |
+ ;; |
|
| 77 |
+ vbox|vdi) FORMAT=vdi |
|
| 78 |
+ QFORMAT=vdi |
|
| 79 |
+ HYPER=kvm |
|
| 80 |
+ ;; |
|
| 81 |
+ vhd|vpc) FORMAT=vhd |
|
| 82 |
+ QFORMAT=vpc |
|
| 83 |
+ HYPER=kvm |
|
| 84 |
+ ;; |
|
| 85 |
+ xen) FORMAT=raw |
|
| 86 |
+ QFORMAT=raw |
|
| 87 |
+ HYPER=xen |
|
| 88 |
+ ;; |
|
| 89 |
+ raw) FORMAT=raw |
|
| 90 |
+ QFORMAT=raw |
|
| 91 |
+ HYPER=kvm |
|
| 92 |
+ ;; |
|
| 93 |
+ pass) ;; |
|
| 94 |
+ *) echo "Unknown format: $FORMAT" |
|
| 95 |
+ usage |
|
| 96 |
+esac |
|
| 97 |
+ |
|
| 98 |
+case $RELEASE in |
|
| 99 |
+ natty) ;; |
|
| 100 |
+ maverick) ;; |
|
| 101 |
+ lucid) ;; |
|
| 102 |
+ karmic) ;; |
|
| 103 |
+ jaunty) ;; |
|
| 104 |
+ pass) ;; |
|
| 105 |
+ *) echo "Unknown release: $RELEASE" |
|
| 106 |
+ usage |
|
| 107 |
+ ;; |
|
| 108 |
+esac |
|
| 109 |
+ |
|
| 110 |
+# Install stuff if necessary |
|
| 111 |
+if [ -z `which vmbuilder` ]; then |
|
| 112 |
+ sudo apt-get install ubuntu-vm-builder |
|
| 113 |
+fi |
|
| 114 |
+ |
|
| 115 |
+if [ -n "$CHROOTONLY" ]; then |
|
| 116 |
+ # Build a chroot directory |
|
| 117 |
+ HYPER=kvm |
|
| 118 |
+ if [ "$MINIMAL" = 1 ]; then |
|
| 119 |
+ ARGS="--variant=minbase" |
|
| 120 |
+ for i in $MIN_PKGS; do |
|
| 121 |
+ ARGS="$ARGS --addpkg=$i" |
|
| 122 |
+ done |
|
| 123 |
+ fi |
|
| 124 |
+ sudo vmbuilder $HYPER ubuntu $ARGS \ |
|
| 125 |
+ --suite $RELEASE \ |
|
| 126 |
+ --only-chroot \ |
|
| 127 |
+ --chroot-dir=$CHROOTDIR \ |
|
| 128 |
+ --overwrite \ |
|
| 129 |
+ --addpkg=$MIN_PKGS \ |
|
| 130 |
+ |
|
| 131 |
+ sudo cp -p files/sources.list $CHROOTDIR/etc/apt/sources.list |
|
| 132 |
+ sudo chroot $CHROOTDIR apt-get update |
|
| 133 |
+ |
|
| 134 |
+ exit 0 |
|
| 135 |
+fi |
|
| 136 |
+ |
|
| 137 |
+# Build the image |
|
| 138 |
+TMPDIR=tmp |
|
| 139 |
+TMPDISK=`mktemp imgXXXXXXXX` |
|
| 140 |
+SIZE=$[$ROOTSIZE+$SWAPSIZE+1] |
|
| 141 |
+dd if=/dev/null of=$TMPDISK bs=1M seek=$SIZE count=1 |
|
| 142 |
+ |
|
| 143 |
+if [ -n "$IMAGEONLY" ]; then |
|
| 144 |
+ # Build image from chroot |
|
| 145 |
+ sudo vmbuilder $HYPER ubuntu $ARGS \ |
|
| 146 |
+ --existing-chroot=$CHROOTDIR \ |
|
| 147 |
+ --overwrite \ |
|
| 148 |
+ --rootsize=$ROOTSIZE \ |
|
| 149 |
+ --swapsize=$SWAPSIZE \ |
|
| 150 |
+ --tmpfs - \ |
|
| 151 |
+ --raw=$TMPDISK \ |
|
| 152 |
+ |
|
| 153 |
+else |
|
| 154 |
+ # Do the whole shebang in one pass |
|
| 155 |
+ ARGS="--variant=minbase" |
|
| 156 |
+ for i in $MIN_PKGS; do |
|
| 157 |
+ ARGS="$ARGS --addpkg=$i" |
|
| 158 |
+ done |
|
| 159 |
+ sudo vmbuilder $HYPER ubuntu $ARGS \ |
|
| 160 |
+ --suite $RELEASE \ |
|
| 161 |
+ --overwrite \ |
|
| 162 |
+ --rootsize=$ROOTSIZE \ |
|
| 163 |
+ --swapsize=$SWAPSIZE \ |
|
| 164 |
+ --tmpfs - \ |
|
| 165 |
+ --raw=$TMPDISK \ |
|
| 166 |
+ |
|
| 167 |
+fi |
|
| 168 |
+ |
|
| 169 |
+if [ "$FORMAT" = "raw" ]; then |
|
| 170 |
+ # Get image |
|
| 171 |
+ mv $TMPDISK $RELEASE.$FORMAT |
|
| 172 |
+else |
|
| 173 |
+ # Convert image |
|
| 174 |
+ qemu-img convert -O $QFORMAT $TMPDISK $RELEASE.$FORMAT |
|
| 175 |
+ rm $TMPDISK |
|
| 176 |
+fi |
|
| 177 |
+rm -rf ubuntu-$HYPER |
| 0 | 178 |
new file mode 100755 |
| ... | ... |
@@ -0,0 +1,90 @@ |
| 0 |
+#!/bin/bash |
|
| 1 |
+# upload_image.sh - Upload Ubuntu images (create if necessary) in various formats |
|
| 2 |
+# Supported formats: qcow (kvm), vmdk (vmserver), vdi (vbox), vhd (vpc) |
|
| 3 |
+# Requires sudo to root |
|
| 4 |
+ |
|
| 5 |
+usage() {
|
|
| 6 |
+ echo "$0 - Upload images to OpenStack" |
|
| 7 |
+ echo "" |
|
| 8 |
+ echo "$0 [-h host] [-p port] release format" |
|
| 9 |
+ exit 1 |
|
| 10 |
+} |
|
| 11 |
+ |
|
| 12 |
+HOST=${HOST:-localhost}
|
|
| 13 |
+PORT=${PORT:-9292}
|
|
| 14 |
+DEST=${DEST:-/opt/stack}
|
|
| 15 |
+ |
|
| 16 |
+while getopts h:p: c; do |
|
| 17 |
+ case $c in |
|
| 18 |
+ h) HOST=$OPTARG |
|
| 19 |
+ ;; |
|
| 20 |
+ p) PORT=$OPTARG |
|
| 21 |
+ ;; |
|
| 22 |
+ esac |
|
| 23 |
+done |
|
| 24 |
+shift `expr $OPTIND - 1` |
|
| 25 |
+ |
|
| 26 |
+RELEASE=$1 |
|
| 27 |
+FORMAT=$2 |
|
| 28 |
+ |
|
| 29 |
+case $FORMAT in |
|
| 30 |
+ kvm|qcow2) FORMAT=qcow2 |
|
| 31 |
+ TARGET=kvm |
|
| 32 |
+ ;; |
|
| 33 |
+ vmserver|vmdk) |
|
| 34 |
+ FORMAT=vmdk |
|
| 35 |
+ TARGET=vmserver |
|
| 36 |
+ ;; |
|
| 37 |
+ vbox|vdi) TARGET=kvm |
|
| 38 |
+ FORMAT=vdi |
|
| 39 |
+ ;; |
|
| 40 |
+ vhd|vpc) TARGET=kvm |
|
| 41 |
+ FORMAT=vhd |
|
| 42 |
+ ;; |
|
| 43 |
+ *) echo "Unknown format: $FORMAT" |
|
| 44 |
+ usage |
|
| 45 |
+esac |
|
| 46 |
+ |
|
| 47 |
+case $RELEASE in |
|
| 48 |
+ natty) ;; |
|
| 49 |
+ maverick) ;; |
|
| 50 |
+ lucid) ;; |
|
| 51 |
+ karmic) ;; |
|
| 52 |
+ jaunty) ;; |
|
| 53 |
+ *) if [ ! -r $RELEASE.$FORMAT ]; then |
|
| 54 |
+ echo "Unknown release: $RELEASE" |
|
| 55 |
+ usage |
|
| 56 |
+ fi |
|
| 57 |
+ ;; |
|
| 58 |
+esac |
|
| 59 |
+ |
|
| 60 |
+GLANCE=`which glance` |
|
| 61 |
+if [ -z "$GLANCE" ]; then |
|
| 62 |
+ if [ -x "$DEST/glance/bin/glance" ]; then |
|
| 63 |
+ # Look for stack.sh's install |
|
| 64 |
+ GLANCE="$DEST/glance/bin/glance" |
|
| 65 |
+ else |
|
| 66 |
+ # Install Glance client in $DEST |
|
| 67 |
+ echo "Glance not found, must install client" |
|
| 68 |
+ OWD=`pwd` |
|
| 69 |
+ cd $DEST |
|
| 70 |
+ sudo apt-get install python-pip python-eventlet python-routes python-greenlet python-argparse python-sqlalchemy python-wsgiref python-pastedeploy python-xattr |
|
| 71 |
+ sudo pip install kombu |
|
| 72 |
+ sudo git clone https://github.com/cloudbuilders/glance.git |
|
| 73 |
+ cd glance |
|
| 74 |
+ sudo python setup.py develop |
|
| 75 |
+ cd $OWD |
|
| 76 |
+ GLANCE=`which glance` |
|
| 77 |
+ fi |
|
| 78 |
+fi |
|
| 79 |
+ |
|
| 80 |
+# Create image if it doesn't exist |
|
| 81 |
+if [ ! -r $RELEASE.$FORMAT ]; then |
|
| 82 |
+ DIR=`dirname $0` |
|
| 83 |
+ echo "$RELEASE.$FORMAT not found, creating..." |
|
| 84 |
+ $DIR/make_image.sh $RELEASE $FORMAT |
|
| 85 |
+fi |
|
| 86 |
+ |
|
| 87 |
+# Upload the image |
|
| 88 |
+echo "Uploading image $RELEASE.$FORMAT to $HOST" |
|
| 89 |
+$GLANCE add name=$RELEASE.$FORMAT is_public=true disk_format=$FORMAT --host $HOST --port $PORT <$RELEASE.$FORMAT |
| 0 | 90 |
deleted file mode 100755 |
| ... | ... |
@@ -1,90 +0,0 @@ |
| 1 |
-#!/bin/bash |
|
| 2 |
-# upload_image.sh - Upload Ubuntu images (create if necessary) in various formats |
|
| 3 |
-# Supported formats: qcow (kvm), vmdk (vmserver), vdi (vbox), vhd (vpc) |
|
| 4 |
-# Requires sudo to root |
|
| 5 |
- |
|
| 6 |
-usage() {
|
|
| 7 |
- echo "$0 - Upload images to OpenStack" |
|
| 8 |
- echo "" |
|
| 9 |
- echo "$0 [-h host] [-p port] release format" |
|
| 10 |
- exit 1 |
|
| 11 |
-} |
|
| 12 |
- |
|
| 13 |
-HOST=${HOST:-localhost}
|
|
| 14 |
-PORT=${PORT:-9292}
|
|
| 15 |
-DEST=${DEST:-/opt/stack}
|
|
| 16 |
- |
|
| 17 |
-while getopts h:p: c; do |
|
| 18 |
- case $c in |
|
| 19 |
- h) HOST=$OPTARG |
|
| 20 |
- ;; |
|
| 21 |
- p) PORT=$OPTARG |
|
| 22 |
- ;; |
|
| 23 |
- esac |
|
| 24 |
-done |
|
| 25 |
-shift `expr $OPTIND - 1` |
|
| 26 |
- |
|
| 27 |
-RELEASE=$1 |
|
| 28 |
-FORMAT=$2 |
|
| 29 |
- |
|
| 30 |
-case $FORMAT in |
|
| 31 |
- kvm|qcow2) FORMAT=qcow2 |
|
| 32 |
- TARGET=kvm |
|
| 33 |
- ;; |
|
| 34 |
- vmserver|vmdk) |
|
| 35 |
- FORMAT=vmdk |
|
| 36 |
- TARGET=vmserver |
|
| 37 |
- ;; |
|
| 38 |
- vbox|vdi) TARGET=kvm |
|
| 39 |
- FORMAT=vdi |
|
| 40 |
- ;; |
|
| 41 |
- vhd|vpc) TARGET=kvm |
|
| 42 |
- FORMAT=vhd |
|
| 43 |
- ;; |
|
| 44 |
- *) echo "Unknown format: $FORMAT" |
|
| 45 |
- usage |
|
| 46 |
-esac |
|
| 47 |
- |
|
| 48 |
-case $RELEASE in |
|
| 49 |
- natty) ;; |
|
| 50 |
- maverick) ;; |
|
| 51 |
- lucid) ;; |
|
| 52 |
- karmic) ;; |
|
| 53 |
- jaunty) ;; |
|
| 54 |
- *) if [ ! -r $RELEASE.$FORMAT ]; then |
|
| 55 |
- echo "Unknown release: $RELEASE" |
|
| 56 |
- usage |
|
| 57 |
- fi |
|
| 58 |
- ;; |
|
| 59 |
-esac |
|
| 60 |
- |
|
| 61 |
-GLANCE=`which glance` |
|
| 62 |
-if [ -z "$GLANCE" ]; then |
|
| 63 |
- if [ -x "$DEST/glance/bin/glance" ]; then |
|
| 64 |
- # Look for stack.sh's install |
|
| 65 |
- GLANCE="$DEST/glance/bin/glance" |
|
| 66 |
- else |
|
| 67 |
- # Install Glance client in $DEST |
|
| 68 |
- echo "Glance not found, must install client" |
|
| 69 |
- OWD=`pwd` |
|
| 70 |
- cd $DEST |
|
| 71 |
- sudo apt-get install python-pip python-eventlet python-routes python-greenlet python-argparse python-sqlalchemy python-wsgiref python-pastedeploy python-xattr |
|
| 72 |
- sudo pip install kombu |
|
| 73 |
- sudo git clone https://github.com/cloudbuilders/glance.git |
|
| 74 |
- cd glance |
|
| 75 |
- sudo python setup.py develop |
|
| 76 |
- cd $OWD |
|
| 77 |
- GLANCE=`which glance` |
|
| 78 |
- fi |
|
| 79 |
-fi |
|
| 80 |
- |
|
| 81 |
-# Create image if it doesn't exist |
|
| 82 |
-if [ ! -r $RELEASE.$FORMAT ]; then |
|
| 83 |
- DIR=`dirname $0` |
|
| 84 |
- echo "$RELEASE.$FORMAT not found, creating..." |
|
| 85 |
- $DIR/make_image.sh $RELEASE $FORMAT |
|
| 86 |
-fi |
|
| 87 |
- |
|
| 88 |
-# Upload the image |
|
| 89 |
-echo "Uploading image $RELEASE.$FORMAT to $HOST" |
|
| 90 |
-$GLANCE add name=$RELEASE.$FORMAT is_public=true disk_format=$FORMAT --host $HOST --port $PORT <$RELEASE.$FORMAT |