mirror of
https://github.com/coder/coder.git
synced 2026-06-03 21:18:24 +00:00
6e967780c9
Closes https://github.com/coder/internal/issues/369 We can't know whether a replacement (i.e. drift of terraform state leading to a resource needing to be deleted/recreated) will take place apriori; we can only detect it at `plan` time, because the provider decides whether a resource must be replaced and it cannot be inferred through static analysis of the template. **This is likely to be the most common gotcha with using prebuilds, since it requires a slight template modification to use prebuilds effectively**, so let's head this off before it's an issue for customers. Drift details will now be logged in the workspace build logs:  Plus a notification will be sent to template admins when this situation arises:  A new metric - `coderd_prebuilt_workspaces_resource_replacements_total` - will also increment each time a workspace encounters replacements. We only track _that_ a resource replacement occurred, not how many. Just one is enough to ruin a prebuild, but we can't know apriori which replacement would cause this. For example, say we have 2 replacements: a `docker_container` and a `null_resource`; we don't know which one might cause an issue (or indeed if either would), so we just track the replacement. --------- Signed-off-by: Danny Kopping <dannykopping@gmail.com>
132 lines
5.3 KiB
Plaintext
132 lines
5.3 KiB
Plaintext
From: system@coder.com
|
|
To: bobby@coder.com
|
|
Subject: There might be a problem with a recently claimed prebuilt workspace
|
|
Message-Id: 02ee4935-73be-4fa1-a290-ff9999026b13@blush-whale-48
|
|
Date: Fri, 11 Oct 2024 09:03:06 +0000
|
|
Content-Type: multipart/alternative; boundary=bbe61b741255b6098bb6b3c1f41b885773df633cb18d2a3002b68e4bc9c4
|
|
MIME-Version: 1.0
|
|
|
|
--bbe61b741255b6098bb6b3c1f41b885773df633cb18d2a3002b68e4bc9c4
|
|
Content-Transfer-Encoding: quoted-printable
|
|
Content-Type: text/plain; charset=UTF-8
|
|
|
|
Hi Bobby,
|
|
|
|
Workspace my-workspace was claimed from a prebuilt workspace by prebuilds-c=
|
|
laimer.
|
|
|
|
During the claim, Terraform destroyed and recreated the following resources
|
|
because one or more immutable attributes changed:
|
|
|
|
docker_container[0] was replaced due to changes to env, hostname
|
|
|
|
When Terraform must change an immutable attribute, it replaces the entire r=
|
|
esource.
|
|
If you=E2=80=99re using prebuilds to speed up provisioning, unexpected repl=
|
|
acements will slow down
|
|
workspace startup=E2=80=94even when claiming a prebuilt environment.
|
|
|
|
For tips on preventing replacements and improving claim performance, see th=
|
|
is guide (https://coder.com/docs/admin/templates/extending-templates/prebui=
|
|
lt-workspaces#preventing-resource-replacement).
|
|
|
|
NOTE: this prebuilt workspace used the particle-accelerator preset.
|
|
|
|
|
|
View workspace build: http://test.com/@prebuilds-claimer/my-workspace/build=
|
|
s/2
|
|
|
|
View template version: http://test.com/templates/cern/docker/versions/angry=
|
|
_torvalds
|
|
|
|
--bbe61b741255b6098bb6b3c1f41b885773df633cb18d2a3002b68e4bc9c4
|
|
Content-Transfer-Encoding: quoted-printable
|
|
Content-Type: text/html; charset=UTF-8
|
|
|
|
<!doctype html>
|
|
<html lang=3D"en">
|
|
<head>
|
|
<meta charset=3D"UTF-8" />
|
|
<meta name=3D"viewport" content=3D"width=3Ddevice-width, initial-scale=
|
|
=3D1.0" />
|
|
<title>There might be a problem with a recently claimed prebuilt worksp=
|
|
ace</title>
|
|
</head>
|
|
<body style=3D"margin: 0; padding: 0; font-family: -apple-system, system-=
|
|
ui, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarel=
|
|
l', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; color: #020617=
|
|
; background: #f8fafc;">
|
|
<div style=3D"max-width: 600px; margin: 20px auto; padding: 60px; borde=
|
|
r: 1px solid #e2e8f0; border-radius: 8px; background-color: #fff; text-alig=
|
|
n: left; font-size: 14px; line-height: 1.5;">
|
|
<div style=3D"text-align: center;">
|
|
<img src=3D"https://coder.com/coder-logo-horizontal.png" alt=3D"Cod=
|
|
er Logo" style=3D"height: 40px;" />
|
|
</div>
|
|
<h1 style=3D"text-align: center; font-size: 24px; font-weight: 400; m=
|
|
argin: 8px 0 32px; line-height: 1.5;">
|
|
There might be a problem with a recently claimed prebuilt workspace
|
|
</h1>
|
|
<div style=3D"line-height: 1.5;">
|
|
<p>Hi Bobby,</p>
|
|
<p>Workspace <strong>my-workspace</strong> was claimed from a prebu=
|
|
ilt workspace by <strong>prebuilds-claimer</strong>.</p>
|
|
|
|
<p>During the claim, Terraform destroyed and recreated the following resour=
|
|
ces<br>
|
|
because one or more immutable attributes changed:</p>
|
|
|
|
<ul>
|
|
<li>_docker<em>container[0]</em> was replaced due to changes to <em>env, h=
|
|
ostname</em><br>
|
|
</li>
|
|
</ul>
|
|
|
|
<p>When Terraform must change an immutable attribute, it replaces the entir=
|
|
e resource.<br>
|
|
If you=E2=80=99re using prebuilds to speed up provisioning, unexpected repl=
|
|
acements will slow down<br>
|
|
workspace startup=E2=80=94even when claiming a prebuilt environment.</p>
|
|
|
|
<p>For tips on preventing replacements and improving claim performance, see=
|
|
<a href=3D"https://coder.com/docs/admin/templates/extending-templates/preb=
|
|
uilt-workspaces#preventing-resource-replacement">this guide</a>.</p>
|
|
|
|
<p>NOTE: this prebuilt workspace used the <strong>particle-accelerator</str=
|
|
ong> preset.</p>
|
|
</div>
|
|
<div style=3D"text-align: center; margin-top: 32px;">
|
|
=20
|
|
<a href=3D"http://test.com/@prebuilds-claimer/my-workspace/builds/2=
|
|
" style=3D"display: inline-block; padding: 13px 24px; background-color: #02=
|
|
0617; color: #f8fafc; text-decoration: none; border-radius: 8px; margin: 0 =
|
|
4px;">
|
|
View workspace build
|
|
</a>
|
|
=20
|
|
<a href=3D"http://test.com/templates/cern/docker/versions/angry_tor=
|
|
valds" style=3D"display: inline-block; padding: 13px 24px; background-color=
|
|
: #020617; color: #f8fafc; text-decoration: none; border-radius: 8px; margi=
|
|
n: 0 4px;">
|
|
View template version
|
|
</a>
|
|
=20
|
|
</div>
|
|
<div style=3D"border-top: 1px solid #e2e8f0; color: #475569; font-siz=
|
|
e: 12px; margin-top: 64px; padding-top: 24px; line-height: 1.6;">
|
|
<p>© 2024 Coder. All rights reserved - <a =
|
|
href=3D"http://test.com" style=3D"color: #2563eb; text-decoration: none;">h=
|
|
ttp://test.com</a></p>
|
|
<p><a href=3D"http://test.com/settings/notifications" style=3D"colo=
|
|
r: #2563eb; text-decoration: none;">Click here to manage your notification =
|
|
settings</a></p>
|
|
<p><a href=3D"http://test.com/settings/notifications?disabled=3D89d=
|
|
9745a-816e-4695-a17f-3d0a229e2b8d" style=3D"color: #2563eb; text-decoration=
|
|
: none;">Stop receiving emails like this</a></p>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|
|
|
|
--bbe61b741255b6098bb6b3c1f41b885773df633cb18d2a3002b68e4bc9c4--
|