Skip to content

Commit 40baa5b

Browse files
authored
chore(examples): update devcontainer-{docker,kubernetes} to use computed env (coder#14328)
Updates devcontainer-docker and devcontainer-kubernetes example templates to use computed env from provider, if applicable.
1 parent cf8be4e commit 40baa5b

File tree

2 files changed

+25
-49
lines changed
  • examples/templates

2 files changed

+25
-49
lines changed

examples/templates/devcontainer-docker/main.tf

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -118,14 +118,16 @@ locals {
118118
repo_url = data.coder_parameter.repo.value == "custom" ? data.coder_parameter.custom_repo_url.value : data.coder_parameter.repo.value
119119
# The envbuilder provider requires a key-value map of environment variables.
120120
envbuilder_env = {
121+
# ENVBUILDER_GIT_URL and ENVBUILDER_CACHE_REPO will be overridden by the provider
122+
# if the cache repo is enabled.
123+
"ENVBUILDER_GIT_URL" : local.repo_url,
124+
"ENVBUILDER_CACHE_REPO" : var.cache_repo,
121125
"CODER_AGENT_TOKEN" : coder_agent.main.token,
122126
# Use the docker gateway if the access URL is 127.0.0.1
123127
"CODER_AGENT_URL" : replace(data.coder_workspace.me.access_url, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal"),
124-
"ENVBUILDER_GIT_URL" : local.repo_url,
125128
# Use the docker gateway if the access URL is 127.0.0.1
126129
"ENVBUILDER_INIT_SCRIPT" : replace(coder_agent.main.init_script, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal"),
127130
"ENVBUILDER_FALLBACK_IMAGE" : data.coder_parameter.fallback_image.value,
128-
"ENVBUILDER_CACHE_REPO" : var.cache_repo,
129131
"ENVBUILDER_DOCKER_CONFIG_BASE64" : try(data.local_sensitive_file.cache_repo_dockerconfigjson[0].content_base64, ""),
130132
"ENVBUILDER_PUSH_IMAGE" : var.cache_repo == "" ? "" : "true",
131133
"ENVBUILDER_INSECURE" : "${var.insecure_cache_repo}",
@@ -191,9 +193,7 @@ resource "docker_container" "workspace" {
191193
# Hostname makes the shell more user friendly: coder@my-workspace:~$
192194
hostname = data.coder_workspace.me.name
193195
# Use the environment specified by the envbuilder provider, if available.
194-
# FIXME: https://github.com/coder/terraform-provider-envbuilder/issues/31
195-
#env = var.cache_repo == "" ? local.docker_env : envbuilder_cached_image.cached.0.env
196-
env = local.docker_env
196+
env = var.cache_repo == "" ? local.docker_env : envbuilder_cached_image.cached.0.env
197197
# network_mode = "host" # Uncomment if testing with a registry running on `localhost`.
198198
host {
199199
host = "host.docker.internal"

examples/templates/devcontainer-kubernetes/main.tf

Lines changed: 20 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -155,17 +155,23 @@ locals {
155155
repo_url = data.coder_parameter.repo.value
156156
# The envbuilder provider requires a key-value map of environment variables.
157157
envbuilder_env = {
158+
# ENVBUILDER_GIT_URL and ENVBUILDER_CACHE_REPO will be overridden by the provider
159+
# if the cache repo is enabled.
160+
"ENVBUILDER_GIT_URL" : local.repo_url,
161+
"ENVBUILDER_CACHE_REPO" : var.cache_repo,
158162
"CODER_AGENT_TOKEN" : coder_agent.main.token,
159163
# Use the docker gateway if the access URL is 127.0.0.1
160164
"CODER_AGENT_URL" : replace(data.coder_workspace.me.access_url, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal"),
161-
"ENVBUILDER_GIT_URL" : local.repo_url,
162165
# Use the docker gateway if the access URL is 127.0.0.1
163166
"ENVBUILDER_INIT_SCRIPT" : replace(coder_agent.main.init_script, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal"),
164167
"ENVBUILDER_FALLBACK_IMAGE" : data.coder_parameter.fallback_image.value,
165-
"ENVBUILDER_CACHE_REPO" : var.cache_repo,
166168
"ENVBUILDER_DOCKER_CONFIG_BASE64" : try(data.kubernetes_secret.cache_repo_dockerconfig_secret[0].data[".dockerconfigjson"], ""),
167169
"ENVBUILDER_PUSH_IMAGE" : var.cache_repo == "" ? "" : "true",
168170
"ENVBUILDER_INSECURE" : "${var.insecure_cache_repo}",
171+
# You may need to adjust this if you get an error regarding deleting files when building the workspace.
172+
# For example, when testing in KinD, it was necessary to set `/product_name` and `/product_uuid` in
173+
# addition to `/var/run`.
174+
# "ENVBUILDER_IGNORE_PATHS": "/product_name,/product_uuid,/var/run",
169175
}
170176
}
171177

@@ -260,49 +266,19 @@ resource "kubernetes_deployment" "main" {
260266
image = var.cache_repo == "" ? local.devcontainer_builder_image : envbuilder_cached_image.cached.0.image
261267
image_pull_policy = "Always"
262268
security_context {}
263-
env {
264-
name = "CODER_AGENT_TOKEN"
265-
value = coder_agent.main.token
266-
}
267-
env {
268-
name = "CODER_AGENT_URL"
269-
value = data.coder_workspace.me.access_url
270-
}
271-
env {
272-
name = "ENVBUILDER_GIT_URL"
273-
value = local.repo_url
274-
}
275-
env {
276-
name = "ENVBUILDER_INIT_SCRIPT"
277-
value = coder_agent.main.init_script
278-
}
279-
env {
280-
name = "ENVBUILDER_FALLBACK_IMAGE"
281-
value = data.coder_parameter.fallback_image.value
282-
}
283-
env {
284-
name = "ENVBUILDER_CACHE_REPO"
285-
value = var.cache_repo
286-
}
287-
env {
288-
name = "ENVBUILDER_PUSH_IMAGE"
289-
value = var.cache_repo == "" ? "" : "true"
290-
}
291-
env {
292-
name = "ENVBUILDER_INSECURE"
293-
value = var.insecure_cache_repo
294-
}
295-
env {
296-
name = "ENVBUILDER_DOCKER_CONFIG_BASE64"
297-
value = try(data.kubernetes_secret.cache_repo_dockerconfig_secret[0].data[".dockerconfigjson"], "")
269+
270+
# Set the environment using cached_image.cached.0.env if the cache repo is enabled.
271+
# Otherwise, use the local.envbuilder_env.
272+
# You could alternatively write the environment variables to a ConfigMap or Secret
273+
# and use that as `env_from`.
274+
dynamic "env" {
275+
for_each = nonsensitive(var.cache_repo == "" ? local.envbuilder_env : envbuilder_cached_image.cached.0.env_map)
276+
content {
277+
name = env.key
278+
value = env.value
279+
}
298280
}
299-
# You may need to adjust this if you get an error regarding deleting files when building the workspace.
300-
# For example, when testing in KinD, it was necessary to set `/product_name` and `/product_uuid` in
301-
# addition to `/var/run`.
302-
# env {
303-
# name = "ENVBUILDER_IGNORE_PATHS"
304-
# value = "/product_name,/product_uuid,/var/run"
305-
# }
281+
306282
resources {
307283
requests = {
308284
"cpu" = "250m"

0 commit comments

Comments
 (0)