From 4d36d4e705d9dccf522aa03935a98fe0817e72c1 Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Wed, 23 Sep 2015 13:03:57 -0700 Subject: [PATCH 01/31] demo/digitalocean: basic packer build works --- demo/digitalocean/packer/nomad.packer.json | 37 ++++++++++++++++++++++ demo/digitalocean/packer/upstart.nomad | 10 ++++++ 2 files changed, 47 insertions(+) create mode 100644 demo/digitalocean/packer/nomad.packer.json create mode 100644 demo/digitalocean/packer/upstart.nomad diff --git a/demo/digitalocean/packer/nomad.packer.json b/demo/digitalocean/packer/nomad.packer.json new file mode 100644 index 000000000..d89c0d10d --- /dev/null +++ b/demo/digitalocean/packer/nomad.packer.json @@ -0,0 +1,37 @@ +{ + "variables": { + "role": "{{ env `NOMAD_ROLE` }}", + "bin_url": "{{ env `NOMAD_URL` }}" + }, + "builders": [ + { + "type": "digitalocean", + "image": "ubuntu-12-04-x64", + "region": "nyc3", + "size": "512mb" + } + ], + "provisioners": [ + { + "type": "file", + "source": "nomad.zip", + "destination": "/tmp/nomad.zip" + }, + { + "type": "shell", + "inline": [ + "sudo apt-get -y update", + "sudo apt-get -y install unzip", + "# Temporarily disabled until public release. Uncomment", + "# and remove the above file provisioner.", + "#curl -o /tmp/nomad.zip -L {{ user `bin_url` }}", + "sudo unzip -d /usr/local/bin /tmp/nomad.zip" + ] + }, + { + "type": "file", + "source": "upstart.nomad", + "destination": "/etc/init/nomad" + } + ] +} diff --git a/demo/digitalocean/packer/upstart.nomad b/demo/digitalocean/packer/upstart.nomad new file mode 100644 index 000000000..1e61515c2 --- /dev/null +++ b/demo/digitalocean/packer/upstart.nomad @@ -0,0 +1,10 @@ +description "Nomad by HashiCorp" + +start on runlevel [2345] +stop on runlevel [!2345] + +respawn + +script + exec /usr/local/bin/nomad -config /usr/local/etc/nomad.hcl >> /var/log/nomad.log 2>&1 +end script From a1fbded91bc86c583bb5bfa99d4f01cb103fbd8c Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Wed, 23 Sep 2015 13:04:43 -0700 Subject: [PATCH 02/31] demo/digitalocean: add config templates to terraform --- demo/digitalocean/terraform/templates/client.hcl | 10 ++++++++++ demo/digitalocean/terraform/templates/server.hcl | 9 +++++++++ 2 files changed, 19 insertions(+) create mode 100644 demo/digitalocean/terraform/templates/client.hcl create mode 100644 demo/digitalocean/terraform/templates/server.hcl diff --git a/demo/digitalocean/terraform/templates/client.hcl b/demo/digitalocean/terraform/templates/client.hcl new file mode 100644 index 000000000..178a71f98 --- /dev/null +++ b/demo/digitalocean/terraform/templates/client.hcl @@ -0,0 +1,10 @@ +data_dir = "/tmp/nomad" +log_level = "DEBUG" +enable_debug = true +bind_addr = "0.0.0.0" +disable_update_check = true +client { + enabled = true + servers = ["nomad.service.consul:4647"] + node_class = "linux-64bit" +} diff --git a/demo/digitalocean/terraform/templates/server.hcl b/demo/digitalocean/terraform/templates/server.hcl new file mode 100644 index 000000000..640c3fe33 --- /dev/null +++ b/demo/digitalocean/terraform/templates/server.hcl @@ -0,0 +1,9 @@ +data_dir = "/tmp/nomad" +log_level = "DEBUG" +enable_debug = true +bind_addr = "0.0.0.0" +disable_update_check = true +server { + enabled = true + bootstrap_expect = 3 +} From 21b4ea16fbbfb5de2209d0b885b18e3a9ac2a87a Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Wed, 23 Sep 2015 13:07:17 -0700 Subject: [PATCH 03/31] demo/digitalocean: add a default client/server dual config --- demo/digitalocean/packer/default.hcl | 14 ++++++++++++++ demo/digitalocean/packer/nomad.packer.json | 5 +++++ 2 files changed, 19 insertions(+) create mode 100644 demo/digitalocean/packer/default.hcl diff --git a/demo/digitalocean/packer/default.hcl b/demo/digitalocean/packer/default.hcl new file mode 100644 index 000000000..3e426d6a6 --- /dev/null +++ b/demo/digitalocean/packer/default.hcl @@ -0,0 +1,14 @@ +data_dir = "/tmp/nomad" +log_level = "DEBUG" +enable_debug = true +bind_addr = "0.0.0.0" +disable_update_check = true +server { + enabled = true + bootstrap_expect = 1 +} +client { + enabled = true + servers = ["127.0.0.1:4647"] + node_class = "linux-64bit" +} diff --git a/demo/digitalocean/packer/nomad.packer.json b/demo/digitalocean/packer/nomad.packer.json index d89c0d10d..394c89f92 100644 --- a/demo/digitalocean/packer/nomad.packer.json +++ b/demo/digitalocean/packer/nomad.packer.json @@ -32,6 +32,11 @@ "type": "file", "source": "upstart.nomad", "destination": "/etc/init/nomad" + }, + { + "type": "file", + "source": "default.hcl", + "destination": "/usr/local/etc/nomad.hcl" } ] } From e6086cacfba55dc96e5ee9d40b3f4a8c43615e63 Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Wed, 23 Sep 2015 13:48:45 -0700 Subject: [PATCH 04/31] demo/digitalocean: updates --- demo/digitalocean/packer/default.hcl | 11 +---------- demo/digitalocean/packer/nomad.packer.json | 6 +++--- demo/digitalocean/packer/upstart.nomad | 4 +++- 3 files changed, 7 insertions(+), 14 deletions(-) diff --git a/demo/digitalocean/packer/default.hcl b/demo/digitalocean/packer/default.hcl index 3e426d6a6..ac3b9da83 100644 --- a/demo/digitalocean/packer/default.hcl +++ b/demo/digitalocean/packer/default.hcl @@ -1,14 +1,5 @@ -data_dir = "/tmp/nomad" +data_dir = "/opt/nomad" log_level = "DEBUG" enable_debug = true bind_addr = "0.0.0.0" disable_update_check = true -server { - enabled = true - bootstrap_expect = 1 -} -client { - enabled = true - servers = ["127.0.0.1:4647"] - node_class = "linux-64bit" -} diff --git a/demo/digitalocean/packer/nomad.packer.json b/demo/digitalocean/packer/nomad.packer.json index 394c89f92..296a78fcf 100644 --- a/demo/digitalocean/packer/nomad.packer.json +++ b/demo/digitalocean/packer/nomad.packer.json @@ -1,6 +1,5 @@ { "variables": { - "role": "{{ env `NOMAD_ROLE` }}", "bin_url": "{{ env `NOMAD_URL` }}" }, "builders": [ @@ -8,7 +7,8 @@ "type": "digitalocean", "image": "ubuntu-12-04-x64", "region": "nyc3", - "size": "512mb" + "size": "512mb", + "snapshot_name": "nomad-{{timestamp}}" } ], "provisioners": [ @@ -36,7 +36,7 @@ { "type": "file", "source": "default.hcl", - "destination": "/usr/local/etc/nomad.hcl" + "destination": "/usr/local/etc/nomad/nomad.hcl" } ] } diff --git a/demo/digitalocean/packer/upstart.nomad b/demo/digitalocean/packer/upstart.nomad index 1e61515c2..f716df212 100644 --- a/demo/digitalocean/packer/upstart.nomad +++ b/demo/digitalocean/packer/upstart.nomad @@ -6,5 +6,7 @@ stop on runlevel [!2345] respawn script - exec /usr/local/bin/nomad -config /usr/local/etc/nomad.hcl >> /var/log/nomad.log 2>&1 + CONFIG_DIR=/usr/local/etc/nomad + mkdir -p $CONFIG_DIR + exec /usr/local/bin/nomad -config $CONFIG_DIR >> /var/log/nomad.log 2>&1 end script From c0679665c5abe25976edae004a2b614d75407745 Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Wed, 23 Sep 2015 14:16:36 -0700 Subject: [PATCH 05/31] demo/digitalocean: initial terraform --- demo/digitalocean/terraform/client/main.tf | 29 ++++++++++++++++ demo/digitalocean/terraform/main.tf | 33 +++++++++++++++++++ demo/digitalocean/terraform/server/main.tf | 31 +++++++++++++++++ .../terraform/templates/client.hcl | 10 ------ .../terraform/templates/client.hcl.tpl | 6 ++++ .../terraform/templates/server.hcl | 9 ----- .../terraform/templates/server.hcl.tpl | 5 +++ 7 files changed, 104 insertions(+), 19 deletions(-) create mode 100644 demo/digitalocean/terraform/client/main.tf create mode 100644 demo/digitalocean/terraform/main.tf create mode 100644 demo/digitalocean/terraform/server/main.tf delete mode 100644 demo/digitalocean/terraform/templates/client.hcl create mode 100644 demo/digitalocean/terraform/templates/client.hcl.tpl delete mode 100644 demo/digitalocean/terraform/templates/server.hcl create mode 100644 demo/digitalocean/terraform/templates/server.hcl.tpl diff --git a/demo/digitalocean/terraform/client/main.tf b/demo/digitalocean/terraform/client/main.tf new file mode 100644 index 000000000..1b72fa608 --- /dev/null +++ b/demo/digitalocean/terraform/client/main.tf @@ -0,0 +1,29 @@ +variable "count" {} +variable "image" {} +variable "region" {} +variable "size" {} +variable "servers" {} + +resource "template_file" "client_config" { + filepath = "templates/client.hcl.tpl" + vars { + datacenter = "${var.region}" + servers = "${split(",", var.servers)}" + } +} + +resource "digitalocean_droplet" "client" { + image = "${var.image}" + name = "client-${var.region}-${count.index}" + count = "${var.count}" + size = "${var.size}" + + provisioner "file" { + source = "${template_file.client_config.filename}" + destination = "/usr/local/etc/nomad/client.hcl" + } + + provisioner "remote-exec" { + inline = ["sudo restart nomad"] + } +} diff --git a/demo/digitalocean/terraform/main.tf b/demo/digitalocean/terraform/main.tf new file mode 100644 index 000000000..c0245a034 --- /dev/null +++ b/demo/digitalocean/terraform/main.tf @@ -0,0 +1,33 @@ +module "servers" { + source = "./server" + region = "nyc3" + count = 3 +} + +module "clients-ams2" { + source = "./client" + region = "ams2" + count = 500 + servers = "${module.servers.addrs}" +} + +module "clients-ams3" { + source = "./client" + region = "ams3" + count = 500 + servers = "${module.servers.addrs}" +} + +module "clients-nyc3" { + source = "./client" + region = "nyc3" + count = 500 + servers = "${module.servers.addrs}" +} + +module "clients-sfo1" { + source = "./client" + region = "sfo1" + count = 500 + servers = "${module.servers.addrs}" +} diff --git a/demo/digitalocean/terraform/server/main.tf b/demo/digitalocean/terraform/server/main.tf new file mode 100644 index 000000000..50a2f71cc --- /dev/null +++ b/demo/digitalocean/terraform/server/main.tf @@ -0,0 +1,31 @@ +variable "count" {} +variable "image" {} +variable "region" {} +variable "size" {} + +resource "template_file" "server_config" { + filepath = "templates/server.hcl.tpl" + vars { + datacenter = "${var.region}" + } +} + +resource "digitalocean_droplet" "server" { + image = "${var.image}" + name = "server-${var.region}-${count.index}" + count = "${var.count}" + size = "${var.size}" + + provisioner "file" { + source = "${template_file.server_config.filename}" + destination = "/usr/local/etc/nomad/server.hcl" + } + + provisioner "remote-exec" { + inline = ["sudo restart nomad"] + } +} + +output "addrs" { + value = "${join(",", resource.digitalocean_droplet.*.ipv4_address)}" +} diff --git a/demo/digitalocean/terraform/templates/client.hcl b/demo/digitalocean/terraform/templates/client.hcl deleted file mode 100644 index 178a71f98..000000000 --- a/demo/digitalocean/terraform/templates/client.hcl +++ /dev/null @@ -1,10 +0,0 @@ -data_dir = "/tmp/nomad" -log_level = "DEBUG" -enable_debug = true -bind_addr = "0.0.0.0" -disable_update_check = true -client { - enabled = true - servers = ["nomad.service.consul:4647"] - node_class = "linux-64bit" -} diff --git a/demo/digitalocean/terraform/templates/client.hcl.tpl b/demo/digitalocean/terraform/templates/client.hcl.tpl new file mode 100644 index 000000000..f9c0b23db --- /dev/null +++ b/demo/digitalocean/terraform/templates/client.hcl.tpl @@ -0,0 +1,6 @@ +datacenter = "${var.datacenter}" +client { + enabled = true + servers = [ ${join(",", formatlist("\"%s:4647\"", var.servers))} ] + node_class = "linux-64bit" +} diff --git a/demo/digitalocean/terraform/templates/server.hcl b/demo/digitalocean/terraform/templates/server.hcl deleted file mode 100644 index 640c3fe33..000000000 --- a/demo/digitalocean/terraform/templates/server.hcl +++ /dev/null @@ -1,9 +0,0 @@ -data_dir = "/tmp/nomad" -log_level = "DEBUG" -enable_debug = true -bind_addr = "0.0.0.0" -disable_update_check = true -server { - enabled = true - bootstrap_expect = 3 -} diff --git a/demo/digitalocean/terraform/templates/server.hcl.tpl b/demo/digitalocean/terraform/templates/server.hcl.tpl new file mode 100644 index 000000000..335fb3547 --- /dev/null +++ b/demo/digitalocean/terraform/templates/server.hcl.tpl @@ -0,0 +1,5 @@ +datacenter = "${var.datacenter}" +server { + enabled = true + bootstrap_expect = 3 +} From 744bbf1fae26663f5a933158062a12aec32eb79e Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Wed, 23 Sep 2015 14:18:42 -0700 Subject: [PATCH 06/31] demo/digitalocean: var for image id --- demo/digitalocean/terraform/main.tf | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/demo/digitalocean/terraform/main.tf b/demo/digitalocean/terraform/main.tf index c0245a034..0fba15a19 100644 --- a/demo/digitalocean/terraform/main.tf +++ b/demo/digitalocean/terraform/main.tf @@ -1,13 +1,17 @@ +variable "image" { default = "xxx" } + module "servers" { source = "./server" region = "nyc3" count = 3 + image = "${var.image}" } module "clients-ams2" { source = "./client" region = "ams2" count = 500 + image = "${var.image}" servers = "${module.servers.addrs}" } @@ -15,6 +19,7 @@ module "clients-ams3" { source = "./client" region = "ams3" count = 500 + image = "${var.image}" servers = "${module.servers.addrs}" } @@ -22,6 +27,7 @@ module "clients-nyc3" { source = "./client" region = "nyc3" count = 500 + image = "${var.image}" servers = "${module.servers.addrs}" } @@ -29,5 +35,6 @@ module "clients-sfo1" { source = "./client" region = "sfo1" count = 500 + image = "${var.image}" servers = "${module.servers.addrs}" } From 13030677038401692530e4249c097458d777a7cb Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Wed, 23 Sep 2015 14:47:18 -0700 Subject: [PATCH 07/31] demo/digitalocean: terraform works --- demo/digitalocean/terraform/client/main.tf | 13 ++--- demo/digitalocean/terraform/main.tf | 2 +- demo/digitalocean/terraform/server/main.tf | 15 +++--- demo/digitalocean/terraform/terraform.tfstate | 53 +++++++++++++++++++ demo/digitalocean/terraform/terraform.tfvars | 3 ++ 5 files changed, 72 insertions(+), 14 deletions(-) create mode 100644 demo/digitalocean/terraform/terraform.tfstate create mode 100644 demo/digitalocean/terraform/terraform.tfvars diff --git a/demo/digitalocean/terraform/client/main.tf b/demo/digitalocean/terraform/client/main.tf index 1b72fa608..164c86479 100644 --- a/demo/digitalocean/terraform/client/main.tf +++ b/demo/digitalocean/terraform/client/main.tf @@ -1,11 +1,11 @@ variable "count" {} variable "image" {} variable "region" {} -variable "size" {} +variable "size" { default = "512mb" } variable "servers" {} resource "template_file" "client_config" { - filepath = "templates/client.hcl.tpl" + filename = "templates/client.hcl.tpl" vars { datacenter = "${var.region}" servers = "${split(",", var.servers)}" @@ -13,10 +13,11 @@ resource "template_file" "client_config" { } resource "digitalocean_droplet" "client" { - image = "${var.image}" - name = "client-${var.region}-${count.index}" - count = "${var.count}" - size = "${var.size}" + image = "${var.image}" + name = "client-${var.region}-${count.index}" + count = "${var.count}" + size = "${var.size}" + region = "${var.region}" provisioner "file" { source = "${template_file.client_config.filename}" diff --git a/demo/digitalocean/terraform/main.tf b/demo/digitalocean/terraform/main.tf index 0fba15a19..a2d4b3a93 100644 --- a/demo/digitalocean/terraform/main.tf +++ b/demo/digitalocean/terraform/main.tf @@ -1,4 +1,4 @@ -variable "image" { default = "xxx" } +variable "image" { default = "nomad-1443043155" } module "servers" { source = "./server" diff --git a/demo/digitalocean/terraform/server/main.tf b/demo/digitalocean/terraform/server/main.tf index 50a2f71cc..1f6128874 100644 --- a/demo/digitalocean/terraform/server/main.tf +++ b/demo/digitalocean/terraform/server/main.tf @@ -1,20 +1,21 @@ variable "count" {} variable "image" {} variable "region" {} -variable "size" {} +variable "size" { default = "512mb" } resource "template_file" "server_config" { - filepath = "templates/server.hcl.tpl" + filename = "templates/server.hcl.tpl" vars { datacenter = "${var.region}" } } resource "digitalocean_droplet" "server" { - image = "${var.image}" - name = "server-${var.region}-${count.index}" - count = "${var.count}" - size = "${var.size}" + image = "${var.image}" + name = "server-${var.region}-${count.index}" + count = "${var.count}" + size = "${var.size}" + region = "${var.region}" provisioner "file" { source = "${template_file.server_config.filename}" @@ -27,5 +28,5 @@ resource "digitalocean_droplet" "server" { } output "addrs" { - value = "${join(",", resource.digitalocean_droplet.*.ipv4_address)}" + value = "${join(",", digitalocean_droplet.server.*.ipv4_address)}" } diff --git a/demo/digitalocean/terraform/terraform.tfstate b/demo/digitalocean/terraform/terraform.tfstate new file mode 100644 index 000000000..f5bb12c1f --- /dev/null +++ b/demo/digitalocean/terraform/terraform.tfstate @@ -0,0 +1,53 @@ +{ + "version": 1, + "serial": 0, + "modules": [ + { + "path": [ + "root" + ], + "outputs": {}, + "resources": {} + }, + { + "path": [ + "root", + "clients-ams2" + ], + "outputs": {}, + "resources": {} + }, + { + "path": [ + "root", + "clients-ams3" + ], + "outputs": {}, + "resources": {} + }, + { + "path": [ + "root", + "clients-nyc3" + ], + "outputs": {}, + "resources": {} + }, + { + "path": [ + "root", + "clients-sfo1" + ], + "outputs": {}, + "resources": {} + }, + { + "path": [ + "root", + "servers" + ], + "outputs": {}, + "resources": {} + } + ] +} diff --git a/demo/digitalocean/terraform/terraform.tfvars b/demo/digitalocean/terraform/terraform.tfvars new file mode 100644 index 000000000..dfe072548 --- /dev/null +++ b/demo/digitalocean/terraform/terraform.tfvars @@ -0,0 +1,3 @@ +image = "nomad-1443043155" +client_size = "512mb" +server_size = "512mb" From cabbd919e81c6cd4074c1dc0c728e23fdb661dd6 Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Wed, 23 Sep 2015 14:47:46 -0700 Subject: [PATCH 08/31] demo/digitalocean: join servers together --- .gitignore | 1 - demo/digitalocean/terraform/main.tf | 8 ++++---- demo/digitalocean/terraform/server/main.tf | 12 ++++++++++++ 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 9146643e0..6e92e771b 100644 --- a/.gitignore +++ b/.gitignore @@ -47,4 +47,3 @@ example.nomad nomad_linux_amd64 nomad_darwin_amd64 TODO.md - diff --git a/demo/digitalocean/terraform/main.tf b/demo/digitalocean/terraform/main.tf index a2d4b3a93..ca6080aac 100644 --- a/demo/digitalocean/terraform/main.tf +++ b/demo/digitalocean/terraform/main.tf @@ -10,7 +10,7 @@ module "servers" { module "clients-ams2" { source = "./client" region = "ams2" - count = 500 + count = 1 image = "${var.image}" servers = "${module.servers.addrs}" } @@ -18,7 +18,7 @@ module "clients-ams2" { module "clients-ams3" { source = "./client" region = "ams3" - count = 500 + count = 1 image = "${var.image}" servers = "${module.servers.addrs}" } @@ -26,7 +26,7 @@ module "clients-ams3" { module "clients-nyc3" { source = "./client" region = "nyc3" - count = 500 + count = 1 image = "${var.image}" servers = "${module.servers.addrs}" } @@ -34,7 +34,7 @@ module "clients-nyc3" { module "clients-sfo1" { source = "./client" region = "sfo1" - count = 500 + count = 1 image = "${var.image}" servers = "${module.servers.addrs}" } diff --git a/demo/digitalocean/terraform/server/main.tf b/demo/digitalocean/terraform/server/main.tf index 1f6128874..812d07995 100644 --- a/demo/digitalocean/terraform/server/main.tf +++ b/demo/digitalocean/terraform/server/main.tf @@ -27,6 +27,18 @@ resource "digitalocean_droplet" "server" { } } +resource "null_resource" "server_join" { + provisioner "local-exec" { + command = < Date: Wed, 23 Sep 2015 15:10:11 -0700 Subject: [PATCH 09/31] Ignore terraform files --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 6e92e771b..6f4997561 100644 --- a/.gitignore +++ b/.gitignore @@ -47,3 +47,6 @@ example.nomad nomad_linux_amd64 nomad_darwin_amd64 TODO.md + +.terraform +*.tfstate* From 170a568bec4835d5276e159bb793d8d98d49789e Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Wed, 23 Sep 2015 16:38:31 -0700 Subject: [PATCH 10/31] demo/digitalocean: fix terraform for ssh keys --- demo/digitalocean/terraform/client/main.tf | 20 ++++--- demo/digitalocean/terraform/main.tf | 56 ++++++++++--------- demo/digitalocean/terraform/server/main.tf | 18 +++--- .../terraform/templates/client.hcl.tpl | 4 +- .../terraform/templates/server.hcl.tpl | 2 +- demo/digitalocean/terraform/terraform.tfstate | 53 ------------------ demo/digitalocean/terraform/terraform.tfvars | 5 +- 7 files changed, 57 insertions(+), 101 deletions(-) delete mode 100644 demo/digitalocean/terraform/terraform.tfstate diff --git a/demo/digitalocean/terraform/client/main.tf b/demo/digitalocean/terraform/client/main.tf index 164c86479..61c4a8cbb 100644 --- a/demo/digitalocean/terraform/client/main.tf +++ b/demo/digitalocean/terraform/client/main.tf @@ -1,8 +1,9 @@ -variable "count" {} -variable "image" {} -variable "region" {} -variable "size" { default = "512mb" } +variable "count" {} +variable "image" {} +variable "region" {} +variable "size" { default = "512mb" } variable "servers" {} +variable "ssh_keys" {} resource "template_file" "client_config" { filename = "templates/client.hcl.tpl" @@ -13,11 +14,12 @@ resource "template_file" "client_config" { } resource "digitalocean_droplet" "client" { - image = "${var.image}" - name = "client-${var.region}-${count.index}" - count = "${var.count}" - size = "${var.size}" - region = "${var.region}" + image = "${var.image}" + name = "client-${var.region}-${count.index}" + count = "${var.count}" + size = "${var.size}" + region = "${var.region}" + ssh_keys = ["${split(",", var.ssh_keys)}"] provisioner "file" { source = "${template_file.client_config.filename}" diff --git a/demo/digitalocean/terraform/main.tf b/demo/digitalocean/terraform/main.tf index ca6080aac..10367d435 100644 --- a/demo/digitalocean/terraform/main.tf +++ b/demo/digitalocean/terraform/main.tf @@ -1,40 +1,46 @@ -variable "image" { default = "nomad-1443043155" } +variable "image" {} +variable "ssh_keys" {} module "servers" { - source = "./server" - region = "nyc3" - count = 3 - image = "${var.image}" + source = "./server" + region = "nyc3" + count = 3 + image = "${var.image}" + ssh_keys = "${var.ssh_keys}" } module "clients-ams2" { - source = "./client" - region = "ams2" - count = 1 - image = "${var.image}" - servers = "${module.servers.addrs}" + source = "./client" + region = "ams2" + count = 1 + image = "${var.image}" + servers = "${module.servers.addrs}" + ssh_keys = "${var.ssh_keys}" } module "clients-ams3" { - source = "./client" - region = "ams3" - count = 1 - image = "${var.image}" - servers = "${module.servers.addrs}" + source = "./client" + region = "ams3" + count = 1 + image = "${var.image}" + servers = "${module.servers.addrs}" + ssh_keys = "${var.ssh_keys}" } module "clients-nyc3" { - source = "./client" - region = "nyc3" - count = 1 - image = "${var.image}" - servers = "${module.servers.addrs}" + source = "./client" + region = "nyc3" + count = 1 + image = "${var.image}" + servers = "${module.servers.addrs}" + ssh_keys = "${var.ssh_keys}" } module "clients-sfo1" { - source = "./client" - region = "sfo1" - count = 1 - image = "${var.image}" - servers = "${module.servers.addrs}" + source = "./client" + region = "sfo1" + count = 1 + image = "${var.image}" + servers = "${module.servers.addrs}" + ssh_keys = "${var.ssh_keys}" } diff --git a/demo/digitalocean/terraform/server/main.tf b/demo/digitalocean/terraform/server/main.tf index 812d07995..93c89e212 100644 --- a/demo/digitalocean/terraform/server/main.tf +++ b/demo/digitalocean/terraform/server/main.tf @@ -1,7 +1,8 @@ -variable "count" {} -variable "image" {} +variable "count" {} +variable "image" {} variable "region" {} -variable "size" { default = "512mb" } +variable "size" { default = "512mb" } +variable "ssh_keys" {} resource "template_file" "server_config" { filename = "templates/server.hcl.tpl" @@ -11,11 +12,12 @@ resource "template_file" "server_config" { } resource "digitalocean_droplet" "server" { - image = "${var.image}" - name = "server-${var.region}-${count.index}" - count = "${var.count}" - size = "${var.size}" - region = "${var.region}" + image = "${var.image}" + name = "server-${var.region}-${count.index}" + count = "${var.count}" + size = "${var.size}" + region = "${var.region}" + ssh_keys = ["${split(",", var.ssh_keys)}"] provisioner "file" { source = "${template_file.server_config.filename}" diff --git a/demo/digitalocean/terraform/templates/client.hcl.tpl b/demo/digitalocean/terraform/templates/client.hcl.tpl index f9c0b23db..b4ed03e57 100644 --- a/demo/digitalocean/terraform/templates/client.hcl.tpl +++ b/demo/digitalocean/terraform/templates/client.hcl.tpl @@ -1,6 +1,6 @@ -datacenter = "${var.datacenter}" +datacenter = "${datacenter}" client { enabled = true - servers = [ ${join(",", formatlist("\"%s:4647\"", var.servers))} ] + servers = [ ${join(",", formatlist("\"%s:4647\"", servers))} ] node_class = "linux-64bit" } diff --git a/demo/digitalocean/terraform/templates/server.hcl.tpl b/demo/digitalocean/terraform/templates/server.hcl.tpl index 335fb3547..8ebbb9b1e 100644 --- a/demo/digitalocean/terraform/templates/server.hcl.tpl +++ b/demo/digitalocean/terraform/templates/server.hcl.tpl @@ -1,4 +1,4 @@ -datacenter = "${var.datacenter}" +datacenter = "${datacenter}" server { enabled = true bootstrap_expect = 3 diff --git a/demo/digitalocean/terraform/terraform.tfstate b/demo/digitalocean/terraform/terraform.tfstate deleted file mode 100644 index f5bb12c1f..000000000 --- a/demo/digitalocean/terraform/terraform.tfstate +++ /dev/null @@ -1,53 +0,0 @@ -{ - "version": 1, - "serial": 0, - "modules": [ - { - "path": [ - "root" - ], - "outputs": {}, - "resources": {} - }, - { - "path": [ - "root", - "clients-ams2" - ], - "outputs": {}, - "resources": {} - }, - { - "path": [ - "root", - "clients-ams3" - ], - "outputs": {}, - "resources": {} - }, - { - "path": [ - "root", - "clients-nyc3" - ], - "outputs": {}, - "resources": {} - }, - { - "path": [ - "root", - "clients-sfo1" - ], - "outputs": {}, - "resources": {} - }, - { - "path": [ - "root", - "servers" - ], - "outputs": {}, - "resources": {} - } - ] -} diff --git a/demo/digitalocean/terraform/terraform.tfvars b/demo/digitalocean/terraform/terraform.tfvars index dfe072548..e83579ea6 100644 --- a/demo/digitalocean/terraform/terraform.tfvars +++ b/demo/digitalocean/terraform/terraform.tfvars @@ -1,3 +1,2 @@ -image = "nomad-1443043155" -client_size = "512mb" -server_size = "512mb" +image = "13671595" +ssh_keys = "1494275" From 12329cb274fdcf2dd78313a0dee4cfb5d11e11b4 Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Wed, 23 Sep 2015 16:51:51 -0700 Subject: [PATCH 11/31] demo/digitalocean: use remote-exec for config files --- demo/digitalocean/terraform/client/main.tf | 7 ++++--- demo/digitalocean/terraform/server/main.tf | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/demo/digitalocean/terraform/client/main.tf b/demo/digitalocean/terraform/client/main.tf index 61c4a8cbb..8a9e44e9d 100644 --- a/demo/digitalocean/terraform/client/main.tf +++ b/demo/digitalocean/terraform/client/main.tf @@ -21,9 +21,10 @@ resource "digitalocean_droplet" "client" { region = "${var.region}" ssh_keys = ["${split(",", var.ssh_keys)}"] - provisioner "file" { - source = "${template_file.client_config.filename}" - destination = "/usr/local/etc/nomad/client.hcl" + provisioner "remote-exec" { + inline = ["cat > /usr/local/etc/nomad/client.hcl < /usr/local/etc/nomad/server.hcl < Date: Wed, 23 Sep 2015 16:52:38 -0700 Subject: [PATCH 12/31] demo/digitalocean: fix upstart --- demo/digitalocean/packer/nomad.packer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/digitalocean/packer/nomad.packer.json b/demo/digitalocean/packer/nomad.packer.json index 296a78fcf..e011217e9 100644 --- a/demo/digitalocean/packer/nomad.packer.json +++ b/demo/digitalocean/packer/nomad.packer.json @@ -31,7 +31,7 @@ { "type": "file", "source": "upstart.nomad", - "destination": "/etc/init/nomad" + "destination": "/etc/init/nomad.conf" }, { "type": "file", From 86e6ea2bac5b60f7d831b699af8f73d72deadaca Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Wed, 23 Sep 2015 17:55:31 -0700 Subject: [PATCH 13/31] demo/digitalocean: packer parent dir must exist, fix upstart --- demo/digitalocean/packer/nomad.packer.json | 3 ++- demo/digitalocean/packer/upstart.nomad | 2 +- demo/digitalocean/terraform/templates/server.hcl.tpl | 5 ----- 3 files changed, 3 insertions(+), 7 deletions(-) delete mode 100644 demo/digitalocean/terraform/templates/server.hcl.tpl diff --git a/demo/digitalocean/packer/nomad.packer.json b/demo/digitalocean/packer/nomad.packer.json index e011217e9..3f3be5f5c 100644 --- a/demo/digitalocean/packer/nomad.packer.json +++ b/demo/digitalocean/packer/nomad.packer.json @@ -25,7 +25,8 @@ "# Temporarily disabled until public release. Uncomment", "# and remove the above file provisioner.", "#curl -o /tmp/nomad.zip -L {{ user `bin_url` }}", - "sudo unzip -d /usr/local/bin /tmp/nomad.zip" + "sudo unzip -d /usr/local/bin /tmp/nomad.zip", + "mkdir -p /usr/local/etc/nomad" ] }, { diff --git a/demo/digitalocean/packer/upstart.nomad b/demo/digitalocean/packer/upstart.nomad index f716df212..371b5d823 100644 --- a/demo/digitalocean/packer/upstart.nomad +++ b/demo/digitalocean/packer/upstart.nomad @@ -8,5 +8,5 @@ respawn script CONFIG_DIR=/usr/local/etc/nomad mkdir -p $CONFIG_DIR - exec /usr/local/bin/nomad -config $CONFIG_DIR >> /var/log/nomad.log 2>&1 + exec /usr/local/bin/nomad agent -config $CONFIG_DIR >> /var/log/nomad.log 2>&1 end script diff --git a/demo/digitalocean/terraform/templates/server.hcl.tpl b/demo/digitalocean/terraform/templates/server.hcl.tpl deleted file mode 100644 index 8ebbb9b1e..000000000 --- a/demo/digitalocean/terraform/templates/server.hcl.tpl +++ /dev/null @@ -1,5 +0,0 @@ -datacenter = "${datacenter}" -server { - enabled = true - bootstrap_expect = 3 -} From b2237e12b7e9cc0ba5426f02335de017b74e0e8f Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Wed, 23 Sep 2015 18:04:41 -0700 Subject: [PATCH 14/31] demo/digitalocean: fix terraform --- demo/digitalocean/terraform/client/main.tf | 8 ++++-- demo/digitalocean/terraform/server/main.tf | 29 +++++++++++--------- demo/digitalocean/terraform/terraform.tfvars | 2 +- 3 files changed, 22 insertions(+), 17 deletions(-) diff --git a/demo/digitalocean/terraform/client/main.tf b/demo/digitalocean/terraform/client/main.tf index 8a9e44e9d..e71fdaf09 100644 --- a/demo/digitalocean/terraform/client/main.tf +++ b/demo/digitalocean/terraform/client/main.tf @@ -22,12 +22,14 @@ resource "digitalocean_droplet" "client" { ssh_keys = ["${split(",", var.ssh_keys)}"] provisioner "remote-exec" { - inline = ["cat > /usr/local/etc/nomad/client.hcl < /usr/local/etc/nomad/client.hcl < /usr/local/etc/nomad/server.hcl < /usr/local/etc/nomad/server.hcl < Date: Wed, 23 Sep 2015 19:02:04 -0700 Subject: [PATCH 15/31] demo/digitalocean: server bootstrap works, client join works --- .../{templates => client}/client.hcl.tpl | 2 +- demo/digitalocean/terraform/client/main.tf | 4 ++-- demo/digitalocean/terraform/main.tf | 20 ++++++++++--------- demo/digitalocean/terraform/server/main.tf | 2 +- 4 files changed, 15 insertions(+), 13 deletions(-) rename demo/digitalocean/terraform/{templates => client}/client.hcl.tpl (57%) diff --git a/demo/digitalocean/terraform/templates/client.hcl.tpl b/demo/digitalocean/terraform/client/client.hcl.tpl similarity index 57% rename from demo/digitalocean/terraform/templates/client.hcl.tpl rename to demo/digitalocean/terraform/client/client.hcl.tpl index b4ed03e57..d9bb6c4ee 100644 --- a/demo/digitalocean/terraform/templates/client.hcl.tpl +++ b/demo/digitalocean/terraform/client/client.hcl.tpl @@ -1,6 +1,6 @@ datacenter = "${datacenter}" client { enabled = true - servers = [ ${join(",", formatlist("\"%s:4647\"", servers))} ] + servers = [${join(",", formatlist("\"%s:4647\"", servers))}] node_class = "linux-64bit" } diff --git a/demo/digitalocean/terraform/client/main.tf b/demo/digitalocean/terraform/client/main.tf index e71fdaf09..56d9fdd5e 100644 --- a/demo/digitalocean/terraform/client/main.tf +++ b/demo/digitalocean/terraform/client/main.tf @@ -6,7 +6,7 @@ variable "servers" {} variable "ssh_keys" {} resource "template_file" "client_config" { - filename = "templates/client.hcl.tpl" + filename = "${path.module}/client.hcl.tpl" vars { datacenter = "${var.region}" servers = "${split(",", var.servers)}" @@ -30,6 +30,6 @@ CMD } provisioner "remote-exec" { - inline = "sudo restart nomad || true" + inline = "sudo start nomad || sudo restart nomad" } } diff --git a/demo/digitalocean/terraform/main.tf b/demo/digitalocean/terraform/main.tf index 10367d435..019a51f44 100644 --- a/demo/digitalocean/terraform/main.tf +++ b/demo/digitalocean/terraform/main.tf @@ -9,6 +9,16 @@ module "servers" { ssh_keys = "${var.ssh_keys}" } +module "clients-nyc3" { + source = "./client" + region = "nyc3" + count = 1 + image = "${var.image}" + servers = "${module.servers.addrs}" + ssh_keys = "${var.ssh_keys}" +} + +/* module "clients-ams2" { source = "./client" region = "ams2" @@ -27,15 +37,6 @@ module "clients-ams3" { ssh_keys = "${var.ssh_keys}" } -module "clients-nyc3" { - source = "./client" - region = "nyc3" - count = 1 - image = "${var.image}" - servers = "${module.servers.addrs}" - ssh_keys = "${var.ssh_keys}" -} - module "clients-sfo1" { source = "./client" region = "sfo1" @@ -44,3 +45,4 @@ module "clients-sfo1" { servers = "${module.servers.addrs}" ssh_keys = "${var.ssh_keys}" } +*/ diff --git a/demo/digitalocean/terraform/server/main.tf b/demo/digitalocean/terraform/server/main.tf index f288732f3..cb82a4460 100644 --- a/demo/digitalocean/terraform/server/main.tf +++ b/demo/digitalocean/terraform/server/main.tf @@ -29,7 +29,7 @@ CMD } provisioner "remote-exec" { - inline = "sudo restart nomad || true" + inline = "sudo start nomad || sudo restart nomad" } } From 4f6fa3f8d099708a9bcd04fdeca60dac6dece216 Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Wed, 23 Sep 2015 19:49:02 -0700 Subject: [PATCH 16/31] demo/digitalocean: use the env var to download --- .../packer/{nomad.packer.json => packer.json} | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) rename demo/digitalocean/packer/{nomad.packer.json => packer.json} (72%) diff --git a/demo/digitalocean/packer/nomad.packer.json b/demo/digitalocean/packer/packer.json similarity index 72% rename from demo/digitalocean/packer/nomad.packer.json rename to demo/digitalocean/packer/packer.json index 3f3be5f5c..ba6c8b0c0 100644 --- a/demo/digitalocean/packer/nomad.packer.json +++ b/demo/digitalocean/packer/packer.json @@ -12,19 +12,12 @@ } ], "provisioners": [ - { - "type": "file", - "source": "nomad.zip", - "destination": "/tmp/nomad.zip" - }, { "type": "shell", "inline": [ "sudo apt-get -y update", "sudo apt-get -y install unzip", - "# Temporarily disabled until public release. Uncomment", - "# and remove the above file provisioner.", - "#curl -o /tmp/nomad.zip -L {{ user `bin_url` }}", + "curl -o /tmp/nomad.zip -L {{ user `bin_url` }}", "sudo unzip -d /usr/local/bin /tmp/nomad.zip", "mkdir -p /usr/local/etc/nomad" ] From 41019e909b9c88fe2867c1eb594dc47d6dc2e92b Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Thu, 24 Sep 2015 10:11:46 -0700 Subject: [PATCH 17/31] demo/digitalocean: add Atlas --- demo/digitalocean/packer/packer.json | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/demo/digitalocean/packer/packer.json b/demo/digitalocean/packer/packer.json index ba6c8b0c0..55bfb6b6a 100644 --- a/demo/digitalocean/packer/packer.json +++ b/demo/digitalocean/packer/packer.json @@ -32,5 +32,16 @@ "source": "default.hcl", "destination": "/usr/local/etc/nomad/nomad.hcl" } - ] + ], + "post-processors": [ + { + "type": "atlas", + "artifact": "hashicorp/nomad-demo", + "artifact_type": "digitalocean.droplet" + } + ], + "push": { + "name": "hashicorp/nomad-demo", + "vcs": true + } } From 51f0b05e2e002c42f9582cb8d64bc73d8110a340 Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Thu, 24 Sep 2015 10:50:41 -0700 Subject: [PATCH 18/31] demo/digitalocean: add Atlas for Terraform --- demo/digitalocean/terraform/main.tf | 18 +++++++++++------- demo/digitalocean/terraform/server/main.tf | 3 +-- demo/digitalocean/terraform/terraform.tfvars | 6 ++++-- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/demo/digitalocean/terraform/main.tf b/demo/digitalocean/terraform/main.tf index 019a51f44..42d1a63da 100644 --- a/demo/digitalocean/terraform/main.tf +++ b/demo/digitalocean/terraform/main.tf @@ -1,11 +1,15 @@ -variable "image" {} variable "ssh_keys" {} +resource "atlas_artifact" "nomad-digitalocean" { + name = "hashicorp/nomad-demo" + type = "digitalocean.image" + version = "latest" +} + module "servers" { source = "./server" region = "nyc3" - count = 3 - image = "${var.image}" + image = "${atlas_artifact.nomad-digitalocean.id}" ssh_keys = "${var.ssh_keys}" } @@ -13,7 +17,7 @@ module "clients-nyc3" { source = "./client" region = "nyc3" count = 1 - image = "${var.image}" + image = "${atlas_artifact.nomad-digitalocean.id}" servers = "${module.servers.addrs}" ssh_keys = "${var.ssh_keys}" } @@ -23,7 +27,7 @@ module "clients-ams2" { source = "./client" region = "ams2" count = 1 - image = "${var.image}" + image = "${atlas_artifact.nomad-digitalocean.id}" servers = "${module.servers.addrs}" ssh_keys = "${var.ssh_keys}" } @@ -32,7 +36,7 @@ module "clients-ams3" { source = "./client" region = "ams3" count = 1 - image = "${var.image}" + image = "${atlas_artifact.nomad-digitalocean.id}" servers = "${module.servers.addrs}" ssh_keys = "${var.ssh_keys}" } @@ -41,7 +45,7 @@ module "clients-sfo1" { source = "./client" region = "sfo1" count = 1 - image = "${var.image}" + image = "${atlas_artifact.nomad-digitalocean.id}" servers = "${module.servers.addrs}" ssh_keys = "${var.ssh_keys}" } diff --git a/demo/digitalocean/terraform/server/main.tf b/demo/digitalocean/terraform/server/main.tf index cb82a4460..278dc70c0 100644 --- a/demo/digitalocean/terraform/server/main.tf +++ b/demo/digitalocean/terraform/server/main.tf @@ -1,4 +1,3 @@ -variable "count" {} variable "image" {} variable "region" {} variable "size" { default = "512mb" } @@ -7,7 +6,7 @@ variable "ssh_keys" {} resource "digitalocean_droplet" "server" { image = "${var.image}" name = "server-${var.region}-${count.index}" - count = "${var.count}" + count = 3 size = "${var.size}" region = "${var.region}" ssh_keys = ["${split(",", var.ssh_keys)}"] diff --git a/demo/digitalocean/terraform/terraform.tfvars b/demo/digitalocean/terraform/terraform.tfvars index b8cd26c01..94584852e 100644 --- a/demo/digitalocean/terraform/terraform.tfvars +++ b/demo/digitalocean/terraform/terraform.tfvars @@ -1,2 +1,4 @@ -image = "13674033" -ssh_keys = "1494275" +# This is a comma-separated list of SSH key ID's or fingerprints +# available in your DigitalOcean account. These keys will be granted +# SSH access to all of the deployed instances. +ssh_keys = "ef:7f:3d:c1:76:12:35:e8:ea:d4:17:3d:83:46:59:7c" From 5d6dbd286410eeaf736eea87a03ad1ab023faca9 Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Thu, 24 Sep 2015 10:51:23 -0700 Subject: [PATCH 19/31] demo/digitalocean: fix artifact type --- demo/digitalocean/packer/packer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/digitalocean/packer/packer.json b/demo/digitalocean/packer/packer.json index 55bfb6b6a..49c1d961f 100644 --- a/demo/digitalocean/packer/packer.json +++ b/demo/digitalocean/packer/packer.json @@ -37,7 +37,7 @@ { "type": "atlas", "artifact": "hashicorp/nomad-demo", - "artifact_type": "digitalocean.droplet" + "artifact_type": "digitalocean.image" } ], "push": { From 44fe68f86b18a26bca2ca2c7bc06392b095b1a63 Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Thu, 24 Sep 2015 11:08:08 -0700 Subject: [PATCH 20/31] demo/digitalocean: prefix names of droplets with nomad --- demo/digitalocean/terraform/client/main.tf | 2 +- demo/digitalocean/terraform/server/main.tf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/demo/digitalocean/terraform/client/main.tf b/demo/digitalocean/terraform/client/main.tf index 56d9fdd5e..19c5e67eb 100644 --- a/demo/digitalocean/terraform/client/main.tf +++ b/demo/digitalocean/terraform/client/main.tf @@ -15,7 +15,7 @@ resource "template_file" "client_config" { resource "digitalocean_droplet" "client" { image = "${var.image}" - name = "client-${var.region}-${count.index}" + name = "nomad-client-${var.region}-${count.index}" count = "${var.count}" size = "${var.size}" region = "${var.region}" diff --git a/demo/digitalocean/terraform/server/main.tf b/demo/digitalocean/terraform/server/main.tf index 278dc70c0..37a0e2aed 100644 --- a/demo/digitalocean/terraform/server/main.tf +++ b/demo/digitalocean/terraform/server/main.tf @@ -5,7 +5,7 @@ variable "ssh_keys" {} resource "digitalocean_droplet" "server" { image = "${var.image}" - name = "server-${var.region}-${count.index}" + name = "nomad-server-${var.region}-${count.index}" count = 3 size = "${var.size}" region = "${var.region}" From bb4d0ee26c35eab4e759ee55e894c745878ed630 Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Thu, 24 Sep 2015 11:10:20 -0700 Subject: [PATCH 21/31] demo/digitalocean: update fingerprint --- demo/digitalocean/terraform/terraform.tfvars | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/digitalocean/terraform/terraform.tfvars b/demo/digitalocean/terraform/terraform.tfvars index 94584852e..83654fb0c 100644 --- a/demo/digitalocean/terraform/terraform.tfvars +++ b/demo/digitalocean/terraform/terraform.tfvars @@ -1,4 +1,4 @@ # This is a comma-separated list of SSH key ID's or fingerprints # available in your DigitalOcean account. These keys will be granted # SSH access to all of the deployed instances. -ssh_keys = "ef:7f:3d:c1:76:12:35:e8:ea:d4:17:3d:83:46:59:7c" +ssh_keys = "7b:40:be:5a:9a:90:1f:8a:b6:ec:7e:48:82:ae:73:dc" From 9c1436801a37099b50509b84bc2b5c04a1225849 Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Thu, 24 Sep 2015 11:44:29 -0700 Subject: [PATCH 22/31] demo/digitalocean: display server IP's on completion --- demo/digitalocean/terraform/main.tf | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/demo/digitalocean/terraform/main.tf b/demo/digitalocean/terraform/main.tf index 42d1a63da..401da4b42 100644 --- a/demo/digitalocean/terraform/main.tf +++ b/demo/digitalocean/terraform/main.tf @@ -50,3 +50,7 @@ module "clients-sfo1" { ssh_keys = "${var.ssh_keys}" } */ + +output "cluster-info" { + value = "Nomad Servers: ${join(" ", split(",", module.servers.addrs))}" +} From d99207b269dcfc69f88f9ddce92836d347aedd2b Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Thu, 24 Sep 2015 11:44:51 -0700 Subject: [PATCH 23/31] demo/digitalocean: 500x 1gb droplets per region --- demo/digitalocean/terraform/client/main.tf | 2 +- demo/digitalocean/terraform/main.tf | 10 ++++------ demo/digitalocean/terraform/server/main.tf | 2 +- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/demo/digitalocean/terraform/client/main.tf b/demo/digitalocean/terraform/client/main.tf index 19c5e67eb..f86418bc1 100644 --- a/demo/digitalocean/terraform/client/main.tf +++ b/demo/digitalocean/terraform/client/main.tf @@ -1,7 +1,7 @@ variable "count" {} variable "image" {} variable "region" {} -variable "size" { default = "512mb" } +variable "size" { default = "1gb" } variable "servers" {} variable "ssh_keys" {} diff --git a/demo/digitalocean/terraform/main.tf b/demo/digitalocean/terraform/main.tf index 401da4b42..6136ff831 100644 --- a/demo/digitalocean/terraform/main.tf +++ b/demo/digitalocean/terraform/main.tf @@ -16,17 +16,16 @@ module "servers" { module "clients-nyc3" { source = "./client" region = "nyc3" - count = 1 + count = 500 image = "${atlas_artifact.nomad-digitalocean.id}" servers = "${module.servers.addrs}" ssh_keys = "${var.ssh_keys}" } -/* module "clients-ams2" { source = "./client" region = "ams2" - count = 1 + count = 500 image = "${atlas_artifact.nomad-digitalocean.id}" servers = "${module.servers.addrs}" ssh_keys = "${var.ssh_keys}" @@ -35,7 +34,7 @@ module "clients-ams2" { module "clients-ams3" { source = "./client" region = "ams3" - count = 1 + count = 500 image = "${atlas_artifact.nomad-digitalocean.id}" servers = "${module.servers.addrs}" ssh_keys = "${var.ssh_keys}" @@ -44,12 +43,11 @@ module "clients-ams3" { module "clients-sfo1" { source = "./client" region = "sfo1" - count = 1 + count = 500 image = "${atlas_artifact.nomad-digitalocean.id}" servers = "${module.servers.addrs}" ssh_keys = "${var.ssh_keys}" } -*/ output "cluster-info" { value = "Nomad Servers: ${join(" ", split(",", module.servers.addrs))}" diff --git a/demo/digitalocean/terraform/server/main.tf b/demo/digitalocean/terraform/server/main.tf index 37a0e2aed..55b92c86a 100644 --- a/demo/digitalocean/terraform/server/main.tf +++ b/demo/digitalocean/terraform/server/main.tf @@ -1,6 +1,6 @@ variable "image" {} variable "region" {} -variable "size" { default = "512mb" } +variable "size" { default = "1gb" } variable "ssh_keys" {} resource "digitalocean_droplet" "server" { From 9dedb7873696d620b25d784ded5d698c63f937ee Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Thu, 24 Sep 2015 11:59:10 -0700 Subject: [PATCH 24/31] demo/digitalocean: move nomad packer into sub-dir --- demo/digitalocean/packer/{ => nomad}/default.hcl | 0 demo/digitalocean/packer/{ => nomad}/packer.json | 0 demo/digitalocean/packer/{ => nomad}/upstart.nomad | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename demo/digitalocean/packer/{ => nomad}/default.hcl (100%) rename demo/digitalocean/packer/{ => nomad}/packer.json (100%) rename demo/digitalocean/packer/{ => nomad}/upstart.nomad (100%) diff --git a/demo/digitalocean/packer/default.hcl b/demo/digitalocean/packer/nomad/default.hcl similarity index 100% rename from demo/digitalocean/packer/default.hcl rename to demo/digitalocean/packer/nomad/default.hcl diff --git a/demo/digitalocean/packer/packer.json b/demo/digitalocean/packer/nomad/packer.json similarity index 100% rename from demo/digitalocean/packer/packer.json rename to demo/digitalocean/packer/nomad/packer.json diff --git a/demo/digitalocean/packer/upstart.nomad b/demo/digitalocean/packer/nomad/upstart.nomad similarity index 100% rename from demo/digitalocean/packer/upstart.nomad rename to demo/digitalocean/packer/nomad/upstart.nomad From ca2f1aebe9baae3f12bfefb62c71502cd2bee07e Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Thu, 24 Sep 2015 12:03:28 -0700 Subject: [PATCH 25/31] demo/digitalocean: add statsite --- .../digitalocean/packer/statsite/default.conf | 2 + demo/digitalocean/packer/statsite/packer.json | 50 +++++++++++++++++++ .../packer/statsite/upstart.statsite | 10 ++++ 3 files changed, 62 insertions(+) create mode 100644 demo/digitalocean/packer/statsite/default.conf create mode 100644 demo/digitalocean/packer/statsite/packer.json create mode 100644 demo/digitalocean/packer/statsite/upstart.statsite diff --git a/demo/digitalocean/packer/statsite/default.conf b/demo/digitalocean/packer/statsite/default.conf new file mode 100644 index 000000000..c463054e3 --- /dev/null +++ b/demo/digitalocean/packer/statsite/default.conf @@ -0,0 +1,2 @@ +[statsite] +stream_cmd = cat >> /opt/statsite.out diff --git a/demo/digitalocean/packer/statsite/packer.json b/demo/digitalocean/packer/statsite/packer.json new file mode 100644 index 000000000..cc60336b5 --- /dev/null +++ b/demo/digitalocean/packer/statsite/packer.json @@ -0,0 +1,50 @@ +{ + "variables": { + "bin_url": "{{ env `STATSITE_URL` }}" + }, + "builders": [ + { + "type": "digitalocean", + "image": "ubuntu-12-04-x64", + "region": "nyc3", + "size": "512mb", + "snapshot_name": "nomad-{{timestamp}}" + } + ], + "provisioners": [ + { + "type": "shell", + "inline": [ + "sudo apt-get -y update", + "sudo apt-get -y install unzip build-essential scons", + "curl -o /tmp/statsite.zip -L {{ user `bin_url` }}", + "mkdir -p /tmp/statsite", + "unzip -d /tmp/statsite /tmp/statsite.zip", + "cd /tmp/statsite/* && make", + "mv /tmp/statsite/*/statsite /usr/local/bin", + "rm -rf /tmp/statsite" + ] + }, + { + "type": "file", + "source": "upstart.statsite", + "destination": "/etc/init/statsite.conf" + }, + { + "type": "file", + "source": "default.conf", + "destination": "/usr/local/etc/statsite.conf" + } + ], + "post-processors": [ + { + "type": "atlas", + "artifact": "hashicorp/noad-demo-statsite", + "artifact_type": "digitalocean.image" + } + ], + "push": { + "name": "hashicorp/nomad-demo-statsite", + "vcs": true + } +} diff --git a/demo/digitalocean/packer/statsite/upstart.statsite b/demo/digitalocean/packer/statsite/upstart.statsite new file mode 100644 index 000000000..8ab0673fc --- /dev/null +++ b/demo/digitalocean/packer/statsite/upstart.statsite @@ -0,0 +1,10 @@ +description "Statsite" + +start on runlevel [2345] +stop on runlevel [!2345] + +respawn + +script + exec /usr/local/bin/statsite -f /usr/local/etc/statsite.conf >> /var/log/statsite.log 2>&1 +end script From c8441255d34e1f0da666940e8a8a1532d32d24eb Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Thu, 24 Sep 2015 12:15:34 -0700 Subject: [PATCH 26/31] demo/digitalocean: packer updates --- demo/digitalocean/packer/nomad/packer.json | 2 +- demo/digitalocean/packer/statsite/packer.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/demo/digitalocean/packer/nomad/packer.json b/demo/digitalocean/packer/nomad/packer.json index 49c1d961f..bff06bad4 100644 --- a/demo/digitalocean/packer/nomad/packer.json +++ b/demo/digitalocean/packer/nomad/packer.json @@ -8,7 +8,7 @@ "image": "ubuntu-12-04-x64", "region": "nyc3", "size": "512mb", - "snapshot_name": "nomad-{{timestamp}}" + "snapshot_name": "nomad-demo-{{timestamp}}" } ], "provisioners": [ diff --git a/demo/digitalocean/packer/statsite/packer.json b/demo/digitalocean/packer/statsite/packer.json index cc60336b5..6dcb179d3 100644 --- a/demo/digitalocean/packer/statsite/packer.json +++ b/demo/digitalocean/packer/statsite/packer.json @@ -8,7 +8,7 @@ "image": "ubuntu-12-04-x64", "region": "nyc3", "size": "512mb", - "snapshot_name": "nomad-{{timestamp}}" + "snapshot_name": "nomad-demo-statsite-{{timestamp}}" } ], "provisioners": [ From 5e0dec2888ca05157825e692ea71c57eb2261910 Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Thu, 24 Sep 2015 12:26:17 -0700 Subject: [PATCH 27/31] demo/digitalocean: add statsite for servers --- demo/digitalocean/terraform/main.tf | 7 ++++++ demo/digitalocean/terraform/server/main.tf | 4 +++ demo/digitalocean/terraform/statsite/main.tf | 26 ++++++++++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 demo/digitalocean/terraform/statsite/main.tf diff --git a/demo/digitalocean/terraform/main.tf b/demo/digitalocean/terraform/main.tf index 6136ff831..b2a5d0558 100644 --- a/demo/digitalocean/terraform/main.tf +++ b/demo/digitalocean/terraform/main.tf @@ -6,11 +6,18 @@ resource "atlas_artifact" "nomad-digitalocean" { version = "latest" } +module "statsite" { + source = "./statsite" + region = "nyc3" + ssh_keys = "${var.ssh_keys}" +} + module "servers" { source = "./server" region = "nyc3" image = "${atlas_artifact.nomad-digitalocean.id}" ssh_keys = "${var.ssh_keys}" + statsite = "${module.statsite.addr}" } module "clients-nyc3" { diff --git a/demo/digitalocean/terraform/server/main.tf b/demo/digitalocean/terraform/server/main.tf index 55b92c86a..26162f2f6 100644 --- a/demo/digitalocean/terraform/server/main.tf +++ b/demo/digitalocean/terraform/server/main.tf @@ -2,6 +2,7 @@ variable "image" {} variable "region" {} variable "size" { default = "1gb" } variable "ssh_keys" {} +variable "statsite" {} resource "digitalocean_droplet" "server" { image = "${var.image}" @@ -23,6 +24,9 @@ advertise { rpc = "${self.ipv4_address}:4647" serf = "${self.ipv4_address}:4648" } +telemetry { + statsite_address = "${var.statsite}" +} EOF CMD } diff --git a/demo/digitalocean/terraform/statsite/main.tf b/demo/digitalocean/terraform/statsite/main.tf new file mode 100644 index 000000000..bc59c61b8 --- /dev/null +++ b/demo/digitalocean/terraform/statsite/main.tf @@ -0,0 +1,26 @@ +variable "size" { default = "1gb" } +variable "region" {} +variable "ssh_keys" {} + +resource "atlas_artifact" "statsite-digitalocean" { + name = "hashicorp/nomad-demo-statsite" + type = "digitalocean.image" + version = "latest" +} + +resource "digitalocean_droplet" "statsite" { + image = "${atlas_artifact.statsite-digitalocean.id}" + name = "statsite-${var.region}-${count.index}" + count = 1 + size = "${var.size}" + region = "${var.region}" + ssh_keys = ["${split(",", var.ssh_keys)}"] + + provisioner "remote-exec" { + inline = "sudo start statsite || true" + } +} + +output "addr" { + value = "${digitalocean_droplet.statsite.ipv4_address}:8125" +} From 2974d70b9e8355461ea0981196e5b94063e11d3e Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Thu, 24 Sep 2015 12:31:06 -0700 Subject: [PATCH 28/31] demo/digitalocean: fix artifact name --- demo/digitalocean/packer/statsite/packer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/digitalocean/packer/statsite/packer.json b/demo/digitalocean/packer/statsite/packer.json index 6dcb179d3..b80702938 100644 --- a/demo/digitalocean/packer/statsite/packer.json +++ b/demo/digitalocean/packer/statsite/packer.json @@ -39,7 +39,7 @@ "post-processors": [ { "type": "atlas", - "artifact": "hashicorp/noad-demo-statsite", + "artifact": "hashicorp/nomad-demo-statsite", "artifact_type": "digitalocean.image" } ], From 07908eac048a4a39c5fd625732c53a81a7a5a1b7 Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Thu, 24 Sep 2015 12:35:35 -0700 Subject: [PATCH 29/31] demo/digitalocean: prefix statsite droplets --- demo/digitalocean/terraform/statsite/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo/digitalocean/terraform/statsite/main.tf b/demo/digitalocean/terraform/statsite/main.tf index bc59c61b8..e768021a7 100644 --- a/demo/digitalocean/terraform/statsite/main.tf +++ b/demo/digitalocean/terraform/statsite/main.tf @@ -10,7 +10,7 @@ resource "atlas_artifact" "statsite-digitalocean" { resource "digitalocean_droplet" "statsite" { image = "${atlas_artifact.statsite-digitalocean.id}" - name = "statsite-${var.region}-${count.index}" + name = "nomad-statsite-${var.region}-${count.index}" count = 1 size = "${var.size}" region = "${var.region}" From 83d2adeaff558e82645befee91b948248dfc74a8 Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Thu, 24 Sep 2015 13:19:48 -0700 Subject: [PATCH 30/31] demo/digitalocean: install docker --- demo/digitalocean/packer/nomad/packer.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/demo/digitalocean/packer/nomad/packer.json b/demo/digitalocean/packer/nomad/packer.json index bff06bad4..4ec078d6c 100644 --- a/demo/digitalocean/packer/nomad/packer.json +++ b/demo/digitalocean/packer/nomad/packer.json @@ -19,7 +19,9 @@ "sudo apt-get -y install unzip", "curl -o /tmp/nomad.zip -L {{ user `bin_url` }}", "sudo unzip -d /usr/local/bin /tmp/nomad.zip", - "mkdir -p /usr/local/etc/nomad" + "mkdir -p /usr/local/etc/nomad", + "curl -s https://get.docker.com/gpg | sudo apt-key add -", + "curl -s https://get.docker.com/ | sudo sh" ] }, { From 51f33197350e0776fef43c220a7de9edc6de5bf7 Mon Sep 17 00:00:00 2001 From: Ryan Uber Date: Thu, 24 Sep 2015 14:15:12 -0700 Subject: [PATCH 31/31] demo/digitalocean: output statsite addr --- demo/digitalocean/terraform/main.tf | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/demo/digitalocean/terraform/main.tf b/demo/digitalocean/terraform/main.tf index b2a5d0558..9b9b02e75 100644 --- a/demo/digitalocean/terraform/main.tf +++ b/demo/digitalocean/terraform/main.tf @@ -56,6 +56,10 @@ module "clients-sfo1" { ssh_keys = "${var.ssh_keys}" } -output "cluster-info" { - value = "Nomad Servers: ${join(" ", split(",", module.servers.addrs))}" +output "Nomad Servers" { + value = "${join(" ", split(",", module.servers.addrs))}" +} + +output "Statsite Server" { + value = "${module.statsite.addr}" }