From 193e2b407e54fb941081eaed0c432d758f246a83 Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Wed, 24 Aug 2022 16:20:14 +0300 Subject: [PATCH 1/3] fix: Use immutable names for volumes in example templates This contributes towards #3000, #3386 Related #3409 --- docs/templates.md | 2 +- dogfood/main.tf | 2 +- examples/templates/do-linux/main.tf | 2 +- examples/templates/docker-code-server/main.tf | 2 +- examples/templates/docker-image-builds/main.tf | 2 +- examples/templates/docker-with-dotfiles/main.tf | 2 +- examples/templates/docker/main.tf | 2 +- examples/templates/gcp-linux/main.tf | 2 +- examples/templates/gcp-windows/main.tf | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/templates.md b/docs/templates.md index 9c81789197c16..4afe9d6fceea6 100644 --- a/docs/templates.md +++ b/docs/templates.md @@ -184,7 +184,7 @@ 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.owner_id}-${data.coder_workspace.me.id}-home" } resource "docker_container" "workspace" { diff --git a/dogfood/main.tf b/dogfood/main.tf index f39ccc491e8e0..b46ed8c301a25 100644 --- a/dogfood/main.tf +++ b/dogfood/main.tf @@ -54,7 +54,7 @@ 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.owner_id}-${data.coder_workspace.me.id}-home" lifecycle { ignore_changes = all } diff --git a/examples/templates/do-linux/main.tf b/examples/templates/do-linux/main.tf index fbb5a6d227e4d..6314c927edebf 100644 --- a/examples/templates/do-linux/main.tf +++ b/examples/templates/do-linux/main.tf @@ -100,7 +100,7 @@ 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.owner_id}-${data.coder_workspace.me.id}-home" size = var.home_volume_size initial_filesystem_type = "ext4" initial_filesystem_label = "coder-home" diff --git a/examples/templates/docker-code-server/main.tf b/examples/templates/docker-code-server/main.tf index d9e713dc26faf..c10af57d7dcea 100644 --- a/examples/templates/docker-code-server/main.tf +++ b/examples/templates/docker-code-server/main.tf @@ -54,7 +54,7 @@ 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.owner_id}-${data.coder_workspace.me.id}-home" } resource "docker_container" "workspace" { diff --git a/examples/templates/docker-image-builds/main.tf b/examples/templates/docker-image-builds/main.tf index dbce5de1aaedc..8ed2485d7bcb8 100644 --- a/examples/templates/docker-image-builds/main.tf +++ b/examples/templates/docker-image-builds/main.tf @@ -69,7 +69,7 @@ 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.owner_id}-${data.coder_workspace.me.id}-home" } resource "docker_image" "coder_image" { diff --git a/examples/templates/docker-with-dotfiles/main.tf b/examples/templates/docker-with-dotfiles/main.tf index ae9475ededee2..8f3a50232e592 100644 --- a/examples/templates/docker-with-dotfiles/main.tf +++ b/examples/templates/docker-with-dotfiles/main.tf @@ -47,7 +47,7 @@ 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.owner_id}-${data.coder_workspace.me.id}-home" } resource "docker_container" "workspace" { diff --git a/examples/templates/docker/main.tf b/examples/templates/docker/main.tf index 2ca356c60cb73..f22e3b70e3aa9 100644 --- a/examples/templates/docker/main.tf +++ b/examples/templates/docker/main.tf @@ -60,7 +60,7 @@ 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.owner_id}-${data.coder_workspace.me.id}-home" } diff --git a/examples/templates/gcp-linux/main.tf b/examples/templates/gcp-linux/main.tf index 59a51c2aebf04..827ddbbacf8a0 100644 --- a/examples/templates/gcp-linux/main.tf +++ b/examples/templates/gcp-linux/main.tf @@ -36,7 +36,7 @@ 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.owner_id}-${data.coder_workspace.me.id}-root" type = "pd-ssd" zone = var.zone image = "debian-cloud/debian-11" diff --git a/examples/templates/gcp-windows/main.tf b/examples/templates/gcp-windows/main.tf index dac920654a873..7b5be419b3460 100644 --- a/examples/templates/gcp-windows/main.tf +++ b/examples/templates/gcp-windows/main.tf @@ -36,7 +36,7 @@ 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.owner_id}-${data.coder_workspace.me.id}-root" type = "pd-ssd" zone = var.zone image = "projects/windows-cloud/global/images/windows-server-2022-dc-core-v20220215" From 564969a4909fc85e3123d692fb6f5459d3951d11 Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Fri, 26 Aug 2022 16:24:28 +0300 Subject: [PATCH 2/3] fix: Only use workspace UUID for volume names --- docs/templates.md | 2 +- dogfood/main.tf | 2 +- examples/templates/do-linux/main.tf | 2 +- examples/templates/docker-code-server/main.tf | 2 +- examples/templates/docker-image-builds/main.tf | 2 +- examples/templates/docker-with-dotfiles/main.tf | 2 +- examples/templates/docker/main.tf | 2 +- examples/templates/gcp-linux/main.tf | 2 +- examples/templates/gcp-windows/main.tf | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/templates.md b/docs/templates.md index 4afe9d6fceea6..a0d9a11ee44df 100644 --- a/docs/templates.md +++ b/docs/templates.md @@ -184,7 +184,7 @@ 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_id}-${data.coder_workspace.me.id}-home" + name = "coder-${data.coder_workspace.me.id}-home" } resource "docker_container" "workspace" { diff --git a/dogfood/main.tf b/dogfood/main.tf index b46ed8c301a25..f5b40e20a69c3 100644 --- a/dogfood/main.tf +++ b/dogfood/main.tf @@ -54,7 +54,7 @@ resource "coder_app" "code-server" { } resource "docker_volume" "home_volume" { - name = "coder-${data.coder_workspace.me.owner_id}-${data.coder_workspace.me.id}-home" + name = "coder-${data.coder_workspace.me.id}-home" lifecycle { ignore_changes = all } diff --git a/examples/templates/do-linux/main.tf b/examples/templates/do-linux/main.tf index 6314c927edebf..0fe2ffcdfcda0 100644 --- a/examples/templates/do-linux/main.tf +++ b/examples/templates/do-linux/main.tf @@ -100,7 +100,7 @@ resource "coder_agent" "main" { resource "digitalocean_volume" "home_volume" { region = var.region - name = "coder-${data.coder_workspace.me.owner_id}-${data.coder_workspace.me.id}-home" + name = "coder-${data.coder_workspace.me.id}-home" size = var.home_volume_size initial_filesystem_type = "ext4" initial_filesystem_label = "coder-home" diff --git a/examples/templates/docker-code-server/main.tf b/examples/templates/docker-code-server/main.tf index c10af57d7dcea..f72bf904e2adc 100644 --- a/examples/templates/docker-code-server/main.tf +++ b/examples/templates/docker-code-server/main.tf @@ -54,7 +54,7 @@ resource "coder_app" "code-server" { } resource "docker_volume" "home_volume" { - name = "coder-${data.coder_workspace.me.owner_id}-${data.coder_workspace.me.id}-home" + name = "coder-${data.coder_workspace.me.id}-home" } resource "docker_container" "workspace" { diff --git a/examples/templates/docker-image-builds/main.tf b/examples/templates/docker-image-builds/main.tf index 8ed2485d7bcb8..862dd020aef6c 100644 --- a/examples/templates/docker-image-builds/main.tf +++ b/examples/templates/docker-image-builds/main.tf @@ -69,7 +69,7 @@ variable "docker_image" { } resource "docker_volume" "home_volume" { - name = "coder-${data.coder_workspace.me.owner_id}-${data.coder_workspace.me.id}-home" + name = "coder-${data.coder_workspace.me.id}-home" } resource "docker_image" "coder_image" { diff --git a/examples/templates/docker-with-dotfiles/main.tf b/examples/templates/docker-with-dotfiles/main.tf index 8f3a50232e592..96dac6259e4ef 100644 --- a/examples/templates/docker-with-dotfiles/main.tf +++ b/examples/templates/docker-with-dotfiles/main.tf @@ -47,7 +47,7 @@ resource "coder_agent" "main" { } resource "docker_volume" "home_volume" { - name = "coder-${data.coder_workspace.me.owner_id}-${data.coder_workspace.me.id}-home" + name = "coder-${data.coder_workspace.me.id}-home" } resource "docker_container" "workspace" { diff --git a/examples/templates/docker/main.tf b/examples/templates/docker/main.tf index f22e3b70e3aa9..a55c4dde120f0 100644 --- a/examples/templates/docker/main.tf +++ b/examples/templates/docker/main.tf @@ -60,7 +60,7 @@ resource "coder_app" "code-server" { resource "docker_volume" "home_volume" { - name = "coder-${data.coder_workspace.me.owner_id}-${data.coder_workspace.me.id}-home" + name = "coder-${data.coder_workspace.me.id}-home" } diff --git a/examples/templates/gcp-linux/main.tf b/examples/templates/gcp-linux/main.tf index 827ddbbacf8a0..a95463df97854 100644 --- a/examples/templates/gcp-linux/main.tf +++ b/examples/templates/gcp-linux/main.tf @@ -36,7 +36,7 @@ data "coder_workspace" "me" { } resource "google_compute_disk" "root" { - name = "coder-${data.coder_workspace.me.owner_id}-${data.coder_workspace.me.id}-root" + name = "coder-${data.coder_workspace.me.id}-root" type = "pd-ssd" zone = var.zone image = "debian-cloud/debian-11" diff --git a/examples/templates/gcp-windows/main.tf b/examples/templates/gcp-windows/main.tf index 7b5be419b3460..5c41c67505164 100644 --- a/examples/templates/gcp-windows/main.tf +++ b/examples/templates/gcp-windows/main.tf @@ -36,7 +36,7 @@ data "google_compute_default_service_account" "default" { } resource "google_compute_disk" "root" { - name = "coder-${data.coder_workspace.me.owner_id}-${data.coder_workspace.me.id}-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" From 85e590fa592ff225696268861821e11723a01ebe Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Tue, 8 Nov 2022 15:41:14 +0000 Subject: [PATCH 3/3] Add lifecycle and labels --- docs/templates.md | 3 ++ dogfood/main.tf | 37 +++++++++++++++++ examples/templates/do-linux/main.tf | 4 ++ examples/templates/docker-code-server/main.tf | 40 +++++++++++++++++++ .../templates/docker-image-builds/main.tf | 40 +++++++++++++++++++ .../templates/docker-with-dotfiles/main.tf | 40 +++++++++++++++++++ examples/templates/docker/main.tf | 40 +++++++++++++++++++ examples/templates/gcp-linux/main.tf | 2 +- examples/templates/gcp-windows/main.tf | 2 +- 9 files changed, 206 insertions(+), 2 deletions(-) diff --git a/docs/templates.md b/docs/templates.md index a0d9a11ee44df..9b801a2a72a0d 100644 --- a/docs/templates.md +++ b/docs/templates.md @@ -185,6 +185,9 @@ resource "docker_volume" "home_volume" { # persistent resource (remains a workspace is stopped) count = 1 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 f5b40e20a69c3..27f447e92def6 100644 --- a/dogfood/main.tf +++ b/dogfood/main.tf @@ -55,9 +55,29 @@ resource "coder_app" "code-server" { resource "docker_volume" "home_volume" { 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" { @@ -116,6 +136,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 0fe2ffcdfcda0..713ee69242324 100644 --- a/examples/templates/do-linux/main.tf +++ b/examples/templates/do-linux/main.tf @@ -104,6 +104,10 @@ resource "digitalocean_volume" "home_volume" { 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 f72bf904e2adc..6ee9c569cbe3a 100644 --- a/examples/templates/docker-code-server/main.tf +++ b/examples/templates/docker-code-server/main.tf @@ -55,6 +55,29 @@ resource "coder_app" "code-server" { resource "docker_volume" "home_volume" { 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 862dd020aef6c..564ed545e58f1 100644 --- a/examples/templates/docker-image-builds/main.tf +++ b/examples/templates/docker-image-builds/main.tf @@ -70,6 +70,29 @@ variable "docker_image" { resource "docker_volume" "home_volume" { 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" { @@ -104,6 +127,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 96dac6259e4ef..517f509733942 100644 --- a/examples/templates/docker-with-dotfiles/main.tf +++ b/examples/templates/docker-with-dotfiles/main.tf @@ -48,6 +48,29 @@ resource "coder_agent" "main" { resource "docker_volume" "home_volume" { 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" { @@ -68,6 +91,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 a55c4dde120f0..5a7cfff1647cd 100644 --- a/examples/templates/docker/main.tf +++ b/examples/templates/docker/main.tf @@ -61,6 +61,29 @@ resource "coder_app" "code-server" { resource "docker_volume" "home_volume" { 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 + } } @@ -100,4 +123,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 a95463df97854..585a079ebff91 100644 --- a/examples/templates/gcp-linux/main.tf +++ b/examples/templates/gcp-linux/main.tf @@ -41,7 +41,7 @@ resource "google_compute_disk" "root" { 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 5c41c67505164..3b4dd745c5f67 100644 --- a/examples/templates/gcp-windows/main.tf +++ b/examples/templates/gcp-windows/main.tf @@ -41,7 +41,7 @@ resource "google_compute_disk" "root" { 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