diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..222d1ef --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,12 @@ +{ + "name": "Ubuntu", + "image": "mcr.microsoft.com/devcontainers/base:jammy", + "postCreateCommand": "sudo apt update && sudo apt install -y wget gpg coreutils && wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg && echo \"deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main\" | sudo tee /etc/apt/sources.list.d/hashicorp.list && sudo apt update && sudo apt install -y terraform nomad", + "customizations": { + "vscode": { + "extensions": [ + "HashiCorp.terraform" + ] + } + } +} diff --git a/main.tf b/main.tf index ba724b0..b734fd3 100644 --- a/main.tf +++ b/main.tf @@ -9,3 +9,7 @@ module "dummy" { module "media-centre" { source = "./modules/media-centre" } + +module "code-server" { + source = "./modules/code-server" +} diff --git a/modules/code-server/jobspec.json b/modules/code-server/jobspec.json new file mode 100644 index 0000000..6fd040f --- /dev/null +++ b/modules/code-server/jobspec.json @@ -0,0 +1,54 @@ +{ + "Job": { + "ID": "code-server", + "Name": "Code Server", + "TaskGroups": [ + { + "Name": "Code Server", + "Tasks": [ + { + "Driver": "docker", + "Name": "Code Server", + "Count": 1, + "Config": { + "image": "codercom/code-server:latest", + "ports": [ + "web" + ], + "volumes": [ + ".local:/home/coder/.local", + ".config:/home/coder/.config" + ] + }, + "Resources": { + "CPU": 1000, + "MemoryMB": 1024 + } + } + ], + "Services": [ + { + "Name": "code-server", + "Provider": "nomad", + "PortLabel": "web", + "Tags": [ + "traefik.enable=true", + "traefik.http.routers.code-server.entrypoints=websecure", + "traefik.http.routers.code-server.rule=Host(`code.brmartin.co.uk`)" + ] + } + ], + "Networks": [ + { + "DynamicPorts": [ + { + "Label": "web", + "To": 8080 + } + ] + } + ] + } + ] + } +} \ No newline at end of file diff --git a/modules/code-server/main.tf b/modules/code-server/main.tf new file mode 100644 index 0000000..f285e4d --- /dev/null +++ b/modules/code-server/main.tf @@ -0,0 +1,4 @@ +resource "nomad_job" "media-centre" { + jobspec = file("${path.module}/jobspec.json") + json = true +}