Releases: hashicorp/terraform
v1.11.0-alpha20241218
1.11.0-alpha20241218 (December 18, 2024)
ENHANCEMENTS:
init
: Provider installation will utilise credentials configured in a.netrc
file for the download and shasum URLs returned by provider registries. (https://github.com/hashicorp/terraform/pull/35843)- New command
modules -json
: Displays a full list of all installed modules in a working directory, including whether each module is currently referenced by the working directory's configuration. (#35884, #36062)
EXPERIMENTS:
Experiments are only enabled in alpha releases of Terraform CLI. The following features are not yet available in stable releases.
terraform test
accepts a new option-junit-xml=FILENAME
. If specified, and if the test configuration is valid enough to begin executing, then Terraform writes a JUnit XML test result report to the given filename, describing similar information as included in the normal test output. (#34291)- The new command
terraform rpcapi
exposes some Terraform Core functionality through an RPC interface compatible withgo-plugin
. The exact RPC API exposed here is currently subject to change at any time, because it's here primarily as a vehicle to support the Terraform Stacks private preview and so will be broken if necessary to respond to feedback from private preview participants, or possibly for other reasons. Do not use this mechanism yet outside of Terraform Stacks private preview. - The experimental "deferred actions" feature, enabled by passing the
-allow-deferral
option toterraform plan
, permitscount
andfor_each
arguments inmodule
,resource
, anddata
blocks to have unknown values and allows providers to react more flexibly to unknown values. This experiment is under active development, and so it's not yet useful to participate in this experiment
Previous Releases
For information on prior major and minor releases, refer to their changelogs:
v1.10.3
v1.11.0-alpha20241211
1.11.0-alpha20241211 (December 11, 2024)
ENHANCEMENTS:
init
: Provider installation will utilise credentials configured in a.netrc
file for the download and shasum URLs returned by provider registries. (https://github.com/hashicorp/terraform/pull/35843)
EXPERIMENTS:
Experiments are only enabled in alpha releases of Terraform CLI. The following features are not yet available in stable releases.
terraform test
accepts a new option-junit-xml=FILENAME
. If specified, and if the test configuration is valid enough to begin executing, then Terraform writes a JUnit XML test result report to the given filename, describing similar information as included in the normal test output. (#34291)- The new command
terraform rpcapi
exposes some Terraform Core functionality through an RPC interface compatible withgo-plugin
. The exact RPC API exposed here is currently subject to change at any time, because it's here primarily as a vehicle to support the Terraform Stacks private preview and so will be broken if necessary to respond to feedback from private preview participants, or possibly for other reasons. Do not use this mechanism yet outside of Terraform Stacks private preview. - The experimental "deferred actions" feature, enabled by passing the
-allow-deferral
option toterraform plan
, permitscount
andfor_each
arguments inmodule
,resource
, anddata
blocks to have unknown values and allows providers to react more flexibly to unknown values. This experiment is under active development, and so it's not yet useful to participate in this experiment
Previous Releases
For information on prior major and minor releases, refer to their changelogs:
v1.10.2
v1.10.1
1.10.1 (December 4, 2024)
BUG FIXES:
- cli: Complex variables values set via environment variables were parsed incorrectly during apply (#36121)
- config:
templatefile
would panic if given and entirely unknown map of variables (#36118) - config:
templatefile
would panic if the variables map contains marked values (#36127) - config: Remove constraint that an expanded resource block must only be used in conjunction with imports using
for_each
(#36119) - backend/s3: Lock files could not be written to buckets with object locking enabled (#36120)
v1.10.0
1.10.0 (November 27, 2024)
NEW FEATURES:
- Ephemeral resources: Ephemeral resources are read anew during each phase of Terraform evaluation, and cannot be persisted to state storage. Ephemeral resources always produce ephemeral values.
- Ephemeral values: Input variables and outputs can now be defined as ephemeral. Ephemeral values may only be used in certain contexts in Terraform configuration, and are not persisted to the plan or state files.
ephemeralasnull
function: a function takes a value of any type and returns a similar value of the same type with any ephemeral values replaced with non-ephemeral null values and all non-ephemeral values preserved.
BUG FIXES:
- The
secret_suffix
in thekubernetes
backend now includes validation to prevent errors when thesecret_suffix
ends with a number (#35666). - The error message for an invalid default value for an input variable now indicates when the problem is with a nested value in a complex data type. (#35465)
- Sensitive marks could be incorrectly transferred to nested resource values, causing erroneous changes during a plan (#35501)
- Allow unknown
error_message
values to pass the core validate step, so variable validation can be completed later during plan
(#35537) - Unencoded slashes within GitHub module source refs were being truncated and incorrectly used as subdirectories in the request path (#35552)
- Terraform refresh-only plans with output only changes are now applyable. (#35812)
- Postconditions referencing
self
with many instances could encounter an error during evaluation (#35895) - The
plantimestamp()
function would return an invalid date during validation (#35902) - Updates to resources which were forced to use create_before_destroy could lose that flag in the state temporarily and cause cycles if immediately removed from the configuration (#35966)
- backend/cloud: Prefer KV tags, even when tags are defined as set (#35937)
- Simplify config generation (
plan -generate-config-out
) for string attributes that contain primitive types (e.g. numbers or booleans) (#35984) - config:
issensitive
could incorrectly assert that an unknown value was not sensitive during plan, but later became sensitive during apply, causing failures where changes did not match the planned result (#36012) - config: The evaluation of conditional expressions and for expression in HCL could lose marks with certain combinations of unknown values (#36017)
ENHANCEMENTS:
- The
element
function now accepts negative indices (#35501) - Import block validation has been improved to provide more useful errors and catch more invalid cases during
terraform validate
(#35543) - Performance enhancements for resource evaluation, especially when large numbers of resource instances are involved (#35558)
- The
plan
,apply
, andrefresh
commands now produce a deprecated warning when using the-state
flag. Instead use thepath
attribute within thelocal
backend to modify the state file. (#35660) - backend/cos: Add new auth for Tencent Cloud backend (#35888)
UPGRADE NOTES:
- backend/s3: Removes deprecated attributes for assuming IAM role. Must use the
assume_role
block (#35721) - backend/s3: The s3 backend now supports S3 native state locking. When used with DynamoDB-based locking, locks will be acquired from both sources. In a future minor release of Terraform the DynamoDB locking mechanism and associated arguments will be deprecated. (#35661)
moved
: Moved blocks now respect reserved keywords when parsing resource addresses. Configurations that reference resources with type names that match top level blocks and keywords frommoved
blocks will need to prepend theresource.
identifier to these references. (#35850)- config: In order to ensure consistency in results from HCL conditional expressions, marks must be combined from all values within the expression to avoid losing mark information. This typically improves accuracy when validating configuration, but users may see sensitive results where they were lost previously.
Previous Releases
For information on prior major and minor releases, refer to their changelogs:
v1.10.0-rc3
1.10.0-rc3 (November 25, 2024)
NEW FEATURES:
- Ephemeral resources: Ephemeral resources are read anew during each phase of Terraform evaluation, and cannot be persisted to state storage. Ephemeral resources always produce ephemeral values.
- Ephemeral values: Input variables and outputs can now be defined as ephemeral. Ephemeral values may only be used in certain contexts in Terraform configuration, and are not persisted to the plan or state files.
ephemeralasnull
function: a function takes a value of any type and returns a similar value of the same type with any ephemeral values replaced with non-ephemeral null values and all non-ephemeral values preserved.
BUG FIXES:
- The
secret_suffix
in thekubernetes
backend now includes validation to prevent errors when thesecret_suffix
ends with a number (#35666). - The error message for an invalid default value for an input variable now indicates when the problem is with a nested value in a complex data type. (#35465)
- Sensitive marks could be incorrectly transferred to nested resource values, causing erroneous changes during a plan (#35501)
- Allow unknown
error_message
values to pass the core validate step, so variable validation can be completed later during plan
(#35537) - Unencoded slashes within GitHub module source refs were being truncated and incorrectly used as subdirectories in the request path (#35552)
- Terraform refresh-only plans with output only changes are now applyable. (#35812)
- Postconditions referencing
self
with many instances could encounter an error during evaluation (#35895) - The
plantimestamp()
function would return an invalid date during validation (#35902) - Updates to resources which were forced to use create_before_destroy could lose that flag in the state temporarily and cause cycles if immediately removed from the configuration (#35966)
- backend/cloud: Prefer KV tags, even when tags are defined as set (#35937)
- Simplify config generation (
plan -generate-config-out
) for string attributes that contain primitive types (e.g. numbers or booleans) (#35984) - config:
issensitive
could incorrectly assert that an unknown value was not sensitive during plan, but later became sensitive during apply, causing failures where changes did not match the planned result (#36012) - config: The evaluation of conditional expressions and for expression in HCL could lose marks with certain combinations of unknown values (#36017)
ENHANCEMENTS:
- The
element
function now accepts negative indices (#35501) - Import block validation has been improved to provide more useful errors and catch more invalid cases during
terraform validate
(#35543) - Performance enhancements for resource evaluation, especially when large numbers of resource instances are involved (#35558)
- The
plan
,apply
, andrefresh
commands now produce a deprecated warning when using the-state
flag. Instead use thepath
attribute within thelocal
backend to modify the state file. (#35660) - backend/cos: Add new auth for Tencent Cloud backend (#35888)
UPGRADE NOTES:
- backend/s3: Removes deprecated attributes for assuming IAM role. Must use the
assume_role
block (#35721) - backend/s3: The s3 backend now supports S3 native state locking. When used with DynamoDB-based locking, locks will be acquired from both sources. In a future minor release of Terraform the DynamoDB locking mechanism and associated arguments will be deprecated. (#35661)
moved
: Moved blocks now respect reserved keywords when parsing resource addresses. Configurations that reference resources with type names that match top level blocks and keywords frommoved
blocks will need to prepend theresource.
identifier to these references. (#35850)- config: In order to ensure consistency in results from HCL conditional expressions, marks must be combined from all values within the expression to avoid losing mark information. This typically improves accuracy when validating configuration, but users may see sensitive results where they were lost previously.
Previous Releases
For information on prior major and minor releases, refer to their changelogs:
v1.10.0-rc2
1.10.0-rc2 (November 20, 2024)
NEW FEATURES:
- Ephemeral resources: Ephemeral resources are read anew during each phase of Terraform evaluation, and cannot be persisted to state storage. Ephemeral resources always produce ephemeral values.
- Ephemeral values: Input variables and outputs can now be defined as ephemeral. Ephemeral values may only be used in certain contexts in Terraform configuration, and are not persisted to the plan or state files.
ephemeralasnull
function: a function takes a value of any type and returns a similar value of the same type with any ephemeral values replaced with non-ephemeral null values and all non-ephemeral values preserved.
BUG FIXES:
- The
secret_suffix
in thekubernetes
backend now includes validation to prevent errors when thesecret_suffix
ends with a number (#35666). - The error message for an invalid default value for an input variable now indicates when the problem is with a nested value in a complex data type. (#35465)
- Sensitive marks could be incorrectly transferred to nested resource values, causing erroneous changes during a plan (#35501)
- Allow unknown
error_message
values to pass the core validate step, so variable validation can be completed later during plan
(#35537) - Unencoded slashes within GitHub module source refs were being truncated and incorrectly used as subdirectories in the request path (#35552)
- Terraform refresh-only plans with output only changes are now applyable. (#35812)
- Postconditions referencing
self
with many instances could encounter an error during evaluation (#35895) - The
plantimestamp()
function would return an invalid date during validation (#35902) - Updates to resources which were forced to use create_before_destroy could lose that flag in the state temporarily and cause cycles if immediately removed from the configuration (#35966)
- backend/cloud: Prefer KV tags, even when tags are defined as set (#35937)
- Simplify config generation (
plan -generate-config-out
) for string attributes that contain primitive types (e.g. numbers or booleans) (#35984) - config:
issensitive
could incorrectly assert that an unknown value was not sensitive during plan, but later became sensitive during apply, causing failures where changes did not match the planned result (#36012) - config: The evaluation of conditional expressions and for expression in HCL could lose marks with certain combinations of unknown values (#36017)
ENHANCEMENTS:
- The
element
function now accepts negative indices (#35501) - Import block validation has been improved to provide more useful errors and catch more invalid cases during
terraform validate
(#35543) - Performance enhancements for resource evaluation, especially when large numbers of resource instances are involved (#35558)
- The
plan
,apply
, andrefresh
commands now produce a deprecated warning when using the-state
flag. Instead use thepath
attribute within thelocal
backend to modify the state file. (#35660) - backend/cos: Add new auth for Tencent Cloud backend (#35888)
UPGRADE NOTES:
- backend/s3: Removes deprecated attributes for assuming IAM role. Must use the
assume_role
block (#35721) - backend/s3: The s3 backend now supports S3 native state locking. When used with DynamoDB-based locking, locks will be acquired from both sources. In a future minor release of Terraform the DynamoDB locking mechanism and associated arguments will be deprecated. (#35661)
moved
: Moved blocks now respect reserved keywords when parsing resource addresses. Configurations that reference resources with type names that match top level blocks and keywords frommoved
blocks will need to prepend theresource.
identifier to these references. (#35850)- config: In order to ensure consistency in results from HCL conditional expressions, marks must be combined from all values within the expression to avoid losing mark information. This typically improves accuracy when validating configuration, but users may see sensitive results where they were lost previously.
Previous Releases
For information on prior major and minor releases, refer to their changelogs:
v1.10.0-rc1
1.10.0-rc1 (November 13, 2024)
NEW FEATURES:
- Ephemeral resources: Ephemeral resources are read anew during each phase of Terraform evaluation, and cannot be persisted to state storage. Ephemeral resources always produce ephemeral values.
- Ephemeral values: Input variables and outputs can now be defined as ephemeral. Ephemeral values may only be used in certain contexts in Terraform configuration, and are not persisted to the plan or state files.
ephemeralasnull
function: a function takes a value of any type and returns a similar value of the same type with any ephemeral values replaced with non-ephemeral null values and all non-ephemeral values preserved.
BUG FIXES:
- The
secret_suffix
in thekubernetes
backend now includes validation to prevent errors when thesecret_suffix
ends with a number (#35666). - The error message for an invalid default value for an input variable now indicates when the problem is with a nested value in a complex data type. (#35465)
- Sensitive marks could be incorrectly transferred to nested resource values, causing erroneous changes during a plan (#35501)
- Allow unknown
error_message
values to pass the core validate step, so variable validation can be completed later during plan
(#35537) - Unencoded slashes within GitHub module source refs were being truncated and incorrectly used as subdirectories in the request path (#35552)
- Terraform refresh-only plans with output only changes are now applyable. (#35812)
- Postconditions referencing
self
with many instances could encounter an error during evaluation (#35895) - The
plantimestamp()
function would return an invalid date during validation (#35902) - Updates to resources which were forced to use create_before_destroy could lose that flag in the state temporarily and cause cycles if immediately removed from the configuration (#35966)
- backend/cloud: Prefer KV tags, even when tags are defined as set (#35937)
- Simplify config generation (
plan -generate-config-out
) for string attributes that contain primitive types (e.g. numbers or booleans) (#35984)
ENHANCEMENTS:
- The
element
function now accepts negative indices (#35501) - Import block validation has been improved to provide more useful errors and catch more invalid cases during
terraform validate
(#35543) - Performance enhancements for resource evaluation, especially when large numbers of resource instances are involved (#35558)
- The
plan
,apply
, andrefresh
commands now produce a deprecated warning when using the-state
flag. Instead use thepath
attribute within thelocal
backend to modify the state file. (#35660) - backend/cos: Add new auth for Tencent Cloud backend (#35888)
UPGRADE NOTES:
- backend/s3: Removes deprecated attributes for assuming IAM role. Must use the
assume_role
block (#35721) - backend/s3: The s3 backend now supports S3 native state locking. When used with DynamoDB-based locking, locks will be acquired from both sources. In a future minor release of Terraform the DynamoDB locking mechanism and associated arguments will be deprecated. (#35661)
moved
: Moved blocks now respect reserved keywords when parsing resource addresses. Configurations that reference resources with type names that match top level blocks and keywords frommoved
blocks will need to prepend theresource.
identifier to these references. (#35850)
Previous Releases
For information on prior major and minor releases, refer to their changelogs:
v1.11.0-alpha20241106
1.11.0-alpha20241106 (November 6, 2024)
EXPERIMENTS:
Experiments are only enabled in alpha releases of Terraform CLI. The following features are not yet available in stable releases.
terraform test
accepts a new option-junit-xml=FILENAME
. If specified, and if the test configuration is valid enough to begin executing, then Terraform writes a JUnit XML test result report to the given filename, describing similar information as included in the normal test output. (#34291)- The new command
terraform rpcapi
exposes some Terraform Core functionality through an RPC interface compatible withgo-plugin
. The exact RPC API exposed here is currently subject to change at any time, because it's here primarily as a vehicle to support the Terraform Stacks private preview and so will be broken if necessary to respond to feedback from private preview participants, or possibly for other reasons. Do not use this mechanism yet outside of Terraform Stacks private preview. - The experimental "deferred actions" feature, enabled by passing the
-allow-deferral
option toterraform plan
, permitscount
andfor_each
arguments inmodule
,resource
, anddata
blocks to have unknown values and allows providers to react more flexibly to unknown values. This experiment is under active development, and so it's not yet useful to participate in this experiment
Previous Releases
For information on prior major and minor releases, refer to their changelogs: