diff --git a/.icons/electric-plug-emoji.svg b/.icons/electric-plug-emoji.svg new file mode 100644 index 000000000..157438226 --- /dev/null +++ b/.icons/electric-plug-emoji.svg @@ -0,0 +1 @@ +🔌 \ No newline at end of file diff --git a/registry/coder-labs/templates/externally-managed-workspace/README.md b/registry/coder-labs/templates/externally-managed-workspace/README.md new file mode 100644 index 000000000..661349eb0 --- /dev/null +++ b/registry/coder-labs/templates/externally-managed-workspace/README.md @@ -0,0 +1,13 @@ +--- +display_name: Externally Managed Workspace +description: A template to provision externally managed resources as Coder workspaces +icon: ../../../../.icons/electric-plug-emoji.svg +verified: true +tags: [external] +--- + +# Externally Managed Workspace Template + +This template provides a minimal scaffolding for creating Coder workspaces that connect to externally provisioned compute resources. + +Use this template as a starting point to build your own custom templates for scenarios where you need to connect to existing infrastructure. diff --git a/registry/coder-labs/templates/externally-managed-workspace/main.tf b/registry/coder-labs/templates/externally-managed-workspace/main.tf new file mode 100644 index 000000000..d80816fca --- /dev/null +++ b/registry/coder-labs/templates/externally-managed-workspace/main.tf @@ -0,0 +1,74 @@ +terraform { + required_providers { + coder = { + source = "coder/coder" + version = ">= 2.10" + } + } +} + +data "coder_parameter" "agent_config" { + name = "agent_config" + display_name = "Agent Configuration" + description = "Select the operating system and architecture combination for the agent" + type = "string" + default = "linux-amd64" + + option { + name = "Linux AMD64" + value = "linux-amd64" + } + option { + name = "Linux ARM64" + value = "linux-arm64" + } + option { + name = "Linux ARMv7" + value = "linux-armv7" + } + option { + name = "Windows AMD64" + value = "windows-amd64" + } + option { + name = "Windows ARM64" + value = "windows-arm64" + } + option { + name = "macOS AMD64" + value = "darwin-amd64" + } + option { + name = "macOS ARM64 (Apple Silicon)" + value = "darwin-arm64" + } +} + +data "coder_workspace" "me" {} + +locals { + agent_config = split("-", data.coder_parameter.agent_config.value) + agent_os = local.agent_config[0] + agent_arch = local.agent_config[1] +} + +resource "coder_agent" "main" { + arch = local.agent_arch + os = local.agent_os +} + +resource "coder_external_agent" "main" { + agent_id = coder_agent.main.id +} + +# Adds code-server +# See all available modules at https://registry.coder.com/modules +module "code-server" { + count = data.coder_workspace.me.start_count + source = "registry.coder.com/coder/code-server/coder" + + # This ensures that the latest non-breaking version of the module gets downloaded, you can also pin the module version to prevent breaking changes in production. + version = "~> 1.0" + + agent_id = coder_agent.main.id +} \ No newline at end of file