Files
e6192a67bdc81a74945f230e833006836e94c81b
nova /contrib /nova.sh

229 lines
7.2 KiB
Bash
Raw Normal View History

DIR=`pwd`
CMD=1ドル
2011年01月21日 15:48:10 -08:00
if [ "$CMD" = "branch" ]; then
SOURCE_BRANCH=${2:-lp:nova}
DIRNAME=${3:-nova}
else
DIRNAME=${2:-nova}
2011年01月21日 15:48:10 -08:00
if [ ! -n "$HOST_IP" ]; then
# NOTE(vish): This will just get the first ip in the list, so if you
# have more than one eth device set up, this will fail, and
# you should explicitly set HOST_IP in your environment
2010年11月23日 23:58:26 +00:00
2011年03月25日 09:23:10 -07:00
INTERFACE=${INTERFACE:-eth0}
FLOATING_RANGE=${FLOATING_RANGE:-10.6.0.0/27}
FIXED_RANGE=${FIXED_RANGE:-10.0.0.0/24}
USE_LDAP=${USE_E_MYSQL:-0}
MYSQL_PASS=${MYSQL_PASS:-nova}
TEST=${TEST:-0}
2010年11月23日 23:58:26 +00:00
USE_LDAP=${USE_LDAP:-0}
USE_OPENDJ=${USE_OPENDJ:-0}
# Use IPv6
USE_IPV6=${USE_IPV6:-0}
LIBVIRT_TYPE=${LIBVIRT_TYPE:-qemu}
2010年11月29日 21:23:21 +00:00
NET_MAN=${NET_MAN:-VlanManager}
2010年11月23日 23:58:26 +00:00
# NOTE(vish): If you are using FlatDHCP on multiple hosts, set the interface
# below but make sure that the interface doesn't already have an
# ip or you risk breaking things.
# FLAT_INTERFACE=eth0
if [ "$USE_MYSQL" == 1 ]; then
SQL_CONN=mysql://root:$MYSQL_PASS@localhost/nova
else
SQL_CONN=sqlite:///$NOVA_DIR/nova.sqlite
fi
if [ "$USE_LDAP" == 1 ]; then
AUTH=ldapdriver.LdapDriver
else
AUTH=dbdriver.DbDriver
fi
if [ "$CMD" == "branch" ]; then
sudo apt-get install -y bzr
2011年01月21日 15:48:10 -08:00
if [ ! -e "$DIR/.bzr" ]; then
bzr init-repo $DIR
fi
bzr branch $SOURCE_BRANCH $NOVA_DIR
cd $NOVA_DIR
mkdir -p $NOVA_DIR/instances
mkdir -p $NOVA_DIR/networks
2011年01月21日 15:48:10 -08:00
exit
# You should only have to run this once
if [ "$CMD" == "install" ]; then
sudo apt-get install -y python-software-properties
2010年12月01日 22:43:46 +00:00
sudo add-apt-repository ppa:nova-core/trunk
sudo apt-get install -y dnsmasq-base kpartx kvm gawk iptables ebtables
sudo apt-get install -y user-mode-linux kvm libvirt-bin
2010年11月23日 17:57:25 +00:00
sudo apt-get install -y screen euca2ools vlan curl rabbitmq-server
sudo apt-get install -y lvm2 iscsitarget open-iscsi
2011年02月22日 18:04:08 -08:00
sudo apt-get install -y socat unzip
echo "ISCSITARGET_ENABLE=true" | sudo tee /etc/default/iscsitarget
sudo /etc/init.d/iscsitarget restart
sudo /etc/init.d/libvirt-bin restart
2011年01月05日 19:16:17 +00:00
sudo modprobe nbd
2011年03月25日 09:23:10 -07:00
sudo apt-get install -y python-twisted python-mox python-ipy python-paste
sudo apt-get install -y python-migrate python-gflags python-greenlet
sudo apt-get install -y python-libvirt python-libxml2 python-routes
sudo apt-get install -y python-netaddr python-pastedeploy python-eventlet
sudo apt-get install -y python-novaclient python-glance python-cheetah
sudo apt-get install -y python-carrot python-tempita python-sqlalchemy
sudo apt-get install -y python-suds
2011年01月20日 00:40:57 -08:00
if [ "$USE_IPV6" == 1 ]; then
sudo apt-get install -y radvd
sudo bash -c "echo 1 > /proc/sys/net/ipv6/conf/all/forwarding"
sudo bash -c "echo 0 > /proc/sys/net/ipv6/conf/all/accept_ra"
fi
cat <<MYSQL_PRESEED | debconf-set-selections
mysql-server-5.1 mysql-server/root_password password $MYSQL_PASS
mysql-server-5.1 mysql-server/root_password_again password $MYSQL_PASS
mysql-server-5.1 mysql-server/start_on_boot boolean true
MYSQL_PRESEED
apt-get install -y mysql-server python-mysqldb
fi
2011年01月21日 15:48:10 -08:00
mkdir -p $DIR/images
wget -c http://images.ansolabs.com/tty.tgz
tar -C $DIR/images -zxf tty.tgz
exit
NL=`echo -ne '015円'`
function screen_it {
screen -S nova -X screen -t 1ドル
screen -S nova -p 1ドル -X stuff "2ドル$NL"
}
2011年03月25日 09:23:10 -07:00
if [ "$CMD" == "run" ] || [ "$CMD" == "run_detached" ]; then
2011年01月21日 15:48:10 -08:00
cat >$NOVA_DIR/bin/nova.conf << NOVA_CONF_EOF
--verbose
--nodaemon
--dhcpbridge_flagfile=$NOVA_DIR/bin/nova.conf
--network_manager=nova.network.manager.$NET_MAN
2011年02月22日 18:04:08 -08:00
--my_ip=$HOST_IP
2011年03月25日 09:23:10 -07:00
--public_interface=$INTERFACE
--vlan_interface=$INTERFACE
2011年01月21日 15:48:10 -08:00
--sql_connection=$SQL_CONN
--auth_driver=nova.auth.$AUTH
--libvirt_type=$LIBVIRT_TYPE
NOVA_CONF_EOF
if [ -n "$FLAT_INTERFACE" ]; then
echo "--flat_interface=$FLAT_INTERFACE" >>$NOVA_DIR/bin/nova.conf
fi
if [ "$USE_IPV6" == 1 ]; then
echo "--use_ipv6" >>$NOVA_DIR/bin/nova.conf
fi
2011年01月20日 00:40:57 -08:00
if [ "$USE_IPV6" == 1 ]; then
killall radvd
fi
sleep 1
if [ "$USE_MYSQL" == 1 ]; then
mysql -p$MYSQL_PASS -e 'DROP DATABASE nova;'
mysql -p$MYSQL_PASS -e 'CREATE DATABASE nova;'
else
rm $NOVA_DIR/nova.sqlite
fi
if [ "$USE_LDAP" == 1 ]; then
echo '--ldap_user_dn=cn=Directory Manager' >> \
/etc/nova/nova-manage.conf
sudo $NOVA_DIR/nova/auth/opendj.sh
else
sudo $NOVA_DIR/nova/auth/slap.sh
fi
rm -rf $NOVA_DIR/instances
mkdir -p $NOVA_DIR/instances
rm -rf $NOVA_DIR/networks
mkdir -p $NOVA_DIR/networks
if [ ! -d "$NOVA_DIR/images" ]; then
ln -s $DIR/images $NOVA_DIR/images
fi
if [ "$TEST" == 1 ]; then
cd $NOVA_DIR
python $NOVA_DIR/run_tests.py
cd $DIR
fi
# create the database
$NOVA_DIR/bin/nova-manage db sync
# create an admin user called 'admin'
$NOVA_DIR/bin/nova-manage user admin admin admin admin
# create a project called 'admin' with project manager of 'admin'
$NOVA_DIR/bin/nova-manage project create admin admin
# create a small network
2011年03月25日 09:23:10 -07:00
$NOVA_DIR/bin/nova-manage network create $FIXED_RANGE 1 32
2011年02月22日 18:04:08 -08:00
# create some floating ips
2011年03月25日 09:23:10 -07:00
$NOVA_DIR/bin/nova-manage floating create `hostname` $FLOATING_RANGE
# convert old images
$NOVA_DIR/bin/nova-manage image convert $DIR/images
# nova api crashes if we start it with a regular screen command,
# so send the start command by forcing text into the window.
2010年11月29日 21:23:21 +00:00
screen_it api "$NOVA_DIR/bin/nova-api"
screen_it objectstore "$NOVA_DIR/bin/nova-objectstore"
screen_it compute "$NOVA_DIR/bin/nova-compute"
screen_it network "$NOVA_DIR/bin/nova-network"
screen_it scheduler "$NOVA_DIR/bin/nova-scheduler"
screen_it volume "$NOVA_DIR/bin/nova-volume"
2010年12月28日 18:11:28 -08:00
screen_it ajax_console_proxy "$NOVA_DIR/bin/nova-ajax-console-proxy"
2011年03月07日 16:01:43 -08:00
sleep 2
# export environment variables for project 'admin' and user 'admin'
$NOVA_DIR/bin/nova-manage project zipfile admin admin $NOVA_DIR/nova.zip
unzip -o $NOVA_DIR/nova.zip -d $NOVA_DIR/
2011年03月25日 09:23:10 -07:00
screen_it test "export PATH=$NOVA_DIR/bin:$PATH;. $NOVA_DIR/novarc"
if [ "$CMD" != "run_detached" ]; then
screen -S nova -x
fi
if [ "$CMD" == "run" ] || [ "$CMD" == "terminate" ]; then
# shutdown instances
. $NOVA_DIR/novarc; euca-describe-instances | grep i- | cut -f2 | xargs euca-terminate-instances
sleep 2
2010年11月23日 17:57:25 +00:00
# delete volumes
. $NOVA_DIR/novarc; euca-describe-volumes | grep vol- | cut -f2 | xargs -n1 euca-delete-volume
if [ "$CMD" == "run" ] || [ "$CMD" == "clean" ]; then
screen -S nova -X quit
rm *.pid*
fi
if [ "$CMD" == "scrub" ]; then
$NOVA_DIR/tools/clean-vlans
if [ "$LIBVIRT_TYPE" == "uml" ]; then
virsh -c uml:///system list | grep i- | awk '{print \1ドル}' | xargs -n1 virsh -c uml:///system destroy
else
virsh list | grep i- | awk '{print \1ドル}' | xargs -n1 virsh destroy
fi
fi