diff --git a/main.tf b/main.tf index 53a08dc..852f424 100644 --- a/main.tf +++ b/main.tf @@ -10,6 +10,10 @@ module "media-centre" { source = "./modules/media-centre" } +module "coder" { + source = "./modules/coder" +} + module "uptime" { source = "./modules/uptime" } diff --git a/modules/coder/jobspec.json b/modules/coder/jobspec.json new file mode 100644 index 0000000..1e5ee0a --- /dev/null +++ b/modules/coder/jobspec.json @@ -0,0 +1,115 @@ +{ + "ID": "coder", + "Name": "Coder", + "TaskGroups": [ + { + "Name": "Coder", + "Tasks": [ + { + "Driver": "docker", + "Name": "coder", + "Count": 1, + "Config": { + "image": "ghcr.io/coder/coder:latest", + "ports": [ + "web" + ], + "volumes": [ + "/var/run/docker.sock:/var/run/docker.sock" + ], + "group_add": [ + "998" + ], + "logging": { + "type": "elastic/elastic-logging-plugin:8.14.3", + "config": [ + { + "hosts": "http://localhost:9200", + "user": "docker_writer", + "password": "oi*YWZSP_Ukd0y+pQ7EB" + } + ] + } + }, + "Env": { + "CODER_PG_CONNECTION_URL": "postgresql://coder:reu2zeeth9BeeWai9ohl1tierea6ooze@${NOMAD_ADDR_database}/coder?sslmode=disable", + "CODER_HTTP_ADDRESS": "0.0.0.0:7080", + "CODER_ACCESS_URL": "https://coder.brmartin.co.uk" + }, + "Resources": { + "CPU": 1000, + "MemoryMB": 1024 + } + }, + { + "Driver": "docker", + "Name": "database", + "Count": 1, + "Lifecycle": { + "Hook": "prestart", + "Sidecar": true + }, + "Config": { + "image": "postgres:16", + "ports": [ + "database" + ], + "mounts": [ + { + "type": "volume", + "target": "/var/lib/postgresql/data", + "source": "coder-data" + } + ], + "logging": { + "type": "elastic/elastic-logging-plugin:8.14.3", + "config": [ + { + "hosts": "http://localhost:9200", + "user": "docker_writer", + "password": "oi*YWZSP_Ukd0y+pQ7EB" + } + ] + } + }, + "Env": { + "POSTGRES_USER": "coder", + "POSTGRES_PASSWORD": "reu2zeeth9BeeWai9ohl1tierea6ooze", + "POSTGRES_DB": "coder" + } + } + ], + "Services": [ + { + "Name": "coder", + "Provider": "nomad", + "PortLabel": "web", + "Tags": [ + "traefik.enable=true", + "traefik.http.routers.coder.entrypoints=websecure", + "traefik.http.routers.coder.rule=Host(`coder.brmartin.co.uk`)" + ] + }, + { + "Name": "database", + "Provider": "nomad", + "PortLabel": "database" + } + ], + "Networks": [ + { + "DynamicPorts": [ + { + "Label": "web", + "To": 7080 + }, + { + "Label": "database", + "To": 5432 + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/modules/coder/main.tf b/modules/coder/main.tf new file mode 100644 index 0000000..f285e4d --- /dev/null +++ b/modules/coder/main.tf @@ -0,0 +1,4 @@ +resource "nomad_job" "media-centre" { + jobspec = file("${path.module}/jobspec.json") + json = true +}