Skip to content

Commit 2fdd899

Browse files
committed
feat(provisioner): propagate trace info
If tracing is enabled, propagate the trace information to the terraform provisioner via environment variables. This sets the `TRACEPARENT` environment variable using the default W3C trace propagators. Users can choose to continue the trace by adding new spans in the provisioner by reading from the environment like: ctx := env.ContextWithRemoteSpanContext(context.Background(), os.Environ())
1 parent 9bc727e commit 2fdd899

File tree

3 files changed

+8
-0
lines changed

3 files changed

+8
-0
lines changed

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ require (
9999
github.com/coder/wgtunnel v0.1.13-0.20240522110300-ade90dfb2da0
100100
github.com/coreos/go-oidc/v3 v3.13.0
101101
github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf
102+
github.com/coryb/otelbundle/propagation/env v0.0.0-20250329212302-8bba361f6186
102103
github.com/creack/pty v1.1.21
103104
github.com/dave/dst v0.27.2
104105
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc

go.sum

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,8 @@ github.com/coreos/go-oidc/v3 v3.13.0 h1:M66zd0pcc5VxvBNM4pB331Wrsanby+QomQYjN8Ha
264264
github.com/coreos/go-oidc/v3 v3.13.0/go.mod h1:HaZ3szPaZ0e4r6ebqvsLWlk2Tn+aejfmrfah6hnSYEU=
265265
github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf h1:iW4rZ826su+pqaw19uhpSCzhj44qo35pNgKFGqzDKkU=
266266
github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
267+
github.com/coryb/otelbundle/propagation/env v0.0.0-20250329212302-8bba361f6186 h1:UFDyqz3hul8sfB6pDvXtTUbwI1XENo4nmBeDCOV65GQ=
268+
github.com/coryb/otelbundle/propagation/env v0.0.0-20250329212302-8bba361f6186/go.mod h1:wkP46S9+xTbU8C9L7RpTMMXiWOJyql54WIMq3hpM7tQ=
267269
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
268270
github.com/creack/pty v1.1.21 h1:1/QdRyBaHHJP61QkWMXlOIBfsgdDeeKfK8SYVUWJKf0=
269271
github.com/creack/pty v1.1.21/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
@@ -1020,6 +1022,8 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.5
10201022
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0/go.mod h1:ijPqXp5P6IRRByFVVg9DY8P5HkxkHE5ARIa+86aXPf4=
10211023
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0 h1:CV7UdSGJt/Ao6Gp4CXckLxVRRsRgDHoI8XjbL3PDl8s=
10221024
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0/go.mod h1:FRmFuRJfag1IZ2dPkHnEoSFVgTVPUd2qf5Vi69hLb8I=
1025+
go.opentelemetry.io/contrib/propagators/b3 v1.3.0 h1:f+JfMSDNm2u+fekYYjyoixk+DWDTDAGD3SC50y61koE=
1026+
go.opentelemetry.io/contrib/propagators/b3 v1.3.0/go.mod h1:qzi0km8qO3l2jxB5aDg4Q9xyqV4HKnCWZYpVYDTUIT0=
10231027
go.opentelemetry.io/otel v1.3.0/go.mod h1:PWIKzi6JCp7sM0k9yZ43VX+T345uNbAkDKwHVjb2PTs=
10241028
go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY=
10251029
go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI=

provisioner/terraform/provision.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717

1818
"cdr.dev/slog"
1919
"github.com/coder/terraform-provider-coder/v2/provider"
20+
propenv "github.com/coryb/otelbundle/propagation/env"
2021

2122
"github.com/coder/coder/v2/coderd/database"
2223
"github.com/coder/coder/v2/coderd/tracing"
@@ -156,6 +157,7 @@ func (s *server) Plan(
156157
if err != nil {
157158
return provisionersdk.PlanErrorf("setup env: %s", err)
158159
}
160+
env = propenv.Inject(ctx, env)
159161

160162
vars, err := planVars(request)
161163
if err != nil {
@@ -208,6 +210,7 @@ func (s *server) Apply(
208210
if err != nil {
209211
return provisionersdk.ApplyErrorf("provision env: %s", err)
210212
}
213+
env = propenv.Inject(ctx, env)
211214
resp, err := e.apply(
212215
ctx, killCtx, env, sess,
213216
)

0 commit comments

Comments
 (0)