Skip to content

Instantly share code, notes, and snippets.

@brianonn
Created September 13, 2020 23:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save brianonn/05c5c2da7a646af9825d5bc8f97828fd to your computer and use it in GitHub Desktop.
Save brianonn/05c5c2da7a646af9825d5bc8f97828fd to your computer and use it in GitHub Desktop.
run a command on multiple OS'es via Vagrant on Virtualbox
#!/bin/bash
CMD="${1:-ls -l /}"
BOXES="${2:-centos/8 generic/ubuntu1804}"
PROVIDER="${3:-virtualbox}"
LOG="$PWD/commands.log"
: > "$LOG"
TMPDIR="/tmp/$RANDOM.$$"
mkdir -p "$TMPDIR"
trap 'rm -rf "$TMPDIR"; exit 1;' EXIT INT HUP TERM
BOXLIST="$(vagrant box list | grep -F "($PROVIDER" )"
for box in $BOXES; do
if ! grep -q "$box" <<<"${BOXLIST}" ; then
vagrant box add "$box" --provider "$PROVIDER"
fi
if test $? -eq 0; then
{
echo -e "\n\n=== $box ===\n"
echo -e "DATE: $(date)"
echo -e "CMD: $CMD\n"
} >> "$LOG"
(
cd "$TMPDIR" || { echo "Hmm...Can't change directory to $TMPDIR"; exit 1; }
vagrant init -fm "$box"
vagrant up
vagrant ssh --command "$CMD" | tee -a "$LOG"
vagrant destroy -f
)
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment