94 lines
2.3 KiB
Bash
Executable File
94 lines
2.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
SCRIPT_PATH="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
|
|
function vm_state() {
|
|
vagrant status --machine-readable | grep ",state," | egrep -o '([a-z_]*)$'
|
|
}
|
|
|
|
function vm_is_running() {
|
|
STATE="$(vm_state)"
|
|
if [[ "$STATE" == "running" ]] ; then
|
|
return 0
|
|
else
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
function vm_execute() {
|
|
echo "Running $1" >&2
|
|
vagrant ssh --no-tty --command "$1"
|
|
}
|
|
|
|
function cleanup_shared {
|
|
rm -rf "$SCRIPT_PATH"/shared
|
|
}
|
|
|
|
unset FORCE_PROVISION
|
|
while getopts 'f' OPTION; do
|
|
case "$OPTION" in
|
|
f)
|
|
FORCE_PROVISION=0
|
|
;;
|
|
?)
|
|
echo "script usage: $(basename $0) [-f]" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
shift "$(($OPTIND -1))"
|
|
|
|
pushd "$SCRIPT_PATH"/vagrant
|
|
|
|
VM_NAME="$(grep "config.vm.box" Vagrantfile | tr -d "[:space:]" | sed "s/.*=//")"
|
|
|
|
if [[ -n $FORCE_PROVISION ]]; then
|
|
echo "Destroying build machine to force provisioning..." >&2
|
|
vagrant destroy -f
|
|
sleep 1
|
|
fi
|
|
|
|
# make sure the VM is up and running, or start it otherwise
|
|
if ! vm_is_running; then
|
|
echo "Starting build machine..." >&2
|
|
vagrant up
|
|
NEED_SHUTDOWN=true
|
|
sleep 1
|
|
fi
|
|
until vm_is_running; do
|
|
echo "Waiting for $VM_NAME..." >&2
|
|
sleep 1
|
|
done
|
|
echo "$VM_NAME is running!" >&2
|
|
|
|
# make sure we can connect via SSH
|
|
echo "Checking SSH availability..." >&2
|
|
until vm_execute 'sudo whoami' | grep -q "root" ; do
|
|
echo "Waiting for SSH availability..." >&2
|
|
sleep 1
|
|
done
|
|
echo "SSH available." >&2
|
|
|
|
# need to make a temporary local copy of the ../shared directory (and clean it up when we're done)
|
|
cleanup_shared
|
|
cp -r "$SCRIPT_PATH"/../shared "$SCRIPT_PATH"/
|
|
YML_IMAGE_VERSION="$(grep -P "^\s+image:\s*malcolm" "$SCRIPT_PATH"/../docker-compose-standalone.yml | awk '{print $2}' | cut -d':' -f2 | uniq -c | sort -nr | awk '{print $2}' | head -n 1)"
|
|
[[ -n $YML_IMAGE_VERSION ]] && echo "$YML_IMAGE_VERSION" > "$SCRIPT_PATH"/shared/version.txt
|
|
[[ ${#MAXMIND_GEOIP_DB_LICENSE_KEY} -gt 1 ]] && echo "$MAXMIND_GEOIP_DB_LICENSE_KEY" > "$SCRIPT_PATH"/shared/maxmind_license.txt
|
|
trap cleanup_shared EXIT
|
|
|
|
vm_execute "sudo bash -c \"whoami && cd /sensor-build && pwd && ./build.sh\""
|
|
|
|
if [[ -n $NEED_SHUTDOWN ]]; then
|
|
echo "Shutting down $VM_NAME..." >&2
|
|
vagrant halt
|
|
sleep 1
|
|
while vm_is_running; do
|
|
echo "Waiting for $VM_NAME to shutdown..." >&2
|
|
sleep 1
|
|
done
|
|
echo "$VM_NAME is stopped." >&2
|
|
fi
|
|
|
|
popd
|