diff --git a/docs/templates.md b/docs/templates.md index 9c81789197c16..9b801a2a72a0d 100644 --- a/docs/templates.md +++ b/docs/templates.md @@ -184,7 +184,10 @@ data "coder_workspace" "me" { resource "docker_volume" "home_volume" { # persistent resource (remains a workspace is stopped) count = 1 - name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}-root" + name = "coder-${data.coder_workspace.me.id}-home" + lifecycle { + ignore_changes = all + } } resource "docker_container" "workspace" { diff --git a/dogfood/main.tf b/dogfood/main.tf index f25e3069d4b68..c236ed9aec722 100644 --- a/dogfood/main.tf +++ b/dogfood/main.tf @@ -54,10 +54,30 @@ resource "coder_app" "code-server" { } resource "docker_volume" "home_volume" { - name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}-home" + name = "coder-${data.coder_workspace.me.id}-home" + # Protect the volume from being deleted due to changes in attributes. lifecycle { ignore_changes = all } + # Add labels in Docker to keep track of orphan resources. + labels { + label = "coder.owner" + value = data.coder_workspace.me.owner + } + labels { + label = "coder.owner_id" + value = data.coder_workspace.me.owner_id + } + labels { + label = "coder.workspace_id" + value = data.coder_workspace.me.id + } + # This field becomes outdated if the workspace is renamed but can + # be useful for debugging or cleaning out dangling volumes. + labels { + label = "coder.workspace_name_at_creation" + value = data.coder_workspace.me.name + } } resource "coder_metadata" "home_info" { @@ -108,6 +128,23 @@ resource "docker_container" "workspace" { volume_name = docker_volume.home_volume.name read_only = false } + # Add labels in Docker to keep track of orphan resources. + labels { + label = "coder.owner" + value = data.coder_workspace.me.owner + } + labels { + label = "coder.owner_id" + value = data.coder_workspace.me.owner_id + } + labels { + label = "coder.workspace_id" + value = data.coder_workspace.me.id + } + labels { + label = "coder.workspace_name" + value = data.coder_workspace.me.name + } } resource "coder_metadata" "container_info" { diff --git a/examples/templates/do-linux/main.tf b/examples/templates/do-linux/main.tf index fbb5a6d227e4d..713ee69242324 100644 --- a/examples/templates/do-linux/main.tf +++ b/examples/templates/do-linux/main.tf @@ -100,10 +100,14 @@ resource "coder_agent" "main" { resource "digitalocean_volume" "home_volume" { region = var.region - name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}-home" + name = "coder-${data.coder_workspace.me.id}-home" size = var.home_volume_size initial_filesystem_type = "ext4" initial_filesystem_label = "coder-home" + # Protect the volume from being deleted due to changes in attributes. + lifecycle { + ignore_changes = all + } } resource "digitalocean_droplet" "workspace" { diff --git a/examples/templates/docker-code-server/main.tf b/examples/templates/docker-code-server/main.tf index 5331c5552c126..2217d8740dadd 100644 --- a/examples/templates/docker-code-server/main.tf +++ b/examples/templates/docker-code-server/main.tf @@ -54,7 +54,30 @@ resource "coder_app" "code-server" { } resource "docker_volume" "home_volume" { - name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}-root" + name = "coder-${data.coder_workspace.me.id}-home" + # Protect the volume from being deleted due to changes in attributes. + lifecycle { + ignore_changes = all + } + # Add labels in Docker to keep track of orphan resources. + labels { + label = "coder.owner" + value = data.coder_workspace.me.owner + } + labels { + label = "coder.owner_id" + value = data.coder_workspace.me.owner_id + } + labels { + label = "coder.workspace_id" + value = data.coder_workspace.me.id + } + # This field becomes outdated if the workspace is renamed but can + # be useful for debugging or cleaning out dangling volumes. + labels { + label = "coder.workspace_name_at_creation" + value = data.coder_workspace.me.name + } } resource "docker_container" "workspace" { @@ -76,4 +99,21 @@ resource "docker_container" "workspace" { volume_name = docker_volume.home_volume.name read_only = false } + # Add labels in Docker to keep track of orphan resources. + labels { + label = "coder.owner" + value = data.coder_workspace.me.owner + } + labels { + label = "coder.owner_id" + value = data.coder_workspace.me.owner_id + } + labels { + label = "coder.workspace_id" + value = data.coder_workspace.me.id + } + labels { + label = "coder.workspace_name" + value = data.coder_workspace.me.name + } } diff --git a/examples/templates/docker-image-builds/main.tf b/examples/templates/docker-image-builds/main.tf index ea59777b2ce09..3d4c4f5124bef 100644 --- a/examples/templates/docker-image-builds/main.tf +++ b/examples/templates/docker-image-builds/main.tf @@ -69,7 +69,30 @@ variable "docker_image" { } resource "docker_volume" "home_volume" { - name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}-root" + name = "coder-${data.coder_workspace.me.id}-home" + # Protect the volume from being deleted due to changes in attributes. + lifecycle { + ignore_changes = all + } + # Add labels in Docker to keep track of orphan resources. + labels { + label = "coder.owner" + value = data.coder_workspace.me.owner + } + labels { + label = "coder.owner_id" + value = data.coder_workspace.me.owner_id + } + labels { + label = "coder.workspace_id" + value = data.coder_workspace.me.id + } + # This field becomes outdated if the workspace is renamed but can + # be useful for debugging or cleaning out dangling volumes. + labels { + label = "coder.workspace_name_at_creation" + value = data.coder_workspace.me.name + } } resource "docker_image" "coder_image" { @@ -103,6 +126,23 @@ resource "docker_container" "workspace" { volume_name = docker_volume.home_volume.name read_only = false } + # Add labels in Docker to keep track of orphan resources. + labels { + label = "coder.owner" + value = data.coder_workspace.me.owner + } + labels { + label = "coder.owner_id" + value = data.coder_workspace.me.owner_id + } + labels { + label = "coder.workspace_id" + value = data.coder_workspace.me.id + } + labels { + label = "coder.workspace_name" + value = data.coder_workspace.me.name + } } resource "coder_metadata" "container_info" { diff --git a/examples/templates/docker-with-dotfiles/main.tf b/examples/templates/docker-with-dotfiles/main.tf index 0e5e1b232201a..75e80abb7c115 100644 --- a/examples/templates/docker-with-dotfiles/main.tf +++ b/examples/templates/docker-with-dotfiles/main.tf @@ -47,7 +47,30 @@ resource "coder_agent" "main" { } resource "docker_volume" "home_volume" { - name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}-root" + name = "coder-${data.coder_workspace.me.id}-home" + # Protect the volume from being deleted due to changes in attributes. + lifecycle { + ignore_changes = all + } + # Add labels in Docker to keep track of orphan resources. + labels { + label = "coder.owner" + value = data.coder_workspace.me.owner + } + labels { + label = "coder.owner_id" + value = data.coder_workspace.me.owner_id + } + labels { + label = "coder.workspace_id" + value = data.coder_workspace.me.id + } + # This field becomes outdated if the workspace is renamed but can + # be useful for debugging or cleaning out dangling volumes. + labels { + label = "coder.workspace_name_at_creation" + value = data.coder_workspace.me.name + } } resource "docker_container" "workspace" { @@ -69,6 +92,23 @@ resource "docker_container" "workspace" { volume_name = docker_volume.home_volume.name read_only = false } + # Add labels in Docker to keep track of orphan resources. + labels { + label = "coder.owner" + value = data.coder_workspace.me.owner + } + labels { + label = "coder.owner_id" + value = data.coder_workspace.me.owner_id + } + labels { + label = "coder.workspace_id" + value = data.coder_workspace.me.id + } + labels { + label = "coder.workspace_name" + value = data.coder_workspace.me.name + } } resource "coder_metadata" "container_info" { diff --git a/examples/templates/docker/main.tf b/examples/templates/docker/main.tf index 05d3875aeb542..1e68f093b9d28 100644 --- a/examples/templates/docker/main.tf +++ b/examples/templates/docker/main.tf @@ -60,7 +60,30 @@ resource "coder_app" "code-server" { resource "docker_volume" "home_volume" { - name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}-home" + name = "coder-${data.coder_workspace.me.id}-home" + # Protect the volume from being deleted due to changes in attributes. + lifecycle { + ignore_changes = all + } + # Add labels in Docker to keep track of orphan resources. + labels { + label = "coder.owner" + value = data.coder_workspace.me.owner + } + labels { + label = "coder.owner_id" + value = data.coder_workspace.me.owner_id + } + labels { + label = "coder.workspace_id" + value = data.coder_workspace.me.id + } + # This field becomes outdated if the workspace is renamed but can + # be useful for debugging or cleaning out dangling volumes. + labels { + label = "coder.workspace_name_at_creation" + value = data.coder_workspace.me.name + } } @@ -93,4 +116,21 @@ resource "docker_container" "workspace" { volume_name = docker_volume.home_volume.name read_only = false } + # Add labels in Docker to keep track of orphan resources. + labels { + label = "coder.owner" + value = data.coder_workspace.me.owner + } + labels { + label = "coder.owner_id" + value = data.coder_workspace.me.owner_id + } + labels { + label = "coder.workspace_id" + value = data.coder_workspace.me.id + } + labels { + label = "coder.workspace_name" + value = data.coder_workspace.me.name + } } diff --git a/examples/templates/gcp-linux/main.tf b/examples/templates/gcp-linux/main.tf index 59a51c2aebf04..585a079ebff91 100644 --- a/examples/templates/gcp-linux/main.tf +++ b/examples/templates/gcp-linux/main.tf @@ -36,12 +36,12 @@ data "coder_workspace" "me" { } resource "google_compute_disk" "root" { - name = "coder-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}-root" + name = "coder-${data.coder_workspace.me.id}-root" type = "pd-ssd" zone = var.zone image = "debian-cloud/debian-11" lifecycle { - ignore_changes = [image] + ignore_changes = [name, image] } } diff --git a/examples/templates/gcp-windows/main.tf b/examples/templates/gcp-windows/main.tf index dac920654a873..3b4dd745c5f67 100644 --- a/examples/templates/gcp-windows/main.tf +++ b/examples/templates/gcp-windows/main.tf @@ -36,12 +36,12 @@ data "google_compute_default_service_account" "default" { } resource "google_compute_disk" "root" { - name = "coder-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}-root" + name = "coder-${data.coder_workspace.me.id}-root" type = "pd-ssd" zone = var.zone image = "projects/windows-cloud/global/images/windows-server-2022-dc-core-v20220215" lifecycle { - ignore_changes = [image] + ignore_changes = [name, image] } } pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy