terraform { required_providers { coder = { source = "coder/coder" } nomad = { source = "hashicorp/nomad" } } } variable "nomad_provider_address" { type = string description = "Nomad provider address. e.g., http://IP:PORT" default = "http://localhost:4646" } variable "nomad_provider_http_auth" { type = string description = "Nomad provider http_auth in the form of `user:password`" sensitive = true default = "" } provider "coder" {} provider "nomad" { address = var.nomad_provider_address http_auth = var.nomad_provider_http_auth == "" ? null : var.nomad_provider_http_auth # Fix reading the NOMAD_NAMESPACE and the NOMAD_REGION env var from the coder's allocation. ignore_env_vars = { "NOMAD_NAMESPACE" = true "NOMAD_REGION" = true } } data "coder_parameter" "cpu" { name = "cpu" display_name = "CPU" description = "The number of CPU cores" default = "1" icon = "/icon/memory.svg" mutable = true option { name = "1 Cores" value = "1" } option { name = "2 Cores" value = "2" } option { name = "3 Cores" value = "3" } option { name = "4 Cores" value = "4" } } data "coder_parameter" "memory" { name = "memory" display_name = "Memory" description = "The amount of memory in GB" default = "2" icon = "/icon/memory.svg" mutable = true option { name = "2 GB" value = "2" } option { name = "4 GB" value = "4" } option { name = "6 GB" value = "6" } option { name = "8 GB" value = "8" } } data "coder_workspace" "me" {} data "coder_workspace_owner" "me" {} resource "coder_agent" "main" { os = "linux" arch = "amd64" startup_script = <<-EOT set -e # install and start code-server curl -fsSL https://code-server.dev/install.sh | sh -s -- --method=standalone --prefix=/tmp/code-server /tmp/code-server/bin/code-server --auth none --port 13337 >/tmp/code-server.log 2>&1 & EOT metadata { display_name = "Load Average (Host)" key = "load_host" # get load avg scaled by number of cores script = <