#!/usr/bin/env bash set -eo pipefail KEYNAME="$1" indent() { sed "s/^/ /"; } echo "-----> Booting EC2 instance..." start=$(ec2-run-instances -k $1 ami-f3d1bb9a 2>&1 ) if [[ $? -gt 0 ]]; then echo "$start" | indent exit 3 fi INSTANCE=$(echo "$start" | awk '/^INSTANCE/ {print $2}') terminate() { echo "-----> Terminating $INSTANCE..." ec2-terminate-instances $INSTANCE &>/dev/null && echo " Shutting down" } [[ $NOCLEANUP ]] || trap "terminate" EXIT sleep 30 status="" while [[ "$status" != "running" ]]; do info=$(ec2-describe-instances 2>/dev/null | grep $INSTANCE) status=$(echo "$info" | cut -f 6 | grep run) echo " Waiting..." sleep 5 if [[ $status == "running" ]]; then echo "-----> $INSTANCE has succesfully booted!" break fi done PUBLIC_IP=$(echo "$info" | awk '{print $14}') echo "-----> Waiting for SSH at $PUBLIC_IP..." while [[ ! $(echo | nc $PUBLIC_IP 22) ]]; do sleep 5 echo " Waiting..." done set -e echo "-----> Connecting and running bootstrap script..." ssh -o "StrictHostKeyChecking=no" ubuntu@$PUBLIC_IP "HOSTNAME=\$PUBLIC_IP sudo bash" < ../bootstrap.sh 2>&1 | indent echo "-----> Installing SSH public keys..." PUBLIC_KEY=$(< ~/.ssh/id_rsa.pub) echo $PUBLIC_KEY | ssh -o "StrictHostKeyChecking=no" ubuntu@$PUBLIC_IP "sudo sshcommand acl-add dokku test" > /dev/null for app_path in apps/*; do app=$(basename $app_path) echo "-----> Running test deploy of $app..." ./test_deploy $app_path $PUBLIC_IP done