mirror of
https://github.com/weaveworks/scope.git
synced 2026-02-25 23:34:01 +00:00
Digital Ocean
Introduction
This project allows you to get hold of some machine on Digital Ocean.
You can then use these machines as is or run various Ansible playbooks from ../config_management to set up Weave Net, Kubernetes, etc.
Setup
-
Log in cloud.digitalocean.com with your account.
-
Go to
Settings>Security>SSH keys>Add SSH Key. Enter your SSH public key and the name for it, and clickAdd SSH Key. Set the path to your private key as an environment variable:
export DIGITALOCEAN_SSH_KEY_NAME=<your Digital Ocean SSH key name>
export TF_VAR_do_private_key_path="$HOME/.ssh/id_rsa"
- Go to
API>Tokens>Personal access tokens>Generate New TokenEnter your token name and clickGenerate Tokento get your 64-characters-long API token. Set these as environment variables:
export DIGITALOCEAN_TOKEN_NAME="<your Digital Ocean API token name>"
export DIGITALOCEAN_TOKEN=<your Digital Ocean API token>
- Run the following command to get the Digital Ocean ID for your SSH public key (e.g.
1234567) and set it as an environment variable:
$ export TF_VAR_do_public_key_id=$(curl -s -X GET -H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" "https://api.digitalocean.com/v2/account/keys" \
| jq -c --arg key_name "$DIGITALOCEAN_SSH_KEY_NAME" '.ssh_keys | .[] | select(.name==$key_name) | .id')
or pass it as a Terraform variable:
$ terraform <command> \
-var 'do_private_key_path=<path to your SSH private key>' \
-var 'do_public_key_id=<ID of your SSH public key>'
Bash aliases
You can set the above variables temporarily in your current shell, permanently in your ~/.bashrc file, or define aliases to activate/deactivate them at will with one single command by adding the below to your ~/.bashrc file:
function _do_on() {
export DIGITALOCEAN_TOKEN_NAME="<your_token_name>" # Replace with appropriate value.
export DIGITALOCEAN_TOKEN=<your_token> # Replace with appropriate value.
export DIGITALOCEAN_SSH_KEY_NAME="<your_ssh_key_name>" # Replace with appropriate value.
export TF_VAR_do_private_key_path="$HOME/.ssh/id_rsa" # Replace with appropriate value.
export TF_VAR_do_public_key_path="$HOME/.ssh/id_rsa.pub" # Replace with appropriate value.
export TF_VAR_do_public_key_id=<your_ssh_key_id> # Replace with appropriate value.
}
alias _do_on='_do_on'
function _do_off() {
unset DIGITALOCEAN_TOKEN_NAME
unset DIGITALOCEAN_TOKEN
unset DIGITALOCEAN_SSH_KEY_NAME
unset TF_VAR_do_private_key_path
unset TF_VAR_do_public_key_path
unset TF_VAR_do_public_key_id
}
alias _do_off='_do_off'
N.B.:
- sourcing
../setup.shdefines aliases calleddo_onanddo_off, similarly to the above (however, notice no_in front of the name, as opposed to the ones above); ../setup.sh'sdo_onalias needs theSECRET_KEYenvironment variable to be set in order to decrypt sensitive information.
Usage
- Create the machine:
terraform apply - Show the machine's status:
terraform show - Stop and destroy the machine:
terraform destroy - SSH into the newly-created machine:
$ ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no `terraform output username`@`terraform output public_ips`
or
source ../setup.sh
tf_ssh 1 # Or the nth machine, if multiple VMs are provisioned.