mirror of
https://github.com/status-im/consul.git
synced 2025-01-09 13:26:07 +00:00
Merge pull request #2326 from greenbrian/master
Add Terraform config for Digital Ocean
This commit is contained in:
commit
2dcbfa1643
28
terraform/digitalocean/README.md
Normal file
28
terraform/digitalocean/README.md
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
|
||||||
|
# Requirements
|
||||||
|
Terraform installed
|
||||||
|
Digital Ocean account with API key
|
||||||
|
SSH key uploaded to Digital Ocean
|
||||||
|
|
||||||
|
### Variables
|
||||||
|
Populate terraform.tfvars as follows (or execute with arguments as shown in Usage)
|
||||||
|
|
||||||
|
key_path = "~/.ssh/id_rsa"
|
||||||
|
do_token = "ASDFQWERTYDERP"
|
||||||
|
num_instances = "3"
|
||||||
|
ssh_key_ID = "my_ssh_keyID_in_digital_ocean"
|
||||||
|
|
||||||
|
|
||||||
|
# Usage
|
||||||
|
|
||||||
|
terraform plan \
|
||||||
|
-var 'key_path=~/.ssh/id_rsa' \
|
||||||
|
-var 'do_token=ASDFQWERTYDERP' \
|
||||||
|
-var 'num_instances=3' \
|
||||||
|
- var 'ssh_key_ID=86:75:30:99:88:88:AA:FF:DD'
|
||||||
|
|
||||||
|
terraform apply \
|
||||||
|
-var 'key_path=~/.ssh/id_rsa' \
|
||||||
|
-var 'do_token=ASDFQWERTYDERP' \
|
||||||
|
-var 'num_instances=3' \
|
||||||
|
- var 'ssh_key_ID=86:75:30:99:88:88:AA:FF:DD'
|
41
terraform/digitalocean/consul.tf
Normal file
41
terraform/digitalocean/consul.tf
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
provider "digitalocean" {
|
||||||
|
token = "${var.do_token}"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "digitalocean_droplet" "consul" {
|
||||||
|
ssh_keys = ["${var.ssh_key_ID}"]
|
||||||
|
image = "${var.ubuntu}"
|
||||||
|
region = "${var.do_tor1}"
|
||||||
|
size = "2gb"
|
||||||
|
private_networking = true
|
||||||
|
name = "consul${count.index + 1}"
|
||||||
|
count = "${var.num_instances}"
|
||||||
|
|
||||||
|
connection {
|
||||||
|
type = "ssh"
|
||||||
|
private_key = "${file("${var.key_path}")}"
|
||||||
|
user = "root"
|
||||||
|
timeout = "2m"
|
||||||
|
}
|
||||||
|
|
||||||
|
provisioner "file" {
|
||||||
|
source = "${path.module}/../shared/scripts/debian_upstart.conf"
|
||||||
|
destination = "/tmp/upstart.conf"
|
||||||
|
}
|
||||||
|
|
||||||
|
provisioner "remote-exec" {
|
||||||
|
inline = [
|
||||||
|
"echo ${var.num_instances} > /tmp/consul-server-count",
|
||||||
|
"echo ${digitalocean_droplet.consul.0.ipv4_address} > /tmp/consul-server-addr",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
provisioner "remote-exec" {
|
||||||
|
scripts = [
|
||||||
|
"${path.module}/../shared/scripts/install.sh",
|
||||||
|
"${path.module}/../shared/scripts/service.sh",
|
||||||
|
"${path.module}/../shared/scripts/ip_tables.sh",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
7
terraform/digitalocean/outputs.tf
Normal file
7
terraform/digitalocean/outputs.tf
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
output "first_consule_node_address" {
|
||||||
|
value = "${digitalocean_droplet.consul.0.ipv4_address}"
|
||||||
|
}
|
||||||
|
|
||||||
|
output "all_addresses" {
|
||||||
|
value = ["${digitalocean_droplet.consul.*.ipv4_address}"]
|
||||||
|
}
|
4
terraform/digitalocean/terraform.tfvars.example
Normal file
4
terraform/digitalocean/terraform.tfvars.example
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
key_path = "~/.ssh/id_rsa"
|
||||||
|
ssh_key_ID = "my_ssh_key_ID_or_fingerprint_NOT_SSH_KEY_NAME"
|
||||||
|
do_token = "ASDFQWERTYDERP"
|
||||||
|
num_instances = "3"
|
79
terraform/digitalocean/variables.tf
Normal file
79
terraform/digitalocean/variables.tf
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
variable "do_token" {}
|
||||||
|
variable "key_path" {}
|
||||||
|
variable "ssh_key_ID" {}
|
||||||
|
variable "num_instances" {}
|
||||||
|
|
||||||
|
## below sourced from
|
||||||
|
## https://github.com/hashicorp/terraform/blob/master/examples/digitalocean/variable.tf
|
||||||
|
|
||||||
|
# ####
|
||||||
|
# Current Availiable Datacenter Regions
|
||||||
|
# As of 05-07-2016
|
||||||
|
#
|
||||||
|
|
||||||
|
variable "do_ams2" {
|
||||||
|
description = "Digital Ocean Amsterdam Data Center 2"
|
||||||
|
default = "ams2"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "do_ams3" {
|
||||||
|
description = "Digital Ocean Amsterdam Data Center 3"
|
||||||
|
default = "ams3"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "do_fra1" {
|
||||||
|
description = "Digital Ocean Frankfurt Data Center 1"
|
||||||
|
default = "fra1"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "do_lon1" {
|
||||||
|
description = "Digital Ocean London Data Center 1"
|
||||||
|
default = "lon1"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "do_nyc1" {
|
||||||
|
description = "Digital Ocean New York Data Center 1"
|
||||||
|
default = "nyc1"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "do_nyc2" {
|
||||||
|
description = "Digital Ocean New York Data Center 2"
|
||||||
|
default = "nyc2"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "do_nyc3" {
|
||||||
|
description = "Digital Ocean New York Data Center 3"
|
||||||
|
default = "nyc3"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "do_sfo1" {
|
||||||
|
description = "Digital Ocean San Francisco Data Center 1"
|
||||||
|
default = "sfo1"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "do_sgp1" {
|
||||||
|
description = "Digital Ocean Singapore Data Center 1"
|
||||||
|
default = "sgp1"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "do_tor1" {
|
||||||
|
description = "Digital Ocean Toronto Datacenter 1"
|
||||||
|
default = "tor1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Default Os
|
||||||
|
|
||||||
|
variable "ubuntu" {
|
||||||
|
description = "Default LTS"
|
||||||
|
default = "ubuntu-14-04-x64"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "centos" {
|
||||||
|
description = "Default Centos"
|
||||||
|
default = "centos-72-x64"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "coreos" {
|
||||||
|
description = "Defaut Coreos"
|
||||||
|
default = "coreos-899.17.0"
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user