- Notifications
You must be signed in to change notification settings - Fork928
Description
OS Information
- OS: Linux
coder --version
: Coder v0.5.5-devel+2d3dc43 Tue May 10 07:44:09 UTC 2022
Steps to Reproduce
- Set a terraform environment variable:
export TF_LOG=1
- Run
coder server
- Create first template:
coder templates create docker-local -d ~/src/cdr/coder/examples/docker-local
There should be no issue creating the template, or detailed hints on how to fix the problem (e.g. coder server is running with these environment variables set, please restart it without).
Actual
Template creation fails:
>Create and upload"~/src/cdr/coder/examples/docker-local"? (yes/no) yes✔ Queued [139ms]✔ Setting up [6ms]✔ Parse parameters [17ms]✘ Detecting persistent resources [420ms]template import provision for start: recv import provision: set terraform env: manual setting of env var "TF_LOG" detected
Notes
Consideringthis comment I wanted to see if I can get more information out of terraform (a naive approach). I think it's fine the value can't be changed but I would have expected this value to either propagate to terraform or for the server to either inform of a way to fix it or filter out the variable.
We could for instance filter out some incompatibleTF_
env vars here, potentially logging the exclusion as a warning:
coder/provisioner/terraform/provision.go
Lines 93 to 111 in2d3dc43
terraformEnv:=map[string]string{} | |
// Required for "terraform init" to find "git" to | |
// clone Terraform modules. | |
for_,env:=rangeos.Environ() { | |
parts:=strings.SplitN(env,"=",2) | |
iflen(parts)<2 { | |
continue | |
} | |
terraformEnv[parts[0]]=parts[1] | |
} | |
// Only Linux reliably works with the Terraform plugin | |
// cache directory. It's unknown why this is. | |
ift.cachePath!=""&&runtime.GOOS=="linux" { | |
terraformEnv["TF_PLUGIN_CACHE_DIR"]=t.cachePath | |
} | |
err=terraform.SetEnv(terraformEnv) | |
iferr!=nil { | |
returnxerrors.Errorf("set terraform env: %w",err) | |
} |
AC
Replace the terraform exec command with directly executing terraform
Test for the steps to repro this bug to validate this case is covered
Expose in the logs that the env vars are set