Terraform is arguably one of the most popular DevOps tools across a wide range of platforms. It continues to add features and functionality for DevOps practitioners, engineers, and others working with Infrastructure as Code (IaC). Today was exciting news for those that use Terraform as a new release as once again dropped and is freely available for download as we speak, Terraform 0.15. What are the new features that are included in this release? Let’s look at Terraform 0.15 released with new features and see what you can expect.
Pathway to the 1.0 release
Hashicorp is saying with the Terraform 0.15 release, this will be a pre-release period that is the pathway up to the landmark Terraform 1.0 release. Features introduced with Terraform 0.15 help to improve the workflow structure and stability of the Terraform feature set that will help this pre-release transition into the future 1.0 release.
Terraform 0.15 New Features
With that being said, what are the new features found in Terraform 0.15? These include the following major new features:
- Remote state data source compatibility
- State file format stability
- Unified console support
- Provider-based sensitivity and new sensitive function
- Structured logging levels
1. Remote state data source compatibility
With previous versions of Terraform, you had to make sure you took care with the version of the remote state file when working between DevOps engineers and pipelines. Previously, updating the version of Terraform into the workflow meant immediately upgrading across the board your Terraform codebases due to upgraded state data.
With this release, Hashicorp is relaxing remote state data source parser requirements. This means the requirement to immediately upgrade across the board is no longer required. Also, Hashicorp is backporting this to previous versions of Terraform, including 0.14, 0.13.6, and 0.12.30 releases. This will no doubt be a welcomed change for DevOps engineers.
2. State file format stability
This feature was announced with 0.14 and now in 0.15 and will also of course be found in 1.0. It allows state to be cross-compatible between 0.14, 0.15, and 1.0. Again, this helps to ensure mobility between these versions when needed.
3. Unified console support
The console experience in Terraform 0.15 has now been unified across all supported platforms. This means it is bringing consistent UTF-8 support and moves to a virtual terminal sequence on Microsoft Windows.
4. Provider based sensitivity and new sensitive function
Managing secrets and sensitive information in Terraform code is getting easier with 0.15. New with this release, Terraform 0.15 extends value sensitivity provider attributes. This will help to provide more capabilities to protect any sensitive values from being printed to the console. These values will be redacted by Terraform if and when they appear. There is a new sensitive function and, conversely, a nonsensitive function that helps manage Terraform behavior regarding sensitive values.
5. Structured logging levels
Logging is important in modern IT operations. Terraform logging is no different. New with this release, Terraform 0.15 includes new improved logging behavior. Developers now have the ability with the latest SDK (2.4+) to reliably target messages to specific log levels. Also, Terraform CLI and provider logging levels can both be controlled independently using TF_LOG_CORE=levl and TF_LOG_PROVIDER=level.
Upgrading Notes and breaking changes
There are a few things to look for in this release as well that will need to be considered and noted before upgrading to Terraform 0.15. These items caught my attention:
- Due to UTF-8 character encoding being required with Terraform 0.15, it will no longer work with original and earlier versions of Windows 10 as Microsoft has introduced UTF-8 improvements and features along the way with recent upgrades to Windows 10.
- Built-in provisioners including chef, habitat, puppet, and salt-masterless have been removed
- Provider-defined sensitive attributes will now be redacted throughout the plan output. You may now see values redacted as (sensitive) that were previously visible because sensitivity did not follow provider-defined sensitive attributes.
- The -force option is no longer available using terraform destroy. Use -auto-approve instead
Take a look at the full list of upgrade notes and breaking changes here.
Download Terraform 0.15
To download the latest version of Terraform 0.15, visit the official Hashicorp download page here: Download Terraform – Terraform by HashiCorp. Simply download and replace your existing Terraform executable. Make sure you have a PATH variable in place to avoid having to type the path to your Terraform executable.
What can you do with Terraform?
If you have never used Terraform before, you may be wondering what you can do with it exactly? Check out my previous posts covering Terraform, DevOps, automation, and other use cases:
- Basic Terraform Installation and VMware vSphere Automation
- Terraform for Azure Tutorial
- Using Terraform Vault Provider with VMware vSphere
- Create an EC2 Instance Using Terraform
- Sysprep and VMware Guest Customization with Terraform
- VMware Windows Server 2019 Template Best Practices