
Terraform 1.15: What Dynamic Module Sources Change for Platform Teams
Enterprise Developer PlatformsTerraform 1.15 ships without breaking changes but adds capabilities that have been on platform teams’ wish lists for years — most significantly the ability to use variables inside module source references, which unlocks dynamic module versioning patterns that previously required workarounds or external tooling.
The Dynamic Sources Feature
The headline addition is const = true variable support in module sources and dependencies. Platform teams maintaining internal module registries currently have to hardcode version strings in source blocks or maintain separate configuration layers to manage module versions across environments. With 1.15, variables marked const = true can be referenced in source and version arguments during terraform init, enabling version pinning via variable files rather than in-line strings.
According to HashiCorp, this means “practitioners can now use variables within Terraform dependencies, encompassing aspects such as module sources and versions.” The key constraint: const variables cannot simultaneously be sensitive or ephemeral — they must be resolvable at init time before any remote state is available.
The practical application for enterprise module consumers: environment-specific module versions can live in .tfvars files checked into version control alongside the configuration, rather than requiring branch-level modifications to the module source block itself.
Variable and Output Deprecation
Module authors can now add a deprecated attribute to variable and output blocks to signal that an interface is being removed. When a deprecated variable is referenced, Terraform emits a diagnostic warning during validation without failing the run — allowing a migration window before the variable is removed entirely.
The feature also handles deprecated outputs intelligently: referencing a deprecated output from another deprecated output suppresses the cascade of warnings that would otherwise surface for consumers who haven’t yet migrated. This enables a phased deprecation strategy — mark the input deprecated, update the documentation, and let the warning accumulate in CI logs rather than forcing an immediate breaking change.
Windows ARM64 and S3 Backend Changes
Native Windows ARM64 binaries are now officially supported, enabling Terraform on Surface Pro devices, the Windows Dev Kit 2023, and ARM VMs running under Parallels on Apple Silicon. This matters for enterprise environments managing developer toolchain standardization — Windows ARM machines can now run Terraform natively without x86 emulation overhead.
The S3 backend gains native support for AWS’s aws login authentication method, eliminating reliance on long-term access keys for programmatic backend access. For teams using AWS IAM Identity Center (SSO), this closes the gap that previously required key rotation or credential helper scripts for automated Terraform runs.
The So What
None of the 1.15 features are dramatic on their own, but they compound for teams managing large Terraform estates. Dynamic module sources reduce version drift management overhead. Variable deprecation enables cleaner module API evolution without coordination windows. S3 native auth removes a credential management category entirely. Together, they move Terraform’s infrastructure drift management tooling closer to the pattern of software dependency management — where versions, interfaces, and auth are handled systematically rather than through convention and documentation.
For the Enterprise Developer Platform practitioner, 1.15 is an upgrade worth scheduling into the next maintenance cycle rather than the next change freeze.
Photo by Kevin Ku on Pexels
Source: HashiCorp Blog
Content created with AI assistance and reviewed for accuracy.
Join the conversation
Stack Insiders is our free community for readers who want to go deeper — share resources, ask questions, and connect with others across every vertical we cover.
Join Stack Insiders →