Merge pull request #2326 from greenbrian/master

Add Terraform config for Digital Ocean
This commit is contained in:
James Phillips 2016-11-17 16:23:10 -08:00 committed by GitHub
commit 4006bd441b
5 changed files with 159 additions and 0 deletions

View 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'

View 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",
]
}
}

View 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}"]
}

View 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"

View 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"
}