Skip to content

Commit ed7de90

Browse files
authored
fix: Use immutable names for volumes in example templates (#4954)
* fix: Use immutable names for volumes in example templates This contributes towards #3000, #3386 Related #3409 * Add lifecycle and labels
1 parent 26ab0d3 commit ed7de90

File tree

9 files changed

+215
-11
lines changed

9 files changed

+215
-11
lines changed

docs/templates.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,10 @@ data "coder_workspace" "me" {
184184
resource "docker_volume" "home_volume" {
185185
# persistent resource (remains a workspace is stopped)
186186
count = 1
187-
name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}-root"
187+
name = "coder-${data.coder_workspace.me.id}-home"
188+
lifecycle {
189+
ignore_changes = all
190+
}
188191
}
189192
190193
resource "docker_container" "workspace" {

dogfood/main.tf

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,30 @@ resource "coder_app" "code-server" {
5454
}
5555

5656
resource "docker_volume" "home_volume" {
57-
name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}-home"
57+
name = "coder-${data.coder_workspace.me.id}-home"
58+
# Protect the volume from being deleted due to changes in attributes.
5859
lifecycle {
5960
ignore_changes = all
6061
}
62+
# Add labels in Docker to keep track of orphan resources.
63+
labels {
64+
label = "coder.owner"
65+
value = data.coder_workspace.me.owner
66+
}
67+
labels {
68+
label = "coder.owner_id"
69+
value = data.coder_workspace.me.owner_id
70+
}
71+
labels {
72+
label = "coder.workspace_id"
73+
value = data.coder_workspace.me.id
74+
}
75+
# This field becomes outdated if the workspace is renamed but can
76+
# be useful for debugging or cleaning out dangling volumes.
77+
labels {
78+
label = "coder.workspace_name_at_creation"
79+
value = data.coder_workspace.me.name
80+
}
6181
}
6282

6383
resource "coder_metadata" "home_info" {
@@ -108,6 +128,23 @@ resource "docker_container" "workspace" {
108128
volume_name = docker_volume.home_volume.name
109129
read_only = false
110130
}
131+
# Add labels in Docker to keep track of orphan resources.
132+
labels {
133+
label = "coder.owner"
134+
value = data.coder_workspace.me.owner
135+
}
136+
labels {
137+
label = "coder.owner_id"
138+
value = data.coder_workspace.me.owner_id
139+
}
140+
labels {
141+
label = "coder.workspace_id"
142+
value = data.coder_workspace.me.id
143+
}
144+
labels {
145+
label = "coder.workspace_name"
146+
value = data.coder_workspace.me.name
147+
}
111148
}
112149

113150
resource "coder_metadata" "container_info" {

examples/templates/do-linux/main.tf

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,10 +100,14 @@ resource "coder_agent" "main" {
100100

101101
resource "digitalocean_volume" "home_volume" {
102102
region = var.region
103-
name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}-home"
103+
name = "coder-${data.coder_workspace.me.id}-home"
104104
size = var.home_volume_size
105105
initial_filesystem_type = "ext4"
106106
initial_filesystem_label = "coder-home"
107+
# Protect the volume from being deleted due to changes in attributes.
108+
lifecycle {
109+
ignore_changes = all
110+
}
107111
}
108112

109113
resource "digitalocean_droplet" "workspace" {

examples/templates/docker-code-server/main.tf

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,30 @@ resource "coder_app" "code-server" {
5454
}
5555

5656
resource "docker_volume" "home_volume" {
57-
name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}-root"
57+
name = "coder-${data.coder_workspace.me.id}-home"
58+
# Protect the volume from being deleted due to changes in attributes.
59+
lifecycle {
60+
ignore_changes = all
61+
}
62+
# Add labels in Docker to keep track of orphan resources.
63+
labels {
64+
label = "coder.owner"
65+
value = data.coder_workspace.me.owner
66+
}
67+
labels {
68+
label = "coder.owner_id"
69+
value = data.coder_workspace.me.owner_id
70+
}
71+
labels {
72+
label = "coder.workspace_id"
73+
value = data.coder_workspace.me.id
74+
}
75+
# This field becomes outdated if the workspace is renamed but can
76+
# be useful for debugging or cleaning out dangling volumes.
77+
labels {
78+
label = "coder.workspace_name_at_creation"
79+
value = data.coder_workspace.me.name
80+
}
5881
}
5982

6083
resource "docker_container" "workspace" {
@@ -76,4 +99,21 @@ resource "docker_container" "workspace" {
7699
volume_name = docker_volume.home_volume.name
77100
read_only = false
78101
}
102+
# Add labels in Docker to keep track of orphan resources.
103+
labels {
104+
label = "coder.owner"
105+
value = data.coder_workspace.me.owner
106+
}
107+
labels {
108+
label = "coder.owner_id"
109+
value = data.coder_workspace.me.owner_id
110+
}
111+
labels {
112+
label = "coder.workspace_id"
113+
value = data.coder_workspace.me.id
114+
}
115+
labels {
116+
label = "coder.workspace_name"
117+
value = data.coder_workspace.me.name
118+
}
79119
}

examples/templates/docker-image-builds/main.tf

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,30 @@ variable "docker_image" {
6969
}
7070

7171
resource "docker_volume" "home_volume" {
72-
name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}-root"
72+
name = "coder-${data.coder_workspace.me.id}-home"
73+
# Protect the volume from being deleted due to changes in attributes.
74+
lifecycle {
75+
ignore_changes = all
76+
}
77+
# Add labels in Docker to keep track of orphan resources.
78+
labels {
79+
label = "coder.owner"
80+
value = data.coder_workspace.me.owner
81+
}
82+
labels {
83+
label = "coder.owner_id"
84+
value = data.coder_workspace.me.owner_id
85+
}
86+
labels {
87+
label = "coder.workspace_id"
88+
value = data.coder_workspace.me.id
89+
}
90+
# This field becomes outdated if the workspace is renamed but can
91+
# be useful for debugging or cleaning out dangling volumes.
92+
labels {
93+
label = "coder.workspace_name_at_creation"
94+
value = data.coder_workspace.me.name
95+
}
7396
}
7497

7598
resource "docker_image" "coder_image" {
@@ -103,6 +126,23 @@ resource "docker_container" "workspace" {
103126
volume_name = docker_volume.home_volume.name
104127
read_only = false
105128
}
129+
# Add labels in Docker to keep track of orphan resources.
130+
labels {
131+
label = "coder.owner"
132+
value = data.coder_workspace.me.owner
133+
}
134+
labels {
135+
label = "coder.owner_id"
136+
value = data.coder_workspace.me.owner_id
137+
}
138+
labels {
139+
label = "coder.workspace_id"
140+
value = data.coder_workspace.me.id
141+
}
142+
labels {
143+
label = "coder.workspace_name"
144+
value = data.coder_workspace.me.name
145+
}
106146
}
107147

108148
resource "coder_metadata" "container_info" {

examples/templates/docker-with-dotfiles/main.tf

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,30 @@ resource "coder_agent" "main" {
4747
}
4848

4949
resource "docker_volume" "home_volume" {
50-
name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}-root"
50+
name = "coder-${data.coder_workspace.me.id}-home"
51+
# Protect the volume from being deleted due to changes in attributes.
52+
lifecycle {
53+
ignore_changes = all
54+
}
55+
# Add labels in Docker to keep track of orphan resources.
56+
labels {
57+
label = "coder.owner"
58+
value = data.coder_workspace.me.owner
59+
}
60+
labels {
61+
label = "coder.owner_id"
62+
value = data.coder_workspace.me.owner_id
63+
}
64+
labels {
65+
label = "coder.workspace_id"
66+
value = data.coder_workspace.me.id
67+
}
68+
# This field becomes outdated if the workspace is renamed but can
69+
# be useful for debugging or cleaning out dangling volumes.
70+
labels {
71+
label = "coder.workspace_name_at_creation"
72+
value = data.coder_workspace.me.name
73+
}
5174
}
5275

5376
resource "docker_container" "workspace" {
@@ -69,6 +92,23 @@ resource "docker_container" "workspace" {
6992
volume_name = docker_volume.home_volume.name
7093
read_only = false
7194
}
95+
# Add labels in Docker to keep track of orphan resources.
96+
labels {
97+
label = "coder.owner"
98+
value = data.coder_workspace.me.owner
99+
}
100+
labels {
101+
label = "coder.owner_id"
102+
value = data.coder_workspace.me.owner_id
103+
}
104+
labels {
105+
label = "coder.workspace_id"
106+
value = data.coder_workspace.me.id
107+
}
108+
labels {
109+
label = "coder.workspace_name"
110+
value = data.coder_workspace.me.name
111+
}
72112
}
73113

74114
resource "coder_metadata" "container_info" {

examples/templates/docker/main.tf

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,30 @@ resource "coder_app" "code-server" {
6060

6161

6262
resource "docker_volume" "home_volume" {
63-
name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}-home"
63+
name = "coder-${data.coder_workspace.me.id}-home"
64+
# Protect the volume from being deleted due to changes in attributes.
65+
lifecycle {
66+
ignore_changes = all
67+
}
68+
# Add labels in Docker to keep track of orphan resources.
69+
labels {
70+
label = "coder.owner"
71+
value = data.coder_workspace.me.owner
72+
}
73+
labels {
74+
label = "coder.owner_id"
75+
value = data.coder_workspace.me.owner_id
76+
}
77+
labels {
78+
label = "coder.workspace_id"
79+
value = data.coder_workspace.me.id
80+
}
81+
# This field becomes outdated if the workspace is renamed but can
82+
# be useful for debugging or cleaning out dangling volumes.
83+
labels {
84+
label = "coder.workspace_name_at_creation"
85+
value = data.coder_workspace.me.name
86+
}
6487
}
6588

6689

@@ -93,4 +116,21 @@ resource "docker_container" "workspace" {
93116
volume_name = docker_volume.home_volume.name
94117
read_only = false
95118
}
119+
# Add labels in Docker to keep track of orphan resources.
120+
labels {
121+
label = "coder.owner"
122+
value = data.coder_workspace.me.owner
123+
}
124+
labels {
125+
label = "coder.owner_id"
126+
value = data.coder_workspace.me.owner_id
127+
}
128+
labels {
129+
label = "coder.workspace_id"
130+
value = data.coder_workspace.me.id
131+
}
132+
labels {
133+
label = "coder.workspace_name"
134+
value = data.coder_workspace.me.name
135+
}
96136
}

examples/templates/gcp-linux/main.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@ data "coder_workspace" "me" {
3636
}
3737

3838
resource "google_compute_disk" "root" {
39-
name = "coder-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}-root"
39+
name = "coder-${data.coder_workspace.me.id}-root"
4040
type = "pd-ssd"
4141
zone = var.zone
4242
image = "debian-cloud/debian-11"
4343
lifecycle {
44-
ignore_changes = [image]
44+
ignore_changes = [name, image]
4545
}
4646
}
4747

examples/templates/gcp-windows/main.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@ data "google_compute_default_service_account" "default" {
3636
}
3737

3838
resource "google_compute_disk" "root" {
39-
name = "coder-${lower(data.coder_workspace.me.owner)}-${lower(data.coder_workspace.me.name)}-root"
39+
name = "coder-${data.coder_workspace.me.id}-root"
4040
type = "pd-ssd"
4141
zone = var.zone
4242
image = "projects/windows-cloud/global/images/windows-server-2022-dc-core-v20220215"
4343
lifecycle {
44-
ignore_changes = [image]
44+
ignore_changes = [name, image]
4545
}
4646
}
4747

0 commit comments

Comments
 (0)
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