Files
training-guides/labs/scripts/setup_cinder_volumes.sh
Roger Luethi b1cdd3679a labs: set errexit and no nounset for client scripts
Use bash options to have client scripts exit with an error if any
command returns an error (errexit) or if an unset variable is used
(nounset).

Fix those scripts that would otherwise fail due to this change.

Change-Id: I23336bcb5227e884eaf6dd6e9eb5cb0fc24977cc
2014-09-29 08:15:28 +02:00

105 lines
3.2 KiB
Bash
Executable File

#!/usr/bin/env bash
set -o errexit -o nounset
TOP_DIR=$(cd $(dirname "$0")/.. && pwd)
source "$TOP_DIR/config/paths"
source "$CONFIG_DIR/credentials"
source "$CONFIG_DIR/openstack"
source "$LIB_DIR/functions.guest"
source "$CONFIG_DIR/admin-openstackrc.sh"
exec_logfile
indicate_current_auto
#------------------------------------------------------------------------------
# Set up Block Storage service (cinder).
#------------------------------------------------------------------------------
echo "Installing cinder."
sudo apt-get install -y lvm2
echo "Configuring LVM physical and logical volumes."
cinder_loop_path=/var/lib/cinder-volumes
cinder_loop_dev=/dev/loop2
sudo dd if=/dev/zero of=$cinder_loop_path bs=1 count=0 seek=4G
sudo losetup $cinder_loop_dev $cinder_loop_path
sudo pvcreate $cinder_loop_dev
sudo vgcreate cinder-volumes $cinder_loop_dev
# Tell upstart to run losetup again when the system is rebooted
cat << UPSTART | sudo tee "/etc/init/cinder-losetup.conf"
description "Set up loop device for cinder."
start on mounted MOUNTPOINT=/
task
exec /sbin/losetup $cinder_loop_dev $cinder_loop_path
UPSTART
sudo apt-get install -y cinder-volume
function get_database_url {
local db_user=$(service_to_db_user cinder)
local db_password=$(service_to_db_password cinder)
local database_host=controller-mgmt
echo "mysql://$db_user:$db_password@$database_host/cinder"
}
database_url=$(get_database_url)
echo "Configuring cinder."
echo "Setting database connection: $database_url."
iniset_sudo /etc/cinder/cinder.conf database connection "$database_url"
cinder_admin_user=$(service_to_user_name cinder)
cinder_admin_password=$(service_to_user_password cinder)
echo "Configuring cinder to use keystone for authentication."
conf=/etc/cinder/cinder.conf
echo "Configuring $conf."
# Configure [keystone_authtoken] section.
iniset_sudo $conf keystone_authtoken auth_uri "http://controller-mgmt:5000"
iniset_sudo $conf keystone_authtoken auth_host controller-mgmt
iniset_sudo $conf keystone_authtoken auth_port 35357
iniset_sudo $conf keystone_authtoken auth_protocol http
iniset_sudo $conf keystone_authtoken admin_tenant_name "$SERVICE_TENANT_NAME"
iniset_sudo $conf keystone_authtoken admin_user "$cinder_admin_user"
iniset_sudo $conf keystone_authtoken admin_password "$cinder_admin_password"
# Configure [DEFAULT] section.
iniset_sudo $conf DEFAULT rpc_backend cinder.openstack.common.rpc.impl_kombu
iniset_sudo $conf DEFAULT rabbit_host controller-mgmt
iniset_sudo $conf DEFAULT rabbit_port 5672
iniset_sudo $conf DEFAULT rabbit_userid guest
iniset_sudo $conf DEFAULT rabbit_password "$RABBIT_PASSWORD"
iniset_sudo $conf DEFAULT glance_host controller-mgmt
echo "Restarting cinder service."
sudo service cinder-volume restart
sudo service tgt restart
#------------------------------------------------------------------------------
# Verify the Block Storage installation
#------------------------------------------------------------------------------
echo "Waiting for cinder to start."
until cinder list >/dev/null 2>&1; do
sleep 1
done
echo "cinder create --display-name labsVolume 1"
cinder create --display-name labsVolume 1
echo "cinder list"
cinder list
echo "cinder delete labsVolume"
cinder delete labsVolume
echo "cinder list"
cinder list