Releases: hashicorp/terraform
v1.5.0-rc2
1.5.0-rc2 (June 5, 2023)
NEW FEATURES:
-
checkblocks for validating infrastructure: Module and configuration authors can now write independent check blocks within their configuration to validate assertions about their infrastructure.The new independent
checkblocks must specify at least oneassertblock, but possibly many, each one with aconditionexpression and anerror_messageexpression matching the existing Custom Condition Checks.
Additionally, check blocks can optionally load a scoped data source. Scoped data sources match the existing data sources with the exception that they can only be referenced from within their check block.Unlike the existing
preconditionandpostconditionblocks, Terraform will not halt execution should the scoped data block fail or error or if any of the assertions fail.
This allows practitioners to continually validate the state of their infrastructure outside the usual lifecycle management cycle. -
importblocks for importing infrastructure: Root module authors can now use theimportblock to declare their intent that Terraform adopt an existing resource.Import is now a configuration-driven, plannable action, and is processed as part of a normal plan. Running
terraform planwill show a summary of the resources that Terraform has planned to import, along with any other plan changes.The existing
terraform importCLI command has not been modified.This is an early version of the
importblock feature, for which we are actively seeking user feedback to shape future development. Theimportblock currently does not support interpolation in theidfield, which must be a string. -
Generating configuration for imported resources: in conjunction with the
importblock, this feature enables easy templating of configuration when importing existing resources into Terraform. A new flag-generate-config-out=PATHis added toterraform plan. When this flag is set, Terraform will generate HCL configuration for any resource included in animportblock that does not already have associated configuration, and write it to a new file atPATH. Before applying, review the generated configuration and edit it as necessary. -
Adds a new
plantimestampfunction that returns the timestamp at plan time. This is similar to thetimestampfunction which returns the timestamp at apply time (#32980). -
Adds a new
strcontainsfunction that checks whether a given string contains a given substring. (#33069)
UPGRADE NOTES:
-
This is the last version of Terraform for which macOS 10.13 High Sierra or 10.14 Mojave are officially supported. Future Terraform versions may not function correctly on these older versions of macOS.
-
This is the last version of Terraform for which Windows 7, 8, Server 2008, and Server 2012 are supported by Terraform's main implementation language, Go. We already ended explicit support for versions earlier than Windows 10 in Terraform v0.15.0, but future Terraform versions may malfunction in more significant ways on these older Windows versions.
-
On Linux (and some other non-macOS Unix platforms we don't officially support), Terraform will now notice the
trust-adoption in/etc/resolv.confand, if set, will set the "authentic data" option in outgoing DNS requests in order to better match the behavior of the GNU libc resolver.Terraform does not pay any attention to the corresponding option in responses, but some DNSSEC-aware recursive resolvers return different responses when the request option isn't set. This should therefore avoid some potential situations where a DNS request from Terraform might get a different response than a similar request from other software on your system.
ENHANCEMENTS:
- Terraform CLI's local operations mode will now attempt to persist state snapshots to the state storage backend periodically during the apply step, thereby reducing the window for lost data if the Terraform process is aborted unexpectedly. (#32680)
- If Terraform CLI receives SIGINT (or its equivalent on non-Unix platforms) during the apply step then it will immediately try to persist the latest state snapshot to the state storage backend, with the assumption that a graceful shutdown request often typically followed by a hard abort some time later if the graceful shutdown doesn't complete fast enough. (#32680)
pgbackend: Now supports thePG_CONN_STR,PG_SCHEMA_NAME,PG_SKIP_SCHEMA_CREATION,PG_SKIP_TABLE_CREATIONandPG_SKIP_INDEX_CREATIONenvironment variables. (#33045)
BUG FIXES:
terraform init: Fixed crash with invalid blank module name. (#32781)movedblocks: Fixed a typo in the error message that Terraform raises when you use-targetto exclude an object that has been moved. (#33149)
Previous Releases
For information on prior major and minor releases, see their changelogs:
v1.5.0-rc1
1.5.0-rc1 (May 31, 2023)
NEW FEATURES:
-
checkblocks for validating infrastructure: Module and configuration authors can now write independent check blocks within their configuration to validate assertions about their infrastructure.The new independent
checkblocks must specify at least oneassertblock, but possibly many, each one with aconditionexpression and anerror_messageexpression matching the existing Custom Condition Checks.
Additionally, check blocks can optionally load a scoped data source. Scoped data sources match the existing data sources with the exception that they can only be referenced from within their check block.Unlike the existing
preconditionandpostconditionblocks, Terraform will not halt execution should the scoped data block fail or error or if any of the assertions fail.
This allows practitioners to continually validate the state of their infrastructure outside the usual lifecycle management cycle. -
importblocks for importing infrastructure: Root module authors can now use theimportblock to declare their intent that Terraform adopt an existing resource.Import is now a configuration-driven, plannable action, and is processed as part of a normal plan. Running
terraform planwill show a summary of the resources that Terraform has planned to import, along with any other plan changes.The existing
terraform importCLI command has not been modified.This is an early version of the
importblock feature, for which we are actively seeking user feedback to shape future development. Theimportblock currently does not support interpolation in theidfield, which must be a string. -
Generating configuration for imported resources: in conjunction with the
importblock, this feature enables easy templating of configuration when importing existing resources into Terraform. A new flag-generate-config-out=PATHis added toterraform plan. When this flag is set, Terraform will generate HCL configuration for any resource included in animportblock that does not already have associated configuration, and write it to a new file atPATH. Before applying, review the generated configuration and edit it as necessary. -
Adds a new
plantimestampfunction that returns the timestamp at plan time. This is similar to thetimestampfunction which returns the timestamp at apply time. -
Adds a new
strcontainsfunction that checks whether a given string contains a given substring. (#33069)
UPGRADE NOTES:
-
This is the last version of Terraform for which macOS 10.13 High Sierra or 10.14 Mojave are officially supported. Future Terraform versions may not function correctly on these older versions of macOS.
-
This is the last version of Terraform for which Windows 7, 8, Server 2008, and Server 2012 are supported by Terraform's main implementation language, Go. We already ended explicit support for versions earlier than Windows 10 in Terraform v0.15.0, but future Terraform versions may malfunction in more significant ways on these older Windows versions.
-
On Linux (and some other non-macOS Unix platforms we don't officially support), Terraform will now notice the
trust-adoption in/etc/resolv.confand, if set, will set the "authentic data" option in outgoing DNS requests in order to better match the behavior of the GNU libc resolver.Terraform does not pay any attention to the corresponding option in responses, but some DNSSEC-aware recursive resolvers return different responses when the request option isn't set. This should therefore avoid some potential situations where a DNS request from Terraform might get a different response than a similar request from other software on your system.
ENHANCEMENTS:
- Terraform CLI's local operations mode will now attempt to persist state snapshots to the state storage backend periodically during the apply step, thereby reducing the window for lost data if the Terraform process is aborted unexpectedly. (#32680)
- If Terraform CLI receives SIGINT (or its equivalent on non-Unix platforms) during the apply step then it will immediately try to persist the latest state snapshot to the state storage backend, with the assumption that a graceful shutdown request often typically followed by a hard abort some time later if the graceful shutdown doesn't complete fast enough. (#32680)
pgbackend: Now supports thePG_CONN_STR,PG_SCHEMA_NAME,PG_SKIP_SCHEMA_CREATION,PG_SKIP_TABLE_CREATIONandPG_SKIP_INDEX_CREATIONenvironment variables. (#33045)
BUG FIXES:
terraform init: Fixed crash with invalid blank module name. (#32781)movedblocks: Fixed a typo in the error message that Terraform raises when you use-targetto exclude an object that has been moved. (#33149)
Previous Releases
For information on prior major and minor releases, see their changelogs:
v1.5.0-beta2
1.5.0-beta2 (May 24, 2023)
NEW FEATURES:
-
checkblocks for validating infrastructure: Module and configuration authors can now write independent check blocks within their configuration to validate assertions about their infrastructure.The new independent
checkblocks must specify at least oneassertblock, but possibly many, each one with aconditionexpression and anerror_messageexpression matching the existing Custom Condition Checks.
Additionally, check blocks can optionally load a scoped data source. Scoped data sources match the existing data sources with the exception that they can only be referenced from within their check block.Unlike the existing
preconditionandpostconditionblocks, Terraform will not halt execution should the scoped data block fail or error or if any of the assertions fail.
This allows practitioners to continually validate the state of their infrastructure outside the usual lifecycle management cycle. -
importblocks for importing infrastructure: Root module authors can now use theimportblock to declare their intent that Terraform adopt an existing resource.Import is now a configuration-driven, plannable action, and is processed as part of a normal plan. Running
terraform planwill show a summary of the resources that Terraform has planned to import, along with any other plan changes.The existing
terraform importCLI command has not been modified.This is an early version of the
importblock feature, for which we are actively seeking user feedback to shape future development. Theimportblock currently does not support interpolation in theidfield, which must be a string. -
Generating configuration for imported resources: in conjunction with the
importblock, this feature enables easy templating of configuration when importing existing resources into Terraform. A new flag-generate-config-out=PATHis added toterraform plan. When this flag is set, Terraform will generate HCL configuration for any resource included in animportblock that does not already have associated configuration, and write it to a new file atPATH. Before applying, review the generated configuration and edit it as necessary. -
Adds a new
plantimestampfunction that returns the timestamp at plan time. This is similar to thetimestampfunction which returns the timestamp at apply time. -
Adds a new
strcontainsfunction that checks whether a given string contains a given substring. (#33069)
UPGRADE NOTES:
-
This is the last version of Terraform for which macOS 10.13 High Sierra or 10.14 Mojave are officially supported. Future Terraform versions may not function correctly on these older versions of macOS.
-
This is the last version of Terraform for which Windows 7, 8, Server 2008, and Server 2012 are supported by Terraform's main implementation language, Go. We already ended explicit support for versions earlier than Windows 10 in Terraform v0.15.0, but future Terraform versions may malfunction in more significant ways on these older Windows versions.
-
On Linux (and some other non-macOS Unix platforms we don't officially support), Terraform will now notice the
trust-adoption in/etc/resolv.confand, if set, will set the "authentic data" option in outgoing DNS requests in order to better match the behavior of the GNU libc resolver.Terraform does not pay any attention to the corresponding option in responses, but some DNSSEC-aware recursive resolvers return different responses when the request option isn't set. This should therefore avoid some potential situations where a DNS request from Terraform might get a different response than a similar request from other software on your system.
ENHANCEMENTS:
- Terraform CLI's local operations mode will now attempt to persist state snapshots to the state storage backend periodically during the apply step, thereby reducing the window for lost data if the Terraform process is aborted unexpectedly. (#32680)
- If Terraform CLI receives SIGINT (or its equivalent on non-Unix platforms) during the apply step then it will immediately try to persist the latest state snapshot to the state storage backend, with the assumption that a graceful shutdown request often typically followed by a hard abort some time later if the graceful shutdown doesn't complete fast enough. (#32680)
pgbackend: Now supports thePG_CONN_STR,PG_SCHEMA_NAME,PG_SKIP_SCHEMA_CREATION,PG_SKIP_TABLE_CREATIONandPG_SKIP_INDEX_CREATIONenvironment variables. (#33045)
BUG FIXES:
terraform init: Fixed crash with invalid blank module name. (#32781)movedblocks: Fixed a typo in the error message that Terraform raises when you use-targetto exclude an object that has been moved. (#33149)
Previous Releases
For information on prior major and minor releases, see their changelogs:
v1.5.0-beta1
1.5.0-beta1 (May 15, 2023)
NEW FEATURES:
-
checkblocks for validating infrastructure: Module and configuration authors can now write independent check blocks within their configuration to validate assertions about their infrastructure.The new independent
checkblocks must specify at least oneassertblock, but possibly many, each one with aconditionexpression and anerror_messageexpression matching the existing Custom Condition Checks.
Additionally, check blocks can optionally load a scoped data source. Scoped data sources match the existing data sources with the exception that they can only be referenced from within their check block.Unlike the existing
preconditionandpostconditionblocks, Terraform will not halt execution should the scoped data block fail or error or if any of the assertions fail.
This allows practitioners to continually validate the state of their infrastructure outside the usual lifecycle management cycle. -
importblocks for importing infrastructure: Root module authors can now use theimportblock to declare their intent that Terraform adopt an existing resource.Import is now a configuration-driven, plannable action, and is processed as part of a normal plan. Running
terraform planwill show a summary of the resources that Terraform has planned to import, along with any other plan changes.The existing
terraform importCLI command has not been modified.This is an early version of the
importblock feature, for which we are actively seeking user feedback to shape future development. Theimportblock currently does not support interpolation in theidfield, which must be a string. -
Generating configuration for imported resources: in conjunction with the
importblock, this feature enables easy templating of configuration when importing existing resources into Terraform. A new flag-generate-config-out=PATHis added toterraform plan. When this flag is set, Terraform will generate HCL configuration for any resource included in animportblock that does not already have associated configuration, and write it to a new file atPATH. Before applying, review the generated configuration and edit it as necessary. -
Adds a new
plantimestampfunction that returns the timestamp at plan time. This is similar to thetimestampfunction which returns the timestamp at apply time. -
Adds a new
strcontainsfunction that checks whether a given string contains a given substring. (#33069)
UPGRADE NOTES:
-
This is the last version of Terraform for which macOS 10.13 High Sierra or 10.14 Mojave are officially supported. Future Terraform versions may not function correctly on these older versions of macOS.
-
This is the last version of Terraform for which Windows 7, 8, Server 2008, and Server 2012 are supported by Terraform's main implementation language, Go. We already ended explicit support for versions earlier than Windows 10 in Terraform v0.15.0, but future Terraform versions may malfunction in more significant ways on these older Windows versions.
-
On Linux (and some other non-macOS Unix platforms we don't officially support), Terraform will now notice the
trust-adoption in/etc/resolv.confand, if set, will set the "authentic data" option in outgoing DNS requests in order to better match the behavior of the GNU libc resolver.Terraform does not pay any attention to the corresponding option in responses, but some DNSSEC-aware recursive resolvers return different responses when the request option isn't set. This should therefore avoid some potential situations where a DNS request from Terraform might get a different response than a similar request from other software on your system.
ENHANCEMENTS:
- Terraform CLI's local operations mode will now attempt to persist state snapshots to the state storage backend periodically during the apply step, thereby reducing the window for lost data if the Terraform process is aborted unexpectedly. (#32680)
- If Terraform CLI receives SIGINT (or its equivalent on non-Unix platforms) during the apply step then it will immediately try to persist the latest state snapshot to the state storage backend, with the assumption that a graceful shutdown request often typically followed by a hard abort some time later if the graceful shutdown doesn't complete fast enough. (#32680)
pgbackend: Now supports thePG_CONN_STR,PG_SCHEMA_NAME,PG_SKIP_SCHEMA_CREATION,PG_SKIP_TABLE_CREATIONandPG_SKIP_INDEX_CREATIONenvironment variables. (#33045)
BUG FIXES:
terraform init: Fixed crash with invalid blank module name. (#32781)movedblocks: Fixed a typo in the error message that Terraform raises when you use-targetto exclude an object that has been moved. (#33149)
Previous Releases
For information on prior major and minor releases, see their changelogs:
v1.5.0-alpha20230504
1.5.0-alpha20230504 (May 4, 2023)
NEW FEATURES:
-
checkblocks for validating infrastructure: Module and configuration authors can now write independent check blocks within their configuration to validate assertions about their infrastructure.The new independent
checkblocks must specify at least oneassertblock, but possibly many, each one with aconditionexpression and anerror_messageexpression matching the existing Custom Condition Checks.
Additionally, check blocks can optionally load a scoped data source. Scoped data sources match the existing data sources with the exception that they can only be referenced from within their check block.Unlike the existing
preconditionandpostconditionblocks, Terraform will not halt execution should the scoped data block fail or error or if any of the assertions fail.
This allows practitioners to continually validate the state of their infrastructure outside the usual lifecycle management cycle. -
A new
importblock type to provide theterraform importfunctionality as a config-driven operation.The
importblock type has two arguments:idandto, where theidtakes a string and thetois a resource address. The plan tells you what will be imported and then apply will add that resource to Terraform state. Once you import into a resource, you can safely delete theimportblock. There is no harm to keep theimportblock in the configuration; it is a no-op after the resource is imported. -
Adds a new
plantimestampfunction that returns the timestamp at plan time. This is similar to thetimestampfunction which returns the timestamp at apply time. -
Adds a new
strcontainsfunction that checks whether a given string contains a given substring. [GH-33069]
UPGRADE NOTES:
-
This is the last version of Terraform for which macOS 10.13 High Sierra or 10.14 Mojave are officially supported. Future Terraform versions may not function correctly on these older versions of macOS.
-
This is the last version of Terraform for which Windows 7, 8, Server 2008, and Server 2012 are supported by Terraform's main implementation language, Go. We already ended explicit support for versions earlier than Windows 10 in Terraform v0.15.0, but future Terraform versions may malfunction in more significant ways on these older Windows versions.
-
On Linux (and some other non-macOS Unix platforms we don't officially support), Terraform will now notice the
trust-adoption in/etc/resolv.confand, if set, will set the "authentic data" option in outgoing DNS requests in order to better match the behavior of the GNU libc resolver.Terraform does not pay any attention to the corresponding option in responses, but some DNSSEC-aware recursive resolvers return different responses when the request option isn't set. This should therefore avoid some potential situations where a DNS request from Terraform might get a different response than a similar request from other software on your system.
ENHANCEMENTS:
- Terraform CLI's local operations mode will now attempt to persist state snapshots to the state storage backend periodically during the apply step, thereby reducing the window for lost data if the Terraform process is aborted unexpectedly. [GH-32680]
- If Terraform CLI receives SIGINT (or its equivalent on non-Unix platforms) during the apply step then it will immediately try to persist the latest state snapshot to the state storage backend, with the assumption that a graceful shutdown request often typically followed by a hard abort some time later if the graceful shutdown doesn't complete fast enough. [GH-32680]
pgbackend: Now supports thePG_CONN_STR,PG_SCHEMA_NAME,PG_SKIP_SCHEMA_CREATION,PG_SKIP_TABLE_CREATIONandPG_SKIP_INDEX_CREATIONenvironment variables. [GH-33045]
BUG FIXES:
terraform init: Fixed crash with invalid blank module name. [GH-32781]
Previous Releases
For information on prior major and minor releases, see their changelogs:
v1.4.6
1.4.6 (April 26, 2023)
BUG FIXES
- Fix bug when rendering plans that include null strings. (#33029)
- Fix bug when rendering plans that include unknown values in maps. (#33029)
- Fix bug where the plan would render twice when using older versions of TFE as a backend. (#33018)
- Fix bug where sensitive and unknown metadata was not being propagated to dynamic types while rendering plans. (#33057)
- Fix bug where sensitive metadata from the schema was not being included in the
terraform show -jsonoutput. (#33059) - Fix bug where computed attributes were not being rendered with the
# forces replacementsuffix. (#33065)
v1.4.5
v1.5.0-alpha20230405
This is a development snapshot for the forthcoming v1.5.0 release, built from Terraform's main branch. These release packages are for early testing only and are not suitable for production use.
The following is the v1.5.0 changelog so far, at the time of this snapshot:
UPGRADE NOTES:
-
This is the last version of Terraform for which macOS 10.13 High Sierra or 10.14 Mojave are officially supported. Future Terraform versions may not function correctly on these older versions of macOS.
-
This is the last version of Terraform for which Windows 7, 8, Server 2008, and Server 2012 are supported by Terraform's main implementation language, Go. We already ended explicit support for versions earlier than Windows 10 in Terraform v0.15.0, but future Terraform versions may malfunction in more significant ways on these older Windows versions.
-
On Linux (and some other non-macOS Unix platforms we don't officially support), Terraform will now notice the
trust-adoption in/etc/resolv.confand, if set, will set the "authentic data" option in outgoing DNS requests in order to better match the behavior of the GNU libc resolver.Terraform does not pay any attention to the corresponding option in responses, but some DNSSEC-aware recursive resolvers return different responses when the request option isn't set. This should therefore avoid some potential situations where a DNS request from Terraform might get a different response than a similar request from other software on your system.
NEW FEATURES:
-
checkblocks for validating infrastructure: Module and configuration authors can now write independent check blocks within their configuration to validate assertions about their infrastructure.The new independent
checkblocks must specify at least oneassertblock, but possibly many, each one with aconditionexpression and anerror_messageexpression matching the existing Custom Condition Checks.
Additionally, check blocks can optionally load a scoped data source. Scoped data sources match the existing data sources with the exception that they can only be referenced from within their check block.Unlike the existing
preconditionandpostconditionblocks, Terraform will not halt execution should the scoped data block fail or error or if any of the assertions fail.
This allows practitioners to continually validate the state of their infrastructure outside the usual lifecycle management cycle.
ENHANCEMENTS:
- Terraform CLI's local operations mode will now attempt to persist state snapshots to the state storage backend periodically during the apply step, thereby reducing the window for lost data if the Terraform process is aborted unexpectedly. [GH-32680]
- If Terraform CLI receives SIGINT (or its equivalent on non-Unix platforms) during the apply step then it will immediately try to persist the latest state snapshot to the state storage backend, with the assumption that a graceful shutdown request often typically followed by a hard abort some time later if the graceful shutdown doesn't complete fast enough. [GH-32680]
BUG FIXES:
terraform init: Fixed crash with invalid blank module name. [GH-32781]
v1.4.4
1.4.4 (March 30, 2023)
Due to an incident while migrating build systems for the 1.4.3 release where
CGO_ENABLED=0 was not set, we are rebuilding that version as 1.4.4 with the
flag set. No other changes have been made between 1.4.3 and 1.4.4.
v1.4.3
1.4.3 (March 30, 2023)
BUG FIXES:
- Prevent sensitive values in non-root module outputs from marking the entire output as sensitive [GH-32891]
- Fix the handling of planned data source objects when storing a failed plan [GH-32876]
- Don't fail during plan generation when targeting prevents resources with schema changes from performing a state upgrade [GH-32900]
- Skip planned changes in sensitive marks when the changed attribute is discarded by the provider [GH-32892]