Thanks to visit codestin.com
Credit goes to github.com

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

+4-1
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

+38-1
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

+5-1
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

+41-1
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

+41-1
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

+41-1
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

+41-1
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

+2-2
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

+2-2
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)