From ef523c46f2ebf36fbfc98efd7d695db58d1a5345 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Wed, 27 Sep 2023 17:42:25 +0300 Subject: [PATCH 1/4] chore: use modules in dofgood --- dogfood/main.tf | 155 +++++++++++++++--------------------------------- 1 file changed, 49 insertions(+), 106 deletions(-) diff --git a/dogfood/main.tf b/dogfood/main.tf index 88b993cd564dd..799f27decfd63 100644 --- a/dogfood/main.tf +++ b/dogfood/main.tf @@ -1,7 +1,7 @@ terraform { required_providers { coder = { - source = "coder/coder" + source = "coder/coder" } docker = { source = "kreuzwerker/docker" @@ -30,14 +30,6 @@ data "coder_parameter" "repo_dir" { mutable = true } -data "coder_parameter" "dotfiles_url" { - type = "string" - name = "Dotfiles URL" - description = "A path to your dotfiles. See: https://dotfiles.github.io" - default = " " - mutable = true -} - data "coder_parameter" "region" { type = "string" name = "Region" @@ -63,42 +55,6 @@ data "coder_parameter" "region" { name = "São Paulo" value = "sa-saopaulo" } - # option { - # icon = "/emojis/1f1eb-1f1f7.png" - # name = "Phorcys' Server in Paris" - # value = "eu-paris" - # } -} - -data "coder_parameter" "jetbrains_ide" { - type = "list(string)" - name = "jetbrains_ide" - display_name = "JetBrains IDE" - icon = "/icon/gateway.svg" - mutable = true - default = jsonencode([ - "GO", - "232.9559.64", - "https://download.jetbrains.com/go/goland-2023.2.1.tar.gz" - ]) - option { - icon = "/icon/goland.svg" - name = "GoLand" - value = jsonencode([ - "GO", - "232.9559.64", - "https://download.jetbrains.com/go/goland-2023.2.1.tar.gz" - ]) - } - option { - icon = "/icon/webstorm.svg" - name = "WebStorm" - value = jsonencode([ - "WS", - "232.9559.54", - "https://download.jetbrains.com/webstorm/WebStorm-2023.2.1.tar.gz" - ]) - } } provider "docker" { @@ -113,6 +69,47 @@ data "coder_git_auth" "github" { data "coder_workspace" "me" {} +module "dotfiles" { + source = "https://registry.coder.com/modules/dotfiles" + agent_id = coder_agent.dev.id +} + +module "git-clone" { + source = "https://registry.coder.com/modules/git-clone" + agent_id = coder_agent.dev.id + url = "https://github.com/coder/coder" + path = data.coder_parameter.repo_dir.value +} + +module "personalize" { + source = "https://registry.coder.com/modules/personalize" + agent_id = coder_agent.dev.id +} + +module "code-server" { + source = "https://registry.coder.com/modules/code-server" + agent_id = coder_agent.dev.id +} + +module "jetbrains_gateway" { + source = "https://registry.coder.com/modules/jetbrains-gateway" + agent_id = coder_agent.dev.id + agent_name = "dev" + project_directory = replace(data.coder_parameter.repo_dir.value, "/^~\\//", "/home/coder/") + jetbrains_ides = ["GO", "WS"] + default = "GO" +} + +module "vscode" { + source = "https://registry.coder.com/modules/vscode-desktop" + agent_id = coder_agent.dev.id +} + +module "filebrowser" { + source = "https://registry.coder.com/modules/filebrowser" + agent_id = coder_agent.dev.id +} + resource "coder_agent" "dev" { arch = "amd64" os = "linux" @@ -125,6 +122,10 @@ resource "coder_agent" "dev" { } startup_script_behavior = "blocking" + display_apps { + vscode = false + } + # The following metadata blocks are optional. They are used to display # information about your workspace in the dashboard. You can remove them # if you don't want to display any information. @@ -201,17 +202,10 @@ resource "coder_agent" "dev" { startup_script_timeout = 60 startup_script = <<-EOT - # Install and launch filebrowser - curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash - filebrowser --noauth --root /home/coder --port 13338 >/tmp/filebrowser.log 2>&1 & + set -eux -o pipefail sudo service docker start - DOTFILES_URI="${data.coder_parameter.dotfiles_url.value}" - rm -f ~/.personalize.log - if [ -n "$${DOTFILES_URI// }" ]; then - coder dotfiles "$DOTFILES_URI" -y 2>&1 | tee -a ~/.personalize.log - fi - + # Automatically authenticate the user if they are not # logged in to another deployment if ! coder list >/dev/null 2>&1; then @@ -219,59 +213,8 @@ resource "coder_agent" "dev" { else echo "You are already authenticated with coder" fi - EOT -} -module "code-server" { - source = "https://registry.coder.com/modules/code-server" - agent_id = coder_agent.dev.id -} - -module "personalize" { - source = "https://registry.coder.com/modules/personalize" - agent_id = coder_agent.dev.id -} - -module "git-clone" { - source = "https://registry.coder.com/modules/git-clone" - agent_id = coder_agent.dev.id - repo = "https://github.com/coder/coder" - path = data.coder_parameter.repo_dir.value -} - -resource "coder_app" "code-server" { - agent_id = coder_agent.dev.id - slug = "code-server" - display_name = "code-server" - url = "http://localhost:13337/?folder=${replace(data.coder_parameter.repo_dir.value, "/^~\\//", "/home/coder/")}" - icon = "/icon/code.svg" - subdomain = false - share = "owner" - - healthcheck { - url = "http://localhost:13337/healthz" - interval = 3 - threshold = 10 - } -} - -resource "coder_app" "filebrowser" { - agent_id = coder_agent.dev.id - display_name = "File Browser" - slug = "filebrowser" - url = "http://localhost:13338" - icon = "https://raw.githubusercontent.com/matifali/logos/main/database.svg" - subdomain = true - share = "owner" -} - -resource "coder_app" "gateway" { - agent_id = coder_agent.dev.id - display_name = data.coder_parameter.jetbrains_ide.option[index(data.coder_parameter.jetbrains_ide.option.*.value, data.coder_parameter.jetbrains_ide.value)].name - slug = "gateway" - url = "jetbrains-gateway://connect#type=coder&workspace=${data.coder_workspace.me.name}&agent=dev&folder=${replace(data.coder_parameter.repo_dir.value, "/^~\\//", "/home/coder/")}&url=${data.coder_workspace.me.access_url}&token=${data.coder_workspace.me.owner_session_token}&ide_product_code=${jsondecode(data.coder_parameter.jetbrains_ide.value)[0]}&ide_build_number=${jsondecode(data.coder_parameter.jetbrains_ide.value)[1]}&ide_download_link=${jsondecode(data.coder_parameter.jetbrains_ide.value)[2]}" - icon = data.coder_parameter.jetbrains_ide.option[index(data.coder_parameter.jetbrains_ide.option.*.value, data.coder_parameter.jetbrains_ide.value)].icon - external = true + EOT } resource "docker_volume" "home_volume" { From 4386327c819fc952ebd50dc394c6ee4f12482049 Mon Sep 17 00:00:00 2001 From: Atif Ali Date: Wed, 27 Sep 2023 15:02:30 +0000 Subject: [PATCH 2/4] fmt --- dogfood/main.tf | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/dogfood/main.tf b/dogfood/main.tf index 799f27decfd63..7344fba310d4d 100644 --- a/dogfood/main.tf +++ b/dogfood/main.tf @@ -1,7 +1,7 @@ terraform { required_providers { coder = { - source = "coder/coder" + source = "coder/coder" } docker = { source = "kreuzwerker/docker" @@ -75,10 +75,10 @@ module "dotfiles" { } module "git-clone" { - source = "https://registry.coder.com/modules/git-clone" + source = "https://registry.coder.com/modules/git-clone" agent_id = coder_agent.dev.id - url = "https://github.com/coder/coder" - path = data.coder_parameter.repo_dir.value + url = "https://github.com/coder/coder" + path = data.coder_parameter.repo_dir.value } module "personalize" { @@ -87,7 +87,7 @@ module "personalize" { } module "code-server" { - source = "https://registry.coder.com/modules/code-server" + source = "https://registry.coder.com/modules/code-server" agent_id = coder_agent.dev.id } @@ -101,7 +101,7 @@ module "jetbrains_gateway" { } module "vscode" { - source = "https://registry.coder.com/modules/vscode-desktop" + source = "https://registry.coder.com/modules/vscode-desktop" agent_id = coder_agent.dev.id } From 53bb89a93ade39fd6ba2cd68bcd63d0375791d1d Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Thu, 28 Sep 2023 16:45:40 +0300 Subject: [PATCH 3/4] open code-server in repo_dir --- dogfood/main.tf | 1 + 1 file changed, 1 insertion(+) diff --git a/dogfood/main.tf b/dogfood/main.tf index 7344fba310d4d..5c02c932bac16 100644 --- a/dogfood/main.tf +++ b/dogfood/main.tf @@ -89,6 +89,7 @@ module "personalize" { module "code-server" { source = "https://registry.coder.com/modules/code-server" agent_id = coder_agent.dev.id + folder = replace(data.coder_parameter.repo_dir.value, "/^~\\//", "/home/coder/") } module "jetbrains_gateway" { From 55d82b6520c49721d32532c187ffd88708965f12 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Sat, 30 Sep 2023 22:15:08 +0300 Subject: [PATCH 4/4] add coder-login --- dogfood/main.tf | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/dogfood/main.tf b/dogfood/main.tf index 5c02c932bac16..4a8cb2fdc74bf 100644 --- a/dogfood/main.tf +++ b/dogfood/main.tf @@ -101,7 +101,7 @@ module "jetbrains_gateway" { default = "GO" } -module "vscode" { +module "vscode-desktop" { source = "https://registry.coder.com/modules/vscode-desktop" agent_id = coder_agent.dev.id } @@ -111,6 +111,11 @@ module "filebrowser" { agent_id = coder_agent.dev.id } +module "coder-login" { + source = "https://registry.coder.com/modules/coder-login" + agent_id = coder_agent.dev.id +} + resource "coder_agent" "dev" { arch = "amd64" os = "linux" @@ -118,8 +123,6 @@ resource "coder_agent" "dev" { env = { GITHUB_TOKEN : data.coder_git_auth.github.access_token, OIDC_TOKEN : data.coder_workspace.me.owner_oidc_access_token, - CODER_USER_TOKEN : data.coder_workspace.me.owner_session_token, - CODER_DEPLOYMENT_URL : data.coder_workspace.me.access_url } startup_script_behavior = "blocking" @@ -204,17 +207,7 @@ resource "coder_agent" "dev" { startup_script_timeout = 60 startup_script = <<-EOT set -eux -o pipefail - sudo service docker start - - # Automatically authenticate the user if they are not - # logged in to another deployment - if ! coder list >/dev/null 2>&1; then - set +x; coder login --token=$CODER_USER_TOKEN --url=$CODER_DEPLOYMENT_URL - else - echo "You are already authenticated with coder" - fi - EOT }