diff --git a/scripts/cord-bootstrap.sh b/scripts/cord-bootstrap.sh
new file mode 100644
index 0000000..760c304
--- /dev/null
+++ b/scripts/cord-bootstrap.sh
@@ -0,0 +1,128 @@
+#!/usr/bin/env bash
+# cord-bootstrap.sh
+# Bootstraps environment and downloads CORD repos
+
+set -e
+set -x
+
+CORDDIR=~/cord
+
+function bootstrap() {
+
+  if [ ! -x "/usr/bin/ansible" ]
+  then
+    echo "Installing Ansible..."
+    sudo apt-get update
+    sudo apt-get install -y software-properties-common
+    sudo apt-add-repository -y ppa:ansible/ansible
+    sudo apt-get update
+    sudo apt-get install -y ansible python-netaddr
+  fi
+
+  if [ ! -x "/usr/local/bin/repo" ]
+  then
+    echo "Installing repo..."
+    REPO_SHA256SUM="e147f0392686c40cfd7d5e6f332c6ee74c4eab4d24e2694b3b0a0c037bf51dc5"
+    curl -o /tmp/repo https://storage.googleapis.com/git-repo-downloads/repo
+    echo "$REPO_SHA256SUM  /tmp/repo" | sha256sum -c -
+    sudo mv /tmp/repo /usr/local/bin/repo
+    sudo chmod a+x /usr/local/bin/repo
+  fi
+
+  if [ ! -d "$CORDDIR" ]
+  then
+    echo "Downloading CORD/XOS..."
+
+    if [ ! -e "~/.gitconfig" ]
+    then
+      echo "No ~/.gitconfig, setting testing defaults"
+      git config --global user.name 'Test User'
+      git config --global user.email 'test@null.com'
+      git config --global color.ui false
+    fi
+
+    mkdir $CORDDIR && cd $CORDDIR
+    repo init -u https://gerrit.opencord.org/manifest -b master -g build,onos,orchestration
+    repo sync
+
+    # check out gerrit branches using repo
+    for gerrit_branch in ${GERRIT_BRANCHES[@]}; do
+      echo "checking out opencord gerrit branch: $gerrit_branch"
+      repo download ${gerrit_branch/:/ }
+    done
+  fi
+
+  if [ ! -x "/usr/bin/docker" ]
+  then
+    echo "Installing Devel Tools..."
+    cd ${CORDDIR}/build/platform-install
+    ansible-playbook -i inventory/localhost devel-tools-playbook.yml
+  fi
+
+  set +x
+  echo "*******************************************************************************"
+  echo "*  IMPORTANT: Logout and login so your account is added to the docker group!  *"
+  echo "*   Then 'cd ${CORDDIR}/build/platform-install' and start your CORD profile.  *"
+  echo "*        Need help?  Check out the wiki at: https://wiki.opencord.org/        *"
+  echo "*******************************************************************************"
+
+}
+
+function cleanup() {
+  if [ ! -x "/usr/bin/ansible" ]
+  then
+    echo "Ansible not installed, can't cleanup. Is this the initial run?"
+  else
+    echo "Cleaning up - destroying docker containers..."
+    cd ${CORDDIR}/build/platform-install
+    ansible-playbook -i inventory/localhost teardown-playbook.yaml
+  fi
+}
+
+function cord_profile() {
+  echo "Running a profile is broken due to docker group membership issue"
+}
+
+# options that may be set by getopt
+GERRIT_BRANCHES=
+CLEANUP=0
+CORD_PROFILE=""
+
+while getopts "b:hcp:" opt; do
+  case ${opt} in
+    b ) GERRIT_BRANCHES+=("$OPTARG")
+      ;;
+    c ) CLEANUP=1
+      ;;
+    h ) echo "Usage:"
+      echo "    $0                prep system to run a CORD profile"
+      echo "    $0 -b <project:changeset/revision>  checkout a changesets from gerrit. Can"
+      echo "                      be used multiple times."
+      echo "    $0 -c             cleanup from previous test"
+      echo "    $0 -p <profile>   prep then start running the specified profile"
+      echo "    $0 -h             display this help message"
+      exit 0
+      ;;
+    p ) CORD_PROFILE=$OPTARG
+      ;;
+    \? ) echo "Invalid option: -$OPTARG"
+      exit 1
+      ;;
+  esac
+done
+
+# "main" function
+if [[ $CLEANUP -eq 1 ]]
+then
+  cleanup
+fi
+
+bootstrap
+
+if [[ $CORD_PROFILE -ne "" ]]
+then
+  set -x
+  cord_profile
+fi
+
+exit 0
