Update template v2

This commit is contained in:
ChenKaiLiuG
2025-11-17 01:11:17 +08:00
parent 71281756ba
commit ffeb3768f3

View File

@@ -15,45 +15,41 @@ data "coder_provisioner" "me" {}
data "coder_workspace" "me" {} data "coder_workspace" "me" {}
data "coder_workspace_owner" "me" {} data "coder_workspace_owner" "me" {}
# 環境變數GitHub token for Copilot
variable "github_token" { variable "github_token" {
description = "GitHub token for Copilot authentication (optional)" description = "GitHub token for Copilot (optional)"
type = string type = string
sensitive = true sensitive = true
default = "" default = ""
} }
resource "coder_agent" "main" { resource "coder_agent" "main" {
arch = data.coder_provisioner.me.arch arch = data.coder_provisioner.me.arch
os = "linux" os = "linux"
startup_script = <<-EOT
set -e
startup_script = <<-EOT
#!/bin/bash
set +e
# 初始化使用者目錄 # 初始化使用者目錄
if [ ! -f ~/.init_done ]; then if [ ! -f ~/.init_done ]; then
cp -rT /etc/skel ~ || true cp -rT /etc/skel ~ 2>/dev/null || true
touch ~/.init_done touch ~/.init_done
fi fi
# 確保必要目錄存在
mkdir -p ~/.config ~/.cache ~/.local/share mkdir -p ~/.config ~/.cache ~/.local/share
# 安裝 VSCode Server extensions可選 # 確保 code-server 運行中
# code-server --install-extension github.copilot # codercom/enterprise-base 已預裝 code-server
# code-server --install-extension ms-vscode.cpptools # Coder agent 會自動管理 code-server 進程
EOT EOT
# Git 認證配置
env = { env = {
GIT_AUTHOR_NAME = coalesce(data.coder_workspace_owner.me.full_name, data.coder_workspace_owner.me.name) GIT_AUTHOR_NAME = coalesce(data.coder_workspace_owner.me.full_name, data.coder_workspace_owner.me.name)
GIT_AUTHOR_EMAIL = "${data.coder_workspace_owner.me.email}" GIT_AUTHOR_EMAIL = data.coder_workspace_owner.me.email
GIT_COMMITTER_NAME = coalesce(data.coder_workspace_owner.me.full_name, data.coder_workspace_owner.me.name) GIT_COMMITTER_NAME = coalesce(data.coder_workspace_owner.me.full_name, data.coder_workspace_owner.me.name)
GIT_COMMITTER_EMAIL = "${data.coder_workspace_owner.me.email}" GIT_COMMITTER_EMAIL = data.coder_workspace_owner.me.email
# GitHub Copilot 認證 GITHUB_TOKEN = var.github_token != "" ? var.github_token : ""
GITHUB_TOKEN = var.github_token != "" ? var.github_token : ""
} }
# 監控指標
metadata { metadata {
display_name = "CPU Usage" display_name = "CPU Usage"
key = "0_cpu_usage" key = "0_cpu_usage"
@@ -97,9 +93,7 @@ resource "coder_agent" "main" {
metadata { metadata {
display_name = "Load Average (Host)" display_name = "Load Average (Host)"
key = "6_load_host" key = "6_load_host"
script = <<EOT script = "echo \"$$(cat /proc/loadavg | awk '{ print $$1 }') $$(nproc)\" | awk '{ printf \"%0.2f\", $$1/$$2 }'"
echo "`cat /proc/loadavg | awk '{ print $1 }'` `nproc`" | awk '{ printf "%0.2f", $1/$2 }'
EOT
interval = 60 interval = 60
timeout = 1 timeout = 1
} }
@@ -107,32 +101,38 @@ resource "coder_agent" "main" {
metadata { metadata {
display_name = "Swap Usage (Host)" display_name = "Swap Usage (Host)"
key = "7_swap_host" key = "7_swap_host"
script = <<EOT script = "free -b | awk '/^Swap/ { printf(\"%.1f/%.1f\", $$3/1024.0/1024.0/1024.0, $$2/1024.0/1024.0/1024.0) }'"
free -b | awk '/^Swap/ { printf("%.1f/%.1f", $3/1024.0/1024.0/1024.0, $2/1024.0/1024.0/1024.0) }' interval = 10
EOT timeout = 1
interval = 10
timeout = 1
} }
} }
# See https://registry.coder.com/modules/coder/code-server # code-server 應用配置
module "code-server" { resource "coder_app" "code_server" {
count = data.coder_workspace.me.start_count count = data.coder_workspace.me.start_count
source = "registry.coder.com/coder/code-server/coder"
version = "~> 1.0"
agent_id = coder_agent.main.id agent_id = coder_agent.main.id
agent_os = "linux" slug = "code-server"
folder = "/home/coder" display_name = "code-server"
icon = "/icon/code.svg"
url = "http://localhost:13337"
subdomain = false
share = "owner"
healthcheck {
url = "http://localhost:13337/health"
interval = 3
threshold = 10
}
} }
# See https://registry.coder.com/modules/coder/jetbrains # JetBrains IDE 支援(可選)
module "jetbrains" { resource "coder_app" "jetbrains" {
count = data.coder_workspace.me.start_count count = data.coder_workspace.me.start_count
source = "registry.coder.com/coder/jetbrains/coder" agent_id = coder_agent.main.id
version = "~> 1.1" slug = "jetbrains"
agent_id = coder_agent.main.id display_name = "JetBrains Toolbox"
agent_name = "main" icon = "/icon/jetbrains.svg"
folder = "/home/coder" url = "http://localhost:5037"
tooltip = "You need to [install JetBrains Toolbox](https://coder.com/docs/user-guides/workspace-access/jetbrains/toolbox) to use this app." subdomain = false
share = "owner"
} }