added Malcolm
This commit is contained in:
		
							
								
								
									
										93
									
								
								Vagrant/resources/malcolm/sensor-iso/build_via_vagrant.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										93
									
								
								Vagrant/resources/malcolm/sensor-iso/build_via_vagrant.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,93 @@ | ||||
| #!/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 | ||||
		Reference in New Issue
	
	Block a user