Last active
June 3, 2020 09:13
-
-
Save nateberkopec/5e1d81c8b5f4865c19e18ecae73c77ae to your computer and use it in GitHub Desktop.
tf-dev-script.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Assumes you have a DIGITALOCEAN_TOKEN env var pre-set | |
# Assumes you have terraform and mutagen installed | |
# Assumes DO has an SSH key uploaded | |
DO_REGION="sgp1" # Set to DO region: https://www.digitalocean.com/docs/platform/availability-matrix/ | |
SSH_KEY_FINGERPRINT="your-key-fingerprint" # You can find this in your control panel | |
if [ -z $DIGITALOCEAN_TOKEN ]; then | |
exit 1 | |
fi | |
cat <<EOF > terraform.tf | |
provider "digitalocean" {} | |
resource "digitalocean_droplet" "web" { | |
image = "ubuntu-20-04-x64" | |
name = "dev" | |
region = "$DO_REGION" | |
size = "s-1vcpu-1gb" | |
ssh_keys = ["$SSH_KEY_FINGERPRINT"] | |
} | |
output "ip_addr" { | |
value = digitalocean_droplet.web.ipv4_address | |
} | |
EOF | |
terraform init | |
terraform apply -auto-approve | |
export REMOTE_IP_ADDR=`terraform output | ruby -e "puts STDIN.read.split.last"` | |
sleep 5 # give DO enough time to come up | |
ssh -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null root@$REMOTE_IP_ADDR <<'ENDSSH' | |
apt install --yes make ruby ruby-dev build-essential | |
gem install bundler | |
bundle config set path 'vendor/bundle' | |
ENDSSH | |
mutagen sync create --sync-mode=one-way-safe --name=devproj-code . root@$REMOTE_IP_ADDR:~/ | |
mutagen sync flush devproj-code | |
ssh -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null root@$REMOTE_IP_ADDR "bundle install" | |
echo "Dev box ready: ssh root@$REMOTE_IP_ADDR" | |
# next line only works once the remote service is actually up | |
# mutagen forward create --name=devproj tcp:localhost:9292 root@$REMOTE_IP_ADDR:tcp:localhost:9292 | |
# TODO: up/down/console/forward/run commands | |
# TODO: Vultr + other cloud provider support | |
# Down with: | |
# mutagen sync terminate -a && terraform destroy -auto-approve |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment