heat/tools/openstack

153 lines
4.6 KiB
Bash
Executable File

#!/bin/bash
# Copyright (C) 2012
# Authors:
# Angus Salkeld
# Steven Dake
# ASL2.0
# sleep 1 = systemd's definition of start is different from mine
action=$1
if [ -z "$action" ]
then
echo "openstack [start|stop|install|erase]"
echo ""
echo "This tool is designed to control OpenStack on a Fedora 16/17 system"
echo ""
echo "start - Starts OpenStack"
echo "stop - Stops OpenStack"
echo "install - Installs a fresh OpenStack system with Keystone from your repos"
echo "erase - permanently destroys an existing installation of OpenStack"
fi
function os_start() {
action=start
sudo systemctl $action qpidd.service mysqld.service
sleep 1
sudo systemctl $action openstack-keystone.service
sleep 1
for svc in api registry
do
sudo systemctl $action openstack-glance-$svc.service
done
sudo vgcreate nova-volumes $(sudo losetup --show -f /var/lib/nova/nova-volumes.img)
for svc in api objectstore compute network volume scheduler cert
do
sudo systemctl $action openstack-nova-$svc.service
done
}
function os_stop() {
action=stop
sudo systemctl $action openstack-keystone.service
for svc in api objectstore compute network volume scheduler cert
do
sudo systemctl $action openstack-nova-$svc.service
done
for svc in api registry
do
sudo systemctl $action openstack-glance-$svc.service
done
}
function os_erase() {
os_stop
sleep 1
sudo rm -f /var/lib/libvirt/qemu/save/instance-000*
sudo rm -f /var/lib/libvirt/qemu/instance-000*
for iii in /usr/lib/systemd/system/openstack-*.service; do sudo systemctl stop $(basename $iii); done
sudo yum erase -y python-glance python-nova* python-keystone* openstack-swift* openstack-dashboard
sudo systemctl start mysqld.service
sleep 1
cat << EOF | mysql -u root -p
DROP USER 'nova'@'localhost';
DROP USER 'nova'@'%';
DROP USER 'keystone'@'localhost';
DROP USER 'keystone'@'%';
DROP USER 'glance'@'localhost';
DROP USER 'glance'@'%';
DROP DATABASE nova;
DROP DATABASE keystone;
DROP DATABASE glance;
flush privileges;
EOF
sudo vgchange -an nova-volumes
sudo losetup -d /dev/loop0
sudo rm -f /var/lib/nova/nova-volumes.img
sudo rm -rf /etc/{glance,nova,swift,keystone,openstack-dashboard} /var/lib/{glance,nova,swift,keystone} /var/log/{glance,nova,swift,keystone} /var/run/{glance,nova,swift,keystone}
rm -f $HOME/.keystonerc
}
function os_install() {
sudo yum install -y openstack-nova openstack-glance openstack-keystone openstack-dashboard
sudo dd if=/dev/zero of=/var/lib/nova/nova-volumes.img bs=1M seek=20k count=0
sudo systemctl start mysqld.service
sleep 1
sudo openstack-nova-db-setup
sudo openstack-glance-db-setup
sudo openstack-keystone-db-setup
mkdir -p $HOME/.openstack
cat > $HOME/.openstack/keystonerc <<EOF
export ADMIN_TOKEN=$(openssl rand -hex 10)
export OS_USERNAME=admin
export OS_PASSWORD=verybadpass
export OS_TENANT_NAME=admin
export OS_AUTH_URL=http://127.0.0.1:5000/v2.0/
export OS_AUTH_STRATEGY=keystone
EOF
. $HOME/.openstack/keystonerc
sudo openstack-config-set /etc/keystone/keystone.conf DEFAULT admin_token $ADMIN_TOKEN
os_start
sleep 1
sudo ADMIN_PASSWORD=$OS_PASSWORD SERVICE_PASSWORD=OS_SERVICE_PASS openstack-keystone-sample-data
sudo openstack-config-set /etc/nova/api-paste.ini filter:authtoken admin_tenant_name service
sudo openstack-config-set /etc/nova/api-paste.ini filter:authtoken admin_user nova
sudo openstack-config-set /etc/nova/api-paste.ini filter:authtoken admin_password servicepass
sudo openstack-config-set /etc/nova/nova.conf DEFAULT auth_strategy keystone
sudo openstack-config-set /etc/glance/glance-api.conf paste_deploy flavor keystone
sudo openstack-config-set /etc/glance/glance-api-paste.ini filter:authtoken admin_tenant_name service
sudo openstack-config-set /etc/glance/glance-api-paste.ini filter:authtoken admin_user glance
sudo openstack-config-set /etc/glance/glance-api-paste.ini filter:authtoken admin_password servicepass
sudo openstack-config-set /etc/glance/glance-registry.conf paste_deploy flavor keystone
sudo openstack-config-set /etc/glance/glance-registry-paste.ini filter:authtoken admin_tenant_name service
sudo openstack-config-set /etc/glance/glance-registry-paste.ini filter:authtoken admin_user glance
sudo openstack-config-set /etc/glance/glance-registry-paste.ini filter:authtoken admin_password servicepass
os_stop
sleep 1
os_start
sleep 1
echo IF ERRORS RETURNED HERE THE INSTALL DID NOT WORK PROPERLY
nova flavor-list
glance index
}
case $action in
"")
;;
start)
os_start
;;
stop)
os_stop
;;
erase)
os_erase
;;
install)
os_install
;;
*)
echo "The action \"$action\" is not supported."
;;
esac