191 lines
6.6 KiB
Bash
Executable File
191 lines
6.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
while test $# -gt 0; do
|
|
case "$1" in
|
|
-h|--help)
|
|
echo "Single VM Cue Installer"
|
|
echo " "
|
|
echo "--h show brief help"
|
|
echo "Required parameters:"
|
|
echo "--image IMAGE_ID specify Nova image id to use"
|
|
echo "--flavor FLAVOR_ID specify a Nova flavor id to use"
|
|
echo "--cue-management-nic CUE_MANAGEMENT_NIC specify management network interface for cue"
|
|
echo "--cue-image CUE_IMAGE_ID specify a Nova image id for Cue cluster VMs"
|
|
echo "Optional parameters:"
|
|
echo "--security-groups SECURITY_GROUPS specify security group"
|
|
echo "--key-name KEY_NAME specify key-name to forward"
|
|
echo "--nic NIC a network to attach Cue VM on"
|
|
echo "--mysql-root-password MYSQL_ROOT_PASSWORD specify root password for MySql Server"
|
|
echo "--mysql-cueapi-password MYSQL_CUEAPI_PASSWORD specify cue api user password for MySql Server"
|
|
echo "--mysql-cueworker-password MYSQL_CUEWORKER_PASSWORD specify cue worker user password for MySql Server"
|
|
exit 0
|
|
;;
|
|
--image)
|
|
shift
|
|
if test $# -gt 0; then
|
|
export IMAGE_ID=$1
|
|
fi
|
|
shift
|
|
;;
|
|
--flavor)
|
|
shift
|
|
if test $# -gt 0; then
|
|
export FLAVOR_ID=$1
|
|
fi
|
|
shift
|
|
;;
|
|
--cue-management-nic)
|
|
shift
|
|
if test $# -gt 0; then
|
|
export CUE_MANAGEMENT_NIC=$1
|
|
fi
|
|
shift
|
|
;;
|
|
--cue-image)
|
|
shift
|
|
if test $# -gt 0; then
|
|
export CUE_IMAGE_ID=$1
|
|
fi
|
|
shift
|
|
;;
|
|
--security-groups)
|
|
shift
|
|
if test $# -gt 0; then
|
|
export SECURITY_GROUPS=$1
|
|
fi
|
|
shift
|
|
;;
|
|
--cue-security-group)
|
|
shift
|
|
if test $# -gt 0; then
|
|
export CUE_SECURITY_GROUP=$1
|
|
fi
|
|
shift
|
|
;;
|
|
--key-name)
|
|
shift
|
|
if test $# -gt 0; then
|
|
export KEY_NAME=$1
|
|
fi
|
|
shift
|
|
;;
|
|
--os-key-name)
|
|
shift
|
|
if test $# -gt 0; then
|
|
export OS_KEY_NAME=$1
|
|
fi
|
|
shift
|
|
;;
|
|
--nic)
|
|
shift
|
|
if test $# -gt 0; then
|
|
export NIC=$1
|
|
fi
|
|
shift
|
|
;;
|
|
--mysql-root-password)
|
|
shift
|
|
if test $# -gt 0; then
|
|
export MYSQL_ROOT_PASSWORD=$1
|
|
fi
|
|
shift
|
|
;;
|
|
--mysql-cueapi-password)
|
|
shift
|
|
if test $# -gt 0; then
|
|
export MYSQL_CUEAPI_PASSWORD=$1
|
|
fi
|
|
shift
|
|
;;
|
|
--mysql-cueworker-password)
|
|
shift
|
|
if test $# -gt 0; then
|
|
export MYSQL_CUEWORKER_PASSWORD=$1
|
|
fi
|
|
shift
|
|
;;
|
|
--floating-ip)
|
|
shift
|
|
if test $# -gt 0; then
|
|
export FLOATING_IP=$1
|
|
fi
|
|
shift
|
|
;;
|
|
*)
|
|
break
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# verify required and optional input arguments
|
|
if [ -z ${IMAGE_ID} ] || [ -z ${FLAVOR_ID} ] || [ -z ${CUE_IMAGE_ID} ] || [ -z ${CUE_MANAGEMENT_NIC} ]; then
|
|
echo "IMAGE_ID, FLAVOR_ID, CUE_IMAGE_ID AND CUE_MANAGEMENT_NIC must be provided"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z ${MYSQL_ROOT_PASSWORD} ]; then
|
|
MYSQL_ROOT_PASSWORD="password"
|
|
fi
|
|
if [ -z ${MYSQL_CUEAPI_PASSWORD} ]; then
|
|
MYSQL_CUEAPI_PASSWORD="cuepassword"
|
|
fi
|
|
if [ -z ${MYSQL_CUEWORKER_PASSWORD} ]; then
|
|
MYSQL_CUEWORKER_PASSWORD="workerpassword"
|
|
fi
|
|
|
|
# set parameters required by mo to fill-in template file
|
|
export MYSQL_ROOT_PASSWORD
|
|
export MYSQL_CUEAPI_PASSWORD
|
|
export MYSQL_CUEWORKER_PASSWORD
|
|
|
|
# set working directory to script location
|
|
PROJECT_ROOT=$( cd $(dirname "$0") && pwd)
|
|
pushd ${PROJECT_ROOT}
|
|
|
|
# Configure user data script from template file
|
|
USERDATA_FILE=$(mktemp -t cue_install.XXXX)
|
|
chmod +x mo
|
|
cat user_data_template | ./mo > ${USERDATA_FILE}
|
|
|
|
# unset exported parameters from above
|
|
unset MYSQL_ROOT_PASSWORD
|
|
unset MYSQL_CUEAPI_PASSWORD
|
|
unset MYSQL_CUEWORKER_PASSWORD
|
|
|
|
# Compose Nova boot command string
|
|
NOVA_BOOT_BASE="nova boot"
|
|
VM_NAME="cue_host"
|
|
|
|
NOVA_BOOT_COMMAND="${NOVA_BOOT_BASE} --flavor ${FLAVOR_ID} --image ${IMAGE_ID}"
|
|
if [ ! -z ${SECURITY_GROUPS} ]; then
|
|
NOVA_BOOT_COMMAND="${NOVA_BOOT_COMMAND} --security-groups ${SECURITY_GROUPS}"
|
|
fi
|
|
|
|
if [ ! -z ${KEY_NAME} ]; then
|
|
NOVA_BOOT_COMMAND="${NOVA_BOOT_COMMAND} --key-name ${KEY_NAME}"
|
|
fi
|
|
|
|
OS_KEYNAME=${OS_KEYNAME:-$KEY_NAME}
|
|
|
|
if [ ! -z ${NIC} ]; then
|
|
NOVA_BOOT_COMMAND="${NOVA_BOOT_COMMAND} --nic net-id=${NIC}"
|
|
fi
|
|
|
|
if [ ! -z ${CUE_MANAGEMENT_NIC} ]; then
|
|
NOVA_BOOT_COMMAND="${NOVA_BOOT_COMMAND} --nic net-id=${CUE_MANAGEMENT_NIC}"
|
|
fi
|
|
|
|
NOVA_BOOT_COMMAND="${NOVA_BOOT_COMMAND} --user-data ${USERDATA_FILE} ${VM_NAME}"
|
|
eval ${NOVA_BOOT_COMMAND}
|
|
|
|
if [ ! -z ${FLOATING_IP} ]; then
|
|
echo "Waiting for cue_host VM to go ACTIVE..."
|
|
while [ -z "$(nova show $VM_NAME 2>/dev/null | egrep 'ACTIVE|ERROR')" ]; do
|
|
sleep 1
|
|
done
|
|
nova floating-ip-associate $VM_NAME ${FLOATING_IP}
|
|
fi
|
|
|
|
rm ${USERDATA_FILE}
|
|
popd
|