training-guides/labs/osbash.sh
Roger Luethi 49541b99cb Adjust permissions
This changeset
- removes executable bits from README.md
- adds executable bits to shell scripts

These changes are largely symbolic, except for osbash.sh which users are
expected to run without having to change permissions or passing it as an
argument to bash.

Partial-Bug: 1312764
Implements: blueprint openstack-training-labs
Change-Id: I91cce85862171a360c31e1e7628a708dfefd70f1
2014-06-18 13:26:10 +02:00

170 lines
4.5 KiB
Bash
Executable File

#!/usr/bin/env bash
set -o errexit
set -o nounset
# Kill entire process group
trap 'kill -- -$$' SIGINT
TOP_DIR=$(cd $(dirname "$0") && pwd)
: ${DISTRO:=ubuntu-12.04.4-server-amd64}
source "$TOP_DIR/config/localrc"
source "$TOP_DIR/config/paths"
source "$CONFIG_DIR/openstack"
source "$CONFIG_DIR/deploy.osbash"
source "$CONFIG_DIR/provider.virtualbox"
source "$OSBASH_LIB_DIR/lib.$DISTRO"
source "$OSBASH_LIB_DIR/functions.host"
source "$OSBASH_LIB_DIR/virtualbox.functions"
source "$OSBASH_LIB_DIR/virtualbox.install_base"
function usage {
echo "Usage: $0 [-h] [-r] [-w|-f] [-e] [-n] {basedisk|cluster}"
echo ""
echo "-h Help"
echo "-n Print configuration status and exit"
echo "-w Create Windows batch files, too"
echo "-f Only create Windows batch files (fast)"
echo "-e Export OVA file of VM cluster"
echo ""
echo "basedisk Create configured basedisk"
echo "cluster Create configured VM cluster (and basedisk if necessary)"
exit
}
function print_config {
if [ "$CMD" = "basedisk" ]; then
echo "Target is base disk: $BASE_DISK"
else
echo "Base disk: $BASE_DISK"
echo "Exporting VM cluster: ${EXPORT_OVA:-no}"
fi
echo -n "Creating Windows batch scripts: "
${WBATCH:-:} echo "yes"
${WBATCH:+:} echo "no"
echo -n "Creating $CMD on this machine: "
${OSBASH:-:} echo "yes"
${OSBASH:+:} echo "no"
echo "VM access method: $VM_ACCESS"
}
while getopts efhnw opt; do
case $opt in
e)
EXPORT_OVA=$IMG_DIR/oslabs-$DISTRO.ova
;;
f)
source "$LIB_DIR/wbatch/batch_for_windows"
wbatch_reset
unset OSBASH
;;
h)
usage
;;
n)
INFO_ONLY=1
;;
w)
source "$LIB_DIR/wbatch/batch_for_windows"
;;
?)
echo "Error: unhandled option $opt"
;;
esac
done
# Remove processed options from arguments
shift $(( OPTIND - 1 ));
# Make sure we have exactly one argument, either basedisk or cluster
if [ $# -eq 1 ]; then
CMD=$1
if ! [[ $CMD =~ (basedisk|cluster) ]]; then
usage
fi
else
usage
fi
# Install over ssh by default
: ${VM_ACCESS:=ssh}
# Get base disk path if none is configured
: ${BASE_DISK:=$(get_base_disk_path)}
print_config
if [ "${INFO_ONLY:-0}" -eq 1 ]; then
exit
fi
echo >&2 "$(date) osbash starting"
clean_dir "$LOG_DIR"
function cleanup_base_disk {
# Remove users of base disk
echo >&2 "Unregistering and removing all disks attached to base disk path"
disk_delete_child_vms "$BASE_DISK"
if [ -f "$BASE_DISK" ]; then
echo >&2 "Found existing base disk: $BASE_DISK"
if ! yes_or_no "Re-use this base disk?"; then
if disk_registered "$BASE_DISK"; then
echo >&2 "Unregistering old base disk"
disk_unregister "$BASE_DISK"
fi
echo >&2 "Removing old base disk"
rm -f "$BASE_DISK"
fi
fi
}
${OSBASH:-:} cleanup_base_disk
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
if [ ! -f "$BASE_DISK" ]; then
vm_install_base "$BASE_DISK"
else
# Leave base disk alone, but call the function if wbatch is active
OSBASH= ${WBATCH:-:} vm_install_base "$BASE_DISK"
fi
#-------------------------------------------------------------------------------
if [ "$CMD" = basedisk ]; then
exit
fi
${WBATCH:-:} wbatch_create_hostnet
MGMT_NET_IF=$(create_network "$MGMT_NET")
DATA_NET_IF=$(create_network "$DATA_NET")
API_NET_IF=$(create_network "$API_NET")
#-------------------------------------------------------------------------------
source "$OSBASH_LIB_DIR/virtualbox.install_node"
vm_build_node "controller"
vm_build_node "network"
vm_build_node "compute"
#-------------------------------------------------------------------------------
function export_appliance {
if [ -n "${EXPORT_OVA:-}" ]; then
echo "Removing shared folders for export"
vm_rm_share "controller" "$SHARE_NAME"
vm_rm_share "network" "$SHARE_NAME"
vm_rm_share "compute" "$SHARE_NAME"
rm -f "$EXPORT_OVA"
mkdir -pv "$IMG_DIR"
$VBM export controller network compute --output "$EXPORT_OVA"
echo >&2 "Appliance exported"
fi
}
export_appliance
#-------------------------------------------------------------------------------
echo >&2 "$(date) osbash finished successfully"