training-guides/labs/lib/osbash/virtualbox.install_nodes
Roger Luethi 86e1462b62 labs: merge node-specific config/scripts.* files
Currently, we have a file directing the build for each node. However,
rebuilding just one node hardly ever makes sense, so we might as well
remove the extra files and have the user just rebuild the cluster.

With this patch, every distribution will have a basedisk scripts
configuration file (as before) and one scripts configuration file for
building the cluster (or several for building additional, different
clusters).

Change-Id: I7f50d49d7337b790416a2a76c86be510990859fd
2015-03-01 19:04:39 +01:00

87 lines
2.7 KiB
Bash

# This bash library contains the main function that creates a node VM.
# Configure VirtualBox network interfaces
function _vbox_configure_ifs {
local vm_name=$1
# Iterate over all NET_IF_? variables
local net_ifs=( "${!NET_IF_@}" )
local net_if=""
for net_if in "${net_ifs[@]}"; do
local if_num=${net_if##*_}
if [ "${!net_if}" = "nat" ]; then
echo "interface $if_num: NAT"
vm_nic_nat "$vm_name" "$if_num"
else
# Host-only network: net_if is net name (e.g. API_NET)
# Use corresponding VirtualBox interface (e.g. API_NET_IF)
local host_if="${!net_if}_IF"
echo "interface $if_num: host-only ${!host_if}"
vm_nic_hostonly "$vm_name" "$if_num" "${!host_if}"
fi
done
}
# Boot node VM; wait until autostart files are processed and VM is shut down
function _vbox_boot_with_autostart {
local vm_name=$1
vbox_boot "$vm_name"
# Wait for ssh connection and execute scripts in autostart directory
# (for wbatch, osbashauto does the processing instead)
${WBATCH:+:} ssh_process_autostart "$vm_name" &
wait_for_autofiles
echo >&2 "VM \"$vm_name\": autostart files executed"
}
# Create a new node VM and run basic configuration scripts
function vm_init_node {
# XXX Run this function in sub-shell to protect our caller's environment
# (which might be _our_ enviroment if we get called again)
(
source "$CONFIG_DIR/config.$vm_name"
vm_name=$1
vm_create "$vm_name"
# Set VM_MEM in config/config.NODE_NAME to override
vm_mem "$vm_name" "${VM_MEM:-512}"
# Set VM_CPUS in config/config.NODE_NAME to override
vm_cpus "$vm_name" "${VM_CPUS:-1}"
_vbox_configure_ifs "$vm_name"
# Port forwarding
if [ -n "${VM_SSH_PORT:-}" ]; then
vm_port "$vm_name" ssh "$VM_SSH_PORT" 22
fi
if [ -n "${VM_WWW_PORT:-}" ]; then
vm_port "$vm_name" http "$VM_WWW_PORT" 80
fi
vm_add_share "$vm_name" "$SHARE_DIR" "$SHARE_NAME"
vm_attach_disk_multi "$vm_name" "$BASE_DISK"
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Rename to pass the node name to the script
autostart_and_rename osbash init_xxx_node.sh "init_${vm_name}_node.sh"
)
}
function vm_build_nodes {
CONFIG_NAME=$(get_distro_name "$DISTRO")_$1
echo "Configuration file: $CONFIG_NAME"
${WBATCH:-:} wbatch_begin_node "$CONFIG_NAME"
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
autostart_reset
autostart_from_config "scripts.$CONFIG_NAME"
#- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
${WBATCH:-:} wbatch_end_file
}
# vim: set ai ts=4 sw=4 et ft=sh: