diff --git a/.changes/v1.13/ENHANCEMENTS-20250408-130152.yaml b/.changes/v1.13/ENHANCEMENTS-20250408-130152.yaml new file mode 100644 index 000000000000..c9a057a433b2 --- /dev/null +++ b/.changes/v1.13/ENHANCEMENTS-20250408-130152.yaml @@ -0,0 +1,5 @@ +kind: ENHANCEMENTS +body: Terraform will use the value of TF_DATA_DIR for temporary files when installing providers, gracefully falling back to os.TempDir if it's unset. +time: 2025-04-08T13:01:52.791835-03:00 +custom: + Issue: "36863" diff --git a/internal/cloudplugin/binary.go b/internal/cloudplugin/binary.go index 606741924e71..90c82090a9dd 100644 --- a/internal/cloudplugin/binary.go +++ b/internal/cloudplugin/binary.go @@ -129,7 +129,8 @@ func (v BinaryManager) resolveRelease() (*Binary, error) { } // Download the archive - t, err := os.CreateTemp(os.TempDir(), "terraform-cloudplugin") + // if TF_DATA_DIR is unset, it defaults to "", which results in using TMPDIR or /tmp + t, err := os.CreateTemp(os.Getenv("TF_DATA_DIR"), "terraform-cloudplugin") if err != nil { return nil, fmt.Errorf("failed to create temp file for download: %w", err) } diff --git a/internal/providercache/package_install.go b/internal/providercache/package_install.go index 78de3ad064e8..1a4d26beec72 100644 --- a/internal/providercache/package_install.go +++ b/internal/providercache/package_install.go @@ -43,7 +43,8 @@ func installFromHTTPURL(ctx context.Context, meta getproviders.PackageMeta, targ // registry source. return nil, fmt.Errorf("invalid provider download request: %s", err) } - f, err := os.CreateTemp("", "terraform-provider") + // if TF_DATA_DIR is unset, it defaults to "", which results in using TMPDIR or /tmp + f, err := os.CreateTemp(os.Getenv("TF_DATA_DIR"), "terraform-provider") if err != nil { return nil, fmt.Errorf("failed to open temporary file to download from %s: %w", urlStr, err) }