From b1756e86bd4f3f69a80a80f542f508b276612c83 Mon Sep 17 00:00:00 2001 From: Louis Lombardo Date: Fri, 17 Sep 2021 01:25:52 +0000 Subject: [PATCH 1/2] nomad clients and servers now export prometheus data --- shared/config/nomad.hcl | 8 ++++++++ shared/config/nomad_client.hcl | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/shared/config/nomad.hcl b/shared/config/nomad.hcl index f76aeb0..7aa866a 100644 --- a/shared/config/nomad.hcl +++ b/shared/config/nomad.hcl @@ -24,4 +24,12 @@ plugin "raw_exec" { config { enabled = true } +} + +telemetry { + collection_interval = "1s" + disable_hostname = true + prometheus_metrics = true + publish_allocation_metrics = true + publish_node_metrics = true } \ No newline at end of file diff --git a/shared/config/nomad_client.hcl b/shared/config/nomad_client.hcl index 987aef5..fe0ee00 100644 --- a/shared/config/nomad_client.hcl +++ b/shared/config/nomad_client.hcl @@ -20,3 +20,11 @@ vault { enabled = true address = "http://active.vault.service.consul:8200" } + +telemetry { + collection_interval = "1s" + disable_hostname = true + prometheus_metrics = true + publish_allocation_metrics = true + publish_node_metrics = true +} \ No newline at end of file From aa2275895b0e43795f3060f14d441ecb5a929421 Mon Sep 17 00:00:00 2001 From: Louis Lombardo Date: Fri, 17 Sep 2021 02:29:25 +0000 Subject: [PATCH 2/2] basic modules setup --- cluster/main.tf | 6 ++-- cluster/outputs.tf | 5 +++ cluster/variables.tf | 4 +++ image/main.tf | 48 +++++++++++++++++++++++++ image/{ => packer}/build.pkr.hcl | 0 image/{ => packer}/variables.pkr.hcl | 0 image/variables.tf | 10 ++++++ main.tf | 53 ++++++++++++++++++++++++++++ 8 files changed, 123 insertions(+), 3 deletions(-) create mode 100644 image/main.tf rename image/{ => packer}/build.pkr.hcl (100%) rename image/{ => packer}/variables.pkr.hcl (100%) create mode 100644 image/variables.tf create mode 100644 main.tf diff --git a/cluster/main.tf b/cluster/main.tf index 7474395..1cc4846 100644 --- a/cluster/main.tf +++ b/cluster/main.tf @@ -62,7 +62,7 @@ resource "digitalocean_ssh_key" "default" { resource "digitalocean_droplet" "nomad_server" { count = var.nomad_servers_count - image = data.digitalocean_images.cluster_server.images[0].id + image = var.snapshot # Consul members name must be unique name = "nomad-cluster-server-${count.index}" region = var.do_region @@ -78,7 +78,7 @@ resource "digitalocean_droplet" "nomad_server" { resource "digitalocean_droplet" "nomad_client" { count = var.nomad_clients_count - image = data.digitalocean_images.cluster_server.images[0].id + image = var.snapshot # Consul members name must be unique name = "nomad-cluster-general-client-${count.index}" region = var.do_region @@ -93,7 +93,7 @@ resource "digitalocean_droplet" "nomad_client" { } resource "digitalocean_droplet" "ingress_client" { - image = data.digitalocean_images.cluster_server.images[0].id + image = var.snapshot # Consul members name must be unique name = "nomad-cluster-ingress" region = var.do_region diff --git a/cluster/outputs.tf b/cluster/outputs.tf index 9f6db09..9ef5b58 100644 --- a/cluster/outputs.tf +++ b/cluster/outputs.tf @@ -7,6 +7,11 @@ output "server_droplet_ips" { value = join(",", digitalocean_droplet.nomad_server[*].ipv4_address) } +output "nomad_address" { + // This makes the provider definition a bit simpiler + value = "http://${digitalocean_droplet.nomad_server[0].ipv4_address}:4646" +} + output "ingress_droplet_ip" { value = digitalocean_droplet.ingress_client.ipv4_address } diff --git a/cluster/variables.tf b/cluster/variables.tf index b59a067..65c9610 100644 --- a/cluster/variables.tf +++ b/cluster/variables.tf @@ -2,6 +2,10 @@ variable "do_token" { type = string } +variable "snapshot" { + type = string +} + variable "do_region" { type = string default = "lon1" diff --git a/image/main.tf b/image/main.tf new file mode 100644 index 0000000..9a3aa44 --- /dev/null +++ b/image/main.tf @@ -0,0 +1,48 @@ +terraform { + required_providers { + digitalocean = { + source = "digitalocean/digitalocean" + version = "2.8.0" + } + } +} + + +locals { + build_image = var.image == "" + image = local.build_image ? data.digitalocean_image.built[0] : data.digitalocean_image.existing[0] +} + +resource "random_pet" "name" { + count = local.build_image ? 1 : 0 +} + +resource "null_resource" "packer_build" { + count = local.build_image ? 1 : 0 + + provisioner "local-exec" { + command = <