54 lines
1.4 KiB
ReStructuredText
54 lines
1.4 KiB
ReStructuredText
|
Using Terraform
|
||
|
===============
|
||
|
|
||
|
This is a `Terraform <https://www.terraform.io/>`__ configuration that sets up DigitalOcean droplets.
|
||
|
|
||
|
Prerequisites
|
||
|
-------------
|
||
|
|
||
|
- Install `HashiCorp Terraform <https://www.terraform.io>`__ on a linux machine.
|
||
|
- Create a `DigitalOcean API token <https://cloud.digitalocean.com/settings/api/tokens>`__ with read and write capability.
|
||
|
- Create SSH keys
|
||
|
|
||
|
Build
|
||
|
-----
|
||
|
|
||
|
::
|
||
|
|
||
|
export DO_API_TOKEN="abcdef01234567890abcdef01234567890"
|
||
|
export TESTNET_NAME="remotenet"
|
||
|
export SSH_PUBLIC_FILE="$HOME/.ssh/id_rsa.pub"
|
||
|
export SSH_PRIVATE_FILE="$HOME/.ssh/id_rsa"
|
||
|
|
||
|
terraform init
|
||
|
terraform apply -var DO_API_TOKEN="$DO_API_TOKEN" -var SSH_PUBLIC_FILE="$SSH_PUBLIC_FILE" -var SSH_PRIVATE_FILE="$SSH_PRIVATE_FILE"
|
||
|
|
||
|
At the end you will get a list of IP addresses that belongs to your new droplets.
|
||
|
|
||
|
Destroy
|
||
|
-------
|
||
|
|
||
|
Run the below:
|
||
|
|
||
|
::
|
||
|
|
||
|
terraform destroy -var DO_API_TOKEN="$DO_API_TOKEN" -var SSH_PUBLIC_FILE="$SSH_PUBLIC_FILE" -var SSH_PRIVATE_FILE="$SSH_PRIVATE_FILE"
|
||
|
|
||
|
Good to know
|
||
|
------------
|
||
|
|
||
|
The DigitalOcean API was not very reliable for me. If you find that terraform fails to install a specific server (for example cluster[2]), check
|
||
|
the regions variable and remove data center names that you find unreliable. The variable is at cluster/variables.tf
|
||
|
|
||
|
Example:
|
||
|
|
||
|
::
|
||
|
|
||
|
variable "regions" {
|
||
|
description = "Regions to launch in"
|
||
|
type = "list"
|
||
|
default = ["TOR1", "LON1"]
|
||
|
}
|
||
|
|
||
|
|