11terraform {
22 required_providers {
33 coder = {
4- source = " coder/coder"
4+ source = " coder/coder"
5+ version = " ~> 2.18.0"
56 }
67 docker = {
7- source = " kreuzwerker/docker"
8+ source = " kreuzwerker/docker"
9+ version = " ~> 4.6.0"
810 }
911 null = {
10- source = " hashicorp/null"
12+ source = " hashicorp/null"
13+ version = " ~> 3.3.0"
1114 }
1215 }
1316}
@@ -119,33 +122,33 @@ data "coder_parameter" "claude_token" {
119122}
120123
121124locals {
122- username = data. coder_workspace_owner . me . name
123- workspace_image = " ghcr.io/makespacemadrid/coder-mks-developer:latest"
124- persist_home_storage = data. coder_parameter . persist_home_storage . value
125- persist_projects_storage = data. coder_parameter . persist_projects_storage . value
126- enable_gpu = data. coder_parameter . enable_gpu . value
127- enable_dri = data. coder_parameter . enable_dri . value
128- host_mount_path = " "
129- host_mount_uid = " 1000"
130- workspace_storage_root = trimspace (var. users_storage )
131- workspace_storage_home = local. workspace_storage_root != " " ? " ${ local . workspace_storage_root } /${ local . username } /${ lower (data. coder_workspace . me . name )} " : " "
132- workspace_storage_projects = local. workspace_storage_root != " " ? " ${ local . workspace_storage_root } /${ local . username } /${ lower (data. coder_workspace . me . name )} /Projects" : " "
133- home_mount_host_path = local. persist_home_storage && local. workspace_storage_root != " " ? local. workspace_storage_home : " "
134- projects_mount_host_path = local. persist_projects_storage && local. workspace_storage_root != " " ? local. workspace_storage_projects : " "
135- ocabra_endpoint_base_url = trimspace (var. ocabra_endpoint_base_url )
136- ocabra_key = trimspace (var. ocabra_key )
137- freeapi_base_url = trimspace (var. freeapi_base_url )
138- freeapi_key_endpoint = trimspace (var. freeapi_key_endpoint )
139- home_volume_resolved = " coder-${ data . coder_workspace . me . id } -home"
140- repo_url = trimspace (data. coder_parameter . git_repo_url . value )
141- repo_name = local. repo_url != " " ? trimsuffix (basename (local. repo_url ), " .git" ) : " "
142- default_repo_path = local. repo_name != " " ? " /home/coder/Projects/${ local . repo_name } " : " /home/coder/Projects"
143- openai_base_url = " "
144- openai_api_key = " "
125+ username = data. coder_workspace_owner . me . name
126+ workspace_image = " ghcr.io/makespacemadrid/coder-mks-developer:latest"
127+ persist_home_storage = data. coder_parameter . persist_home_storage . value
128+ persist_projects_storage = data. coder_parameter . persist_projects_storage . value
129+ enable_gpu = data. coder_parameter . enable_gpu . value
130+ enable_dri = data. coder_parameter . enable_dri . value
131+ host_mount_path = " "
132+ host_mount_uid = " 1000"
133+ workspace_storage_root = trimspace (var. users_storage )
134+ workspace_storage_home = local. workspace_storage_root != " " ? " ${ local . workspace_storage_root } /${ local . username } /${ lower (data. coder_workspace . me . name )} " : " "
135+ workspace_storage_projects = local. workspace_storage_root != " " ? " ${ local . workspace_storage_root } /${ local . username } /${ lower (data. coder_workspace . me . name )} /Projects" : " "
136+ home_mount_host_path = local. persist_home_storage && local. workspace_storage_root != " " ? local. workspace_storage_home : " "
137+ projects_mount_host_path = local. persist_projects_storage && local. workspace_storage_root != " " ? local. workspace_storage_projects : " "
138+ ocabra_endpoint_base_url = trimspace (var. ocabra_endpoint_base_url )
139+ ocabra_key = trimspace (var. ocabra_key )
140+ freeapi_base_url = trimspace (var. freeapi_base_url )
141+ freeapi_key_endpoint = trimspace (var. freeapi_key_endpoint )
142+ home_volume_resolved = " coder-${ data . coder_workspace . me . id } -home"
143+ repo_url = trimspace (data. coder_parameter . git_repo_url . value )
144+ repo_name = local. repo_url != " " ? trimsuffix (basename (local. repo_url ), " .git" ) : " "
145+ default_repo_path = local. repo_name != " " ? " /home/coder/Projects/${ local . repo_name } " : " /home/coder/Projects"
146+ openai_base_url = " "
147+ openai_api_key = " "
145148 auto_provision_freeapi_key = data. coder_parameter . autoprovision_freeapi_key . value
146- claude_token = trimspace (data. coder_parameter . claude_token . value )
147- install_claude = local. claude_token != " "
148- continue_default_config = file (" ${ path . module } /continue-config.yaml" )
149+ claude_token = trimspace (data. coder_parameter . claude_token . value )
150+ install_claude = local. claude_token != " "
151+ continue_default_config = file (" ${ path . module } /continue-config.yaml" )
149152}
150153
151154provider "docker" {
@@ -1120,24 +1123,24 @@ CONTINUECFG
11201123 EOT
11211124
11221125 env = {
1123- GIT_AUTHOR_NAME = coalesce (data. coder_workspace_owner . me . full_name , data. coder_workspace_owner . me . name )
1124- GIT_AUTHOR_EMAIL = data.coder_workspace_owner.me.email
1125- GIT_COMMITTER_NAME = coalesce (data. coder_workspace_owner . me . full_name , data. coder_workspace_owner . me . name )
1126- GIT_COMMITTER_EMAIL = data.coder_workspace_owner.me.email
1127- HOME = " /home/coder"
1128- OPENCODE_PROVIDER_URL = local.openai_base_url
1129- OPENCODE_API_KEY = local.openai_api_key
1130- OCABRA_ENDPOINT_BASE_URL = local.ocabra_endpoint_base_url
1131- OCABRA_KEY = local.ocabra_key
1132- FREEAPI_BASE_URL = local.freeapi_base_url
1133- FREEAPI_KEY_ENDPOINT = local.freeapi_key_endpoint
1134- OCABRA_BASE_URL = local.openai_base_url
1135- OCABRA_API_KEY = local.openai_api_key
1126+ GIT_AUTHOR_NAME = coalesce (data. coder_workspace_owner . me . full_name , data. coder_workspace_owner . me . name )
1127+ GIT_AUTHOR_EMAIL = data.coder_workspace_owner.me.email
1128+ GIT_COMMITTER_NAME = coalesce (data. coder_workspace_owner . me . full_name , data. coder_workspace_owner . me . name )
1129+ GIT_COMMITTER_EMAIL = data.coder_workspace_owner.me.email
1130+ HOME = " /home/coder"
1131+ OPENCODE_PROVIDER_URL = local.openai_base_url
1132+ OPENCODE_API_KEY = local.openai_api_key
1133+ OCABRA_ENDPOINT_BASE_URL = local.ocabra_endpoint_base_url
1134+ OCABRA_KEY = local.ocabra_key
1135+ FREEAPI_BASE_URL = local.freeapi_base_url
1136+ FREEAPI_KEY_ENDPOINT = local.freeapi_key_endpoint
1137+ OCABRA_BASE_URL = local.openai_base_url
1138+ OCABRA_API_KEY = local.openai_api_key
11361139 AUTO_PROVISION_FREEAPI_API_KEY = tostring (local. auto_provision_freeapi_key )
1137- INSTALL_CLAUDE = tostring (local. install_claude )
1138- CODER_USER_EMAIL = data.coder_workspace_owner.me.email
1139- CODER_WORKSPACE_NAME = data.coder_workspace.me.name
1140- DEFAULT_REPO_PATH = local.default_repo_path
1140+ INSTALL_CLAUDE = tostring (local. install_claude )
1141+ CODER_USER_EMAIL = data.coder_workspace_owner.me.email
1142+ CODER_WORKSPACE_NAME = data.coder_workspace.me.name
1143+ DEFAULT_REPO_PATH = local.default_repo_path
11411144 }
11421145
11431146 metadata {
@@ -1207,12 +1210,12 @@ CONTINUECFG
12071210# ---------------------------------------------------------------
12081211
12091212module "code-server" {
1210- count = data. coder_workspace . me . start_count
1211- source = " registry.coder.com/coder/code-server/coder"
1212- version = " ~> 1.1"
1213- agent_id = coder_agent. main . id
1214- folder = " /home/coder/Projects"
1215- order = 1
1213+ count = data. coder_workspace . me . start_count
1214+ source = " registry.coder.com/coder/code-server/coder"
1215+ version = " ~> 1.1"
1216+ agent_id = coder_agent. main . id
1217+ folder = " /home/coder/Projects"
1218+ order = 1
12161219}
12171220
12181221module "git-config" {
@@ -1327,7 +1330,7 @@ resource "coder_script" "opencode_web" {
13271330 echo "OpenCode Web no respondió en $health_url; consulta $log_file" >&2
13281331 exit 1
13291332 EOT
1330- depends_on = [module . opencode ]
1333+ depends_on = [module . opencode ]
13311334}
13321335
13331336resource "coder_app" "opencode_web" {
@@ -1349,9 +1352,10 @@ resource "coder_app" "opencode_web" {
13491352}
13501353
13511354module "claude-code" {
1352- count = local. install_claude ? 1 : 0
1353- source = " registry.coder.com/coder/claude-code/coder"
1354- version = " ~> 4.2"
1355+ count = local. install_claude ? 1 : 0
1356+ source = " registry.coder.com/coder/claude-code/coder"
1357+ # v5 elimina report_tasks/task_app_id, que esta plantilla sigue utilizando.
1358+ version = " >= 4.7.5, < 5.0.0"
13551359 agent_id = coder_agent. main . id
13561360 workdir = " /home/coder/Projects"
13571361 claude_code_oauth_token = local. claude_token
0 commit comments