UPGRADE NOTES:
BUG FIXES:
tencentcloud-terraform-lock
tag was not removed in all cases (#31223)ENHANCEMENTS:
-var
arguments with spaces between the name and value now have an improved error message (#30985)BUG FIXES:
BUG FIXES:
ed25519
keys (#31092)count
or for_each
(#31091)UPGRADE NOTES:
If you use the third-party credentials helper plugin terraform-credentials-env, you should disable it as part of upgrading to Terraform v1.2 because similar functionality is now built in to Terraform itself.
The new behavior supports the same environment variable naming scheme but has a difference in priority order from the credentials helper: TF_TOKEN_...
environment variables will now take priority over credentials blocks in CLI configuration and credentials stored automatically by terraform login, which is not true for credentials provided by any credentials helper plugin. If you see Terraform using different credentials after upgrading, check to make sure you do not specify credentials for the same host in multiple locations.
If you use the credentials helper in conjunction with the hashicorp/tfe Terraform provider to manage Terraform Cloud or Terraform Enterprise objects with Terraform, you should also upgrade to version 0.31 of that provider, which added the corresponding built-in support for these environment variables.
The official Linux packages for the v1.2 series now require Linux kernel version 2.6.32 or later.
When making outgoing HTTPS or other TLS connections as a client, Terraform now requires the server to support TLS v1.2. TLS v1.0 and v1.1 are no longer supported. Any safely up-to-date server should support TLS 1.2, and mainstream web browsers have required it since 2020.
When making outgoing HTTPS or other TLS connections as a client, Terraform will no longer accept CA certificates signed using the SHA-1 hash function. Publicly trusted Certificate Authorities have not issued SHA-1 certificates since 2015.
(Note: the changes to Terraform's requirements when interacting with TLS servers apply only to requests made by Terraform CLI itself, such as provider/module installation and state storage requests. Terraform provider plugins include their own TLS clients which may have different requirements, and may add new requirements in their own releases, independently of Terraform CLI changes.)
NEW FEATURES:
precondition
and postcondition
check blocks for resources, data sources, and module output values: module authors can now document assumptions and assertions about configuration and state values. If these conditions are not met, Terraform will report a custom error message to the user and halt further execution.replace_triggered_by
is a new lifecycle
argument for managed resources which triggers replacement of an object based on changes to an upstream dependency.TF_TOKEN_
followed by an encoded version of the hostname. For example, Terraform will use variable TF_TOKEN_app_terraform_io
as a bearer token for requests to “app.terraform.io”, for the Terraform Cloud integration and private registry requests.ENHANCEMENTS:
-target
. (#30327)TF_CLOUD_ORGANIZATION
and TF_CLOUD_HOSTNAME
now serve as fallbacks for the arguments of the same name inside a cloud
block configuring integration with Terraform Cloud.TF_WORKSPACE
will now additionally serve as an implicit configuration of a single selected workspace on Terraform Cloud if (and only if) the cloud
block does not include an explicit workspaces configuration.ignore_changes
that is managed only by the provider. Specifying non-configurable attributes in ignore_changes
has no effect because ignore_changes
tells Terraform to ignore future changes made in the configuration. (#30517)terraform show -json
now includes exact type information for output values. (#30945)ssh
provisioner connection now supports SSH over HTTP proxy. (#30274)BUG FIXES:
tostring
, tonumber
, etc to null
will now return a null value of the intended type. For example, tostring(null)
converts from a null value of an unknown type to a null value of string type. Terraform can often handle such conversions automatically when needed, but explicit annotations like this can help Terraform to understand author intent when inferring type conversions for complex-typed values. (#30879)cidrnetmask()
is called with an IPv6 address, as it was previously documented to do. IPv6 standards do not preserve the “netmask” syntax sometimes used for IPv4 network configuration; use CIDR prefix syntax instead. (#30703)terraform state
commands, Terraform now checks the required_version
field in the configuration before proceeding. (#30511)import
, plan
, refresh
and apply
for workspaces in local execution mode. This behavior applies to both remote
backend and the cloud
integration configuration. (#29972)terraform show -json
: JSON plan output now correctly maps aliased providers to their configurations, and includes the full provider source address alongside the short provider name. (#30138)cloud
and remote
backend now has higher priority than a token specified in a credentials
block in the CLI configuration. (#30664)cloud
integration now gracefully exits when -input=false
and an operation requires some user input.terraform apply -auto-approve
. Previously there was a window of time where interruption would cancel the plan step but not prevent Terraform from proceeding to the apply step. (#30979)For information on prior major and minor releases, see their changelogs: