51 lines
3.0 KiB
Markdown
51 lines
3.0 KiB
Markdown
# Terraform Workspace Template
|
||
|
||
This Terraform module provisions a Coder workspace that mirrors the devcontainer experience defined in this repository. The files in `tf/` are mounted into the workspace at `/home/coder/code-tools`, so the helper scripts referenced below are always available.
|
||
|
||
## What You Get
|
||
|
||
- One Docker workspace container built from `var.devcontainer_image` (defaults to `git.lab/vasceannie/golden-image:latest`).
|
||
- Optional PostgreSQL, Redis, and Qdrant services running on the same Docker network, plus pgAdmin and Jupyter toggles.
|
||
- Startup scripts that install core tooling and (optionally) AI helpers for Claude, Cursor, and Windsurf.
|
||
- A trimmed Coder application list (VS Code, Terminal, pgAdmin, Qdrant, Jupyter, and a few common dev ports).
|
||
|
||
## Key Inputs
|
||
|
||
| Name | Description | Default |
|
||
| --- | --- | --- |
|
||
| `devcontainer_image` | Workspace container image | `git.lab/vasceannie/golden-image:latest` |
|
||
| `workspace_memory_limit` | Memory limit in MB (0 = image default) | `8192` |
|
||
| `enable_docker_in_docker` | Mount `/var/run/docker.sock` | `true` |
|
||
| `postgres_password` / `redis_password` | Service credentials | `devpassword` |
|
||
| `postgres_max_connections` | PostgreSQL connection cap | `100` |
|
||
| `redis_max_memory` | Redis maxmemory setting | `512mb` |
|
||
| `pgadmin_email` / `pgadmin_password` | pgAdmin login | `admin@dev.local` / `adminpassword` |
|
||
| `install_*` flags | Control which AI helpers run when enabled | all `true` |
|
||
|
||
Workspace creators see only a handful of parameters:
|
||
1. Optional repository URL to clone into `/workspaces`.
|
||
2. Toggles for data services, AI tooling, pgAdmin, Jupyter, and JetBrains Gateway.
|
||
|
||
## Files
|
||
|
||
```
|
||
main.tf # Providers, parameters, locals, Docker primitives
|
||
workspace.tf # Coder agent and workspace container
|
||
services.tf # PostgreSQL / Redis / Qdrant (+ pgAdmin & Jupyter)
|
||
apps.tf # Essential Coder apps and dev-port helpers
|
||
scripts.tf # Core + AI scripts wired to the agent
|
||
variables.tf # Minimal variable surface area
|
||
terraform.tfvars# Opinionated defaults you can override
|
||
outputs.tf # Helpful connection strings and metadata
|
||
scripts/ # Shell scripts invoked by Terraform resources
|
||
```
|
||
|
||
## Usage
|
||
|
||
1. From the Coder deployment (mounted at `/home/coder/code-tools/tf`), run `terraform init` and `terraform apply`.
|
||
2. When prompted for the **Project repository**, supply any Git URL to clone into `/workspaces` or leave it blank for an empty workspace.
|
||
3. Toggle services and AI tools to suit the workspace. If services are enabled, the bundled `port-forward.sh` script exposes pgAdmin on `localhost:5050` and Qdrant on `localhost:6333`.
|
||
4. The devcontainer image should install language toolchains; the `workspace-setup.sh` and `dev-tools.sh` scripts simply finish configuration inside the workspace.
|
||
|
||
Refer to [Coder’s devcontainer template guide](https://coder.com/docs/@v2.26.0/admin/templates/managing-templates/devcontainers/add-devcontainer) for broader context on how this Terraform fits into your deployment.
|