diff --git a/README.md b/README.md index ad7d3cc..7d5e727 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ provider "nomad" { DNS server which could be used to resolve nomad services into dns records * [Documentation](https://coredns.io/) - * [Terraform Example](examples/coredns.tf) + * [Terraform Example](_examples/coredns.tf) * [Nomad Job](coredns/nomad/coredns.hcl) TODO: @@ -36,7 +36,7 @@ TODO: grafana is a database server * [Documentation](https://grafana.com/docs/grafana/latest/) - * [Terraform Example](examples/grafana.tf) + * [Terraform Example](_examples/grafana.tf) * [Nomad Job](grafana/nomad/grafana.hcl) TODO: @@ -50,7 +50,7 @@ TODO: Time-series database, which can be placed on several nodes * [Documentation](https://docs.influxdata.com/influxdb/v2/) - * [Terraform Example](examples/influxdb.tf) + * [Terraform Example](_examples/influxdb.tf) * [Nomad Job](influxdb/nomad/influxdb.hcl) TODO: @@ -61,7 +61,7 @@ TODO: MQTT broker, which can be placed on several nodes * [Documentation](https://mosquitto.org/) - * [Terraform Example](examples/mosquitto.tf) + * [Terraform Example](_examples/mosquitto.tf) * [Nomad Job](mosquitto/nomad/mosquitto.hcl) TODO: @@ -72,7 +72,7 @@ TODO: Web server and reverse proxy, which can be placed on several nodes * [Documentation](https://nginx.org/en/) - * [Terraform Example](examples/nginx.tf) + * [Terraform Example](_examples/nginx.tf) * [Nomad Job](nginx/nomad/nginx.hcl) TODO: @@ -85,7 +85,7 @@ TODO: OpenLDAP server, which can be placed on several nodes * [Documentation](https://www.openldap.org/) - * [Terraform Example](examples/openldap.tf) + * [Terraform Example](_examples/openldap.tf) * [Nomad Job](openldap/nomad/openldap.hcl) TODO: @@ -99,7 +99,7 @@ TODO: PostgreSQL is a database server * [Documentation](https://www.postgresql.org/) - * [Terraform Example](examples/postgresql.tf) + * [Terraform Example](_examples/postgresql.tf) * [Nomad Job](postgresql/nomad/postgresql.hcl) TODO: @@ -110,7 +110,7 @@ TODO: Cluster filesystem, which can be spread across multiple nodes. * [Documentation](https://github.com/seaweedfs/seaweedfs) - * [Terraform Example](examples/seaweedfs.tf) + * [Terraform Example](_examples/seaweedfs.tf) * [Nomad Job](seaweedfs/nomad/seaweedfs.hcl) TODO: @@ -122,7 +122,7 @@ TODO: Semaphore is a Ansible front-end * [Documentation](https://www.semui.co/) - * [Terraform Example](examples/semaphore.tf) + * [Terraform Example](_examples/semaphore.tf) * [Nomad Job](semaphore/nomad/semaphore.hcl) TODO: @@ -134,7 +134,7 @@ TODO: Time-series metrics collector, which can be placed on several nodes * [Documentation](https://docs.influxdata.com/telegraf/v1/) - * [Terraform Example](examples/telegraf.tf) + * [Terraform Example](_examples/telegraf.tf) * [Nomad Job](telegraf/nomad/telegraf.hcl) When setting up your configuration with inputs and outputs, each value needs diff --git a/_examples/influxdb.tf b/_examples/influxdb.tf index b44657d..e4a4945 100644 --- a/_examples/influxdb.tf +++ b/_examples/influxdb.tf @@ -1,7 +1,7 @@ // Example InfluxDB time-series database module "influxdb" { - source = "github.com/mutablelogic/tf-nomad/influxdb" + source = "github.com/mutablelogic/tf-nomad//influxdb" // Required parameters dc = "datacenter" // Nomad datacenter for the cluster diff --git a/_examples/mosquitto.tf b/_examples/mosquitto.tf index 327700b..6b5ef91 100644 --- a/_examples/mosquitto.tf +++ b/_examples/mosquitto.tf @@ -1,7 +1,7 @@ // Example MQTT broker, using the eclipse-mosquitto docker image module "mqtt" { - source = "github.com/mutablelogic/tf-nomad/mosquitto" + source = "github.com/mutablelogic/tf-nomad//mosquitto" // Required parameters dc = "datacenter" // Nomad datacenter for the cluster diff --git a/_examples/nginx.tf b/_examples/nginx.tf index e063f3f..227972d 100644 --- a/_examples/nginx.tf +++ b/_examples/nginx.tf @@ -1,7 +1,7 @@ // Example nginx reverse proxy module module "nginx" { - source = "github.com/mutablelogic/tf-nomad/nginx" + source = "github.com/mutablelogic/tf-nomad//nginx" // Required parameters dc = "datacenter" // Nomad datacenter for the cluster diff --git a/_examples/openldap.tf b/_examples/openldap.tf index 9ff055b..9afaf71 100644 --- a/_examples/openldap.tf +++ b/_examples/openldap.tf @@ -1,7 +1,7 @@ // Example LDAP server, using the bitnami/openldap docker image module "openldap" { - source = "github.com/mutablelogic/tf-nomad/openldap" + source = "github.com/mutablelogic/tf-nomad//openldap" // Required parameters dc = "datacenter" // Nomad datacenter for the cluster diff --git a/_examples/postgresql.tf b/_examples/postgresql.tf index 250d095..0485f6a 100644 --- a/_examples/postgresql.tf +++ b/_examples/postgresql.tf @@ -1,6 +1,6 @@ module "postgresql" { - source = "github.com/mutablelogic/tf-nomad/postgresql" + source = "github.com/mutablelogic/tf-nomad//postgresql" // Required parameters dc = local.datacenter // Nomad datacenter for the cluster diff --git a/_examples/seaweedfs.tf b/_examples/seaweedfs.tf index e826b50..6552563 100644 --- a/_examples/seaweedfs.tf +++ b/_examples/seaweedfs.tf @@ -1,7 +1,7 @@ // Example Cluster filesystem using seaweedfs, with one master, two volumes and three filers module "clusterfs" { - source = "github.com/mutablelogic/tf-nomad/seaweedfs" + source = "github.com/mutablelogic/tf-nomad//seaweedfs" enabled = true // If false, no-op dc = "datacenter" // Nomad datacenter for the cluster namespace = "clusterfs" // Nomad namespace for the cluster diff --git a/_examples/telegraf.tf b/_examples/telegraf.tf index 2088fd8..6fc2854 100644 --- a/_examples/telegraf.tf +++ b/_examples/telegraf.tf @@ -1,7 +1,7 @@ // Example telegraf time-series metrics collector module "telegraf" { - source = "github.com/mutablelogic/tf-nomad/telegraf" + source = "github.com/mutablelogic/tf-nomad//telegraf" // Required parameters dc = local.datacenter // Nomad datacenter for the cluster diff --git a/coredns/input.tf b/coredns/input.tf index 5183520..d9c9b44 100644 --- a/coredns/input.tf +++ b/coredns/input.tf @@ -22,6 +22,24 @@ variable "docker_tag" { default = "v1.11.1" } +variable "service_provider" { + description = "Service provider, either consul or nomad" + type = string + default = "nomad" +} + +variable "service_name" { + description = "Service name" + type = string + default = "coredns-dns" +} + +variable "service_dns" { + description = "Service discovery DNS" + type = list(string) + default = [] +} + variable "hosts" { type = list(string) description = "List of hosts to deploy on. If empty, one allocation will be created" diff --git a/coredns/main.tf b/coredns/main.tf index c9084c8..b4dfb4f 100644 --- a/coredns/main.tf +++ b/coredns/main.tf @@ -10,6 +10,9 @@ resource "nomad_job" "coredns" { namespace = var.namespace docker_image = local.docker_image docker_always_pull = jsonencode(local.docker_always_pull) + service_provider = var.service_provider + service_name = var.service_name + service_dns = jsonencode(var.service_dns) hosts = jsonencode(var.hosts) port = var.port corefile = file("${path.module}/config/Corefile") diff --git a/coredns/nomad/coredns.hcl b/coredns/nomad/coredns.hcl index 3bc588d..7a1655c 100644 --- a/coredns/nomad/coredns.hcl +++ b/coredns/nomad/coredns.hcl @@ -28,6 +28,24 @@ variable "service_provider" { default = "nomad" } +variable "service_name" { + description = "Service name" + type = string + default = "coredns-dns" +} + +variable "service_dns" { + description = "Service discovery DNS" + type = list(string) + default = [] +} + +variable "dns_servers" { + description = "Task DNS servers" + type = list(string) + default = [] +} + variable "docker_image" { description = "Docker image" type = string @@ -117,7 +135,7 @@ job "coredns" { service { tags = ["dns"] - name = "coredns-dns" + name = var.service_name port = "dns" provider = var.service_provider } @@ -142,10 +160,11 @@ job "coredns" { } config { - image = var.docker_image - force_pull = var.docker_always_pull - ports = ["dns"] - args = ["coredns", "-conf", local.core_file] + image = var.docker_image + force_pull = var.docker_always_pull + ports = ["dns"] + args = ["coredns", "-conf", local.core_file] + dns_servers = var.service_dns } } // task "daemon" diff --git a/openldap/input.tf b/openldap/input.tf index 08a734c..991c792 100644 --- a/openldap/input.tf +++ b/openldap/input.tf @@ -16,6 +16,24 @@ variable "enabled" { default = true } +variable "service_provider" { + description = "Service provider, either consul or nomad" + type = string + default = "nomad" +} + +variable "service_name" { + description = "Service name" + type = string + default = "openldap-ldap" +} + +variable "service_dns" { + description = "Service discovery DNS" + type = list(string) + default = [] +} + variable "docker_tag" { type = string description = "Version of the docker image to use, defaults to latest" diff --git a/openldap/main.tf b/openldap/main.tf index 9e28710..d8b6c2a 100644 --- a/openldap/main.tf +++ b/openldap/main.tf @@ -10,6 +10,9 @@ resource "nomad_job" "ldap" { namespace = var.namespace docker_image = local.docker_image docker_always_pull = jsonencode(local.docker_always_pull) + service_provider = var.service_provider + service_name = var.service_name + service_dns = jsonencode(var.service_dns) hosts = jsonencode(var.hosts) port = var.port data = var.data diff --git a/openldap/nomad/openldap.hcl b/openldap/nomad/openldap.hcl index b4a91d8..d4ff838 100644 --- a/openldap/nomad/openldap.hcl +++ b/openldap/nomad/openldap.hcl @@ -28,6 +28,18 @@ variable "service_provider" { default = "nomad" } +variable "service_name" { + description = "Service name" + type = string + default = "openldap-ldap" +} + +variable "service_dns" { + description = "Service discovery DNS" + type = list(string) + default = [] +} + variable "docker_image" { description = "Docker image" type = string @@ -126,10 +138,10 @@ job "openldap" { } service { - tags = ["ldap"] - name = "ldap" - port = "ldap" + tags = ["openldap", "ldap"] + name = var.service_name provider = var.service_provider + port = "ldap" } ephemeral_disk { @@ -184,7 +196,8 @@ job "openldap" { volumes = compact([ var.data == "" ? "" : format("%s:/bitnami/openldap/", var.data), ]) - ports = ["ldap"] + ports = ["ldap"] + dns_servers = var.service_dns } } // task "daemon"