Skip to content

mutablelogic/tf-nomad

Repository files navigation

tf-nomad

Terraform modules for nomad clusters. In order to use these modules, please use the following provider block:

provider "nomad" {
  address   = env.NOMAD_ADDR
  region    = env.NOMAD_REGION
  secret_id = env.NOMAD_TOKEN
}

coredns

DNS server which could be used to resolve nomad services into dns records

TODO:

  • All nomad jobs will need to use the coredns service as a dns_server option

github-action-runner

GitHub action runner, which can be placed on several nodes

TODO:

  • Remove runner from github when job is removed

grafana

grafana is a database server

TODO:

  • LDAP integration
  • Add TLS support
  • Data source provisioning
  • Dashboard provisioning

InfluxDB

Time-series database, which can be placed on several nodes

TODO:

  • Add TLS support

mongodb

Document database, which can be replicated on several nodes

TODO:

  • Add TLS support

mosquitto

MQTT broker, which can be placed on several nodes

TODO:

  • Add TLS support

nginx

Web server and reverse proxy, which can be placed on several nodes

TODO:

  • In progress
  • Add TLS certificate support
  • Not sure how we can integrate with nomad services

OpenLDAP

OpenLDAP server, which can be placed on several nodes

TODO:

  • In progress
  • Add TLS support
  • Add replication support
  • Add custom schema support

OpenLDAP Administation

OpenLDAP administration, for adding users and groups, and changing passwords

TODO:

  • In progress
  • Add TLS support
  • Add replication support
  • Add custom schema support

PostgreSQL

PostgreSQL is a database server

TODO:

  • Add TLS support
  • Add SNMP support

seaweedfs

Cluster filesystem, which can be spread across multiple nodes.

TODO:

  • In progress
  • A lot of testing is needed

semaphore

Semaphore is a Ansible front-end

TODO:

  • In progress
  • LDAP integration

telegraf

Time-series metrics collector, which can be placed on several nodes

When setting up your configuration with inputs and outputs, each value needs to be JSON encoded, so that the configuration can be passed as a map of strings, as Terraform does not support maps of more than one type. See the terraform example above for a demonstration of this.

TODO:

  • Add processors support