coder / coder/internal

Terraform Resources for Dev Containers

Đang mở
#1,237 1 bình luận 0 reaction 0 người được giao Xem trên GitHub
epic
Ngôn ngữ chính
Không có dữ liệu ngôn ngữ
Star
3
Fork
0
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

# Epic: Terraform Resources for Dev Containers

## Summary

Enable template authors to attach Terraform resources (`coder_app`, `coder_script`, `coder_env`, `coder_ai_task`) to `coder_devcontainer` resources, eliminating the need to choose between Dev Containers and our collection of Terraform modules.

## Problem Statement

**Opting in** to Dev Containers requires **opting out** of our collection of Terraform modules as there is no way of associating terraform resources to the `coder_devcontainer` resource.

Agents used for Dev Containers are created dynamically *after* workspace provisioning. Since the sub-agent doesn't exist at Terraform plan/apply time, there is no way to reference it in Terraform.

## Solution Overview

### Phase 1: Terraform-defined Resources

Introduce a computed `subagent_id` field on the `coder_devcontainer` resource that can be referenced by other Terraform resources. This ID is pre-computed at plan time and used when the sub-agent is created at runtime.

```hcl
resource "coder_devcontainer" "main" {
agent_id = coder_agent.main.id
workspace_folder = "/workspaces/project"
}

resource "coder_app" "code_server" {
agent_id = coder_devcontainer.main.subagent_id
slug = "code-server"
display_name = "VS Code"
url = "http://localhost:8080"
}
```

### Phase 2: `devcontainer.json`-defined Resources

Enable Terraform modules to be defined directly in `devcontainer.json` via `customizations.coder.modules`, allowing developers to attach modules to their dev container without modifying Terraform templates. The modules are provisioned by coderd using `coder/preview`.

```json
{
"customizations": {
"coder": {
"modules": {
"registry.coder.com/coder/code-server/coder:1.0.0": {},
"registry.coder.com/coder/zed/coder:1": {
"folder": "/home/coder/coder"
}
}
}
}
}
```

The key format is `:` and the value is an object of key-value mappings where each key is translated into a Terraform variable.

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.