Merge pull request #2326 from greenbrian/master
Add Terraform config for Digital Ocean
This commit is contained in:
commit
4006bd441b
|
@ -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'
|
|
@ -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",
|
||||
]
|
||||
}
|
||||
|
||||
}
|
|
@ -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}"]
|
||||
}
|
|
@ -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"
|
|
@ -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…
Reference in New Issue