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 = <