Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News Terraform 1.0 Release Adds Stability Guarantees and an Improved Upgrade Experience

Terraform 1.0 Release Adds Stability Guarantees and an Improved Upgrade Experience

HashiCorp announced the release of the 1.0 version of Terraform. This release provides an improved upgrade experience and significant improvements in cross-compatibility.

As noted by HashiCorp, there are no significant changes in the 1.0 release as compared to the previous 0.15.5 release. Instead, the focus for this release is on stability and achieving the four key requirements set by HashiCorp in moving to 1.0. These requirements are that the project is deployed broadly, the major use cases are understood and supported, there is a well-defined user experience, and the product's architecture is stable.

Part of this stability is an improved upgrade experience. Starting in Terraform 0.15 and continuing through 1.x, it is now possible to upgrade with no impact to workflows or any need to upgrade tools. The maintenance period for all 1.x releases will be at least 18 months. This commitment extends to HashiCorp investigating bugs and releasing features for each 1.x release for that period. Bug fixes may come in a subsequent 1.x release versus a patch release for 1.0.x.

With this release, there is now cross-compatibility between versions 0.14.x, 0.15.x, and 1.0.x. This includes the backporting of remote state data source compatibility to versions 0.12.30, 0.13.6, 0.14.0. This compatibility was added in the 0.15 release of Terraform. With this change, these versions will be able to access remote state data sources in versions up to 1.0.x.

This compatibility is to include a number of behaviors including a subset of Terraform language features, a subset of CLI workflow commands, the wire protocols between Terraform Core and Terraform providers, and the wire protocols for installing providers. For example, within the Terraform language the resource and data blocks will retain their current functionality. This includes their nested types lifecycle, connection, provision, and provider.

The previous 0.15 release added a number of new features such as the extension of the value sensitivity feature released in 0.14 to include provider attributes. The new sensitive and nonsensitive functions that can be used to further redact sensitive values in the plan output. For example, this can be used to redact attributes in the plan:

resource "example_resource" "my_resource" {
   password = sensitive(

The nonsensitive function can be used to return a copy of the value with the sensitive marking removed, thereby exposing them normally. This can be used to override the default behavior where new values derived from values marked as sensitive are also marked as sensitive. As an example, calculating a SHA256 hash of a sensitive password may not need to be obfuscated within the plan output.

The 0.15 release also includes improved logging behavior. Provider developers leveraging SDK v.2.4 and greater can target messages to specific log levels. Terraform CLI and provider logging levels can be controlled via TF_LOG_CORE=level and TF_LOG_PROVIDER=level respectively.

More details around the 1.0 release can be found within the documentation or in the changelog Terraform. Terraform 1.0 can be downloaded from the HashiCorp site.

Rate this Article