Due to some historical technical debt in this area we are intentionally accepting a rather hacky but narrowly-scoped solution to a bug that prevented selection of prerelease versions of modules when a version constraint was written with a "v" symbol before the version selection, such as in "=v1.0.0-beta1". This commit just records some commentary about the decision for the benefit of a future maintainer that is likely to wonder why this code is written the way it is, and (assuming GitHub outlives these comments) link back to the discussion that motivated it. Signed-off-by: Martin Atkins <mart@degeneration.co.uk>
6.4 KiB
1.9.0 (Unreleased)
UPGRADE NOTES:
-
Using the
ghcr.io/opentofu/opentofu
image as a base image for custom images is deprecated and this will be removed in OpenTofu 1.10.Please refer to https://opentofu.org/docs/main/intro/install/docker/ for instructions on building your own image.
NEW FEATURES:
-
for_each
in provider configuration blocks: An alternate (aka "aliased") provider configuration can now have multiple dynamically-chosen instances using thefor_each
argument:provider "aws" { alias = "by_region" for_each = var.aws_regions region = each.key }
Each instance of a resource can also potentially select a different instance of the associated provider configuration, making it easier to declare infrastructure that ought to be duplicated for each region.
-
-exclude
planning option: similar to-target
, this allows operators to tell OpenTofu to work on only a subset of the objects declared in the configuration or tracked in the state.tofu plan -exclude=kubernetes_manifest.crds
While
-target
specifies the objects to include and skips everything not needed for the selected objects,-exclude
instead specifies objects to skip. OpenTofu will exclude the selected objects and everything that depends on them.
ENHANCEMENTS:
provider
blocks now supportfor_each
. (#2123)- The new
-exclude
planning option complements-target
, specifying what to exclude rather than what to include. (#1900) - State encryption key providers now support customizing the metadata key via
encrypted_metadata_alias
. (#2080) - OpenTofu will now prompt for values for input variables needed for early evaluation. (#2047)
- Various commands now accept
-consolidate-warnings
and-consolidate-errors
options to enable or disable OpenTofu's summarization of diagnostic messages. (#1894) -show-sensitive
option causestofu plan
,tofu apply
, and other commands that can return data from the configuration or state to unmask sensitive values. (#1554)tofu console
now accepts expressions split over multiple lines, when the newline characters appear inside bracketing pairs or when they are escaped using a backslash. (#1875)- Improved performance for large graphs when debug logs are not enabled. (#1810)
- Improved performance for large graphs with many submodules. (#1809)
BUG FIXES:
templatefile
no longer crashes if the given filename is derived from a sensitive value. (#1801)- Configuration loading no longer crashes when a
module
block lacks the requiredsource
argument. (#1888) - The
tofu force-unlock
command now returns a relevant error when used with a backend that is not configured to support locking. (#1977) - Configuration generation during import no longer crashes if an imported object includes sensitive values. (#1986, #2077)
.tfvars
files from thetests
directly are no longer incorrectly loaded for non-test commands. (#2039)tofu console
's interactive mode now handles the specialexit
command correctly. (#2086)- Provider-contributed functions are now called correctly when used in the
validation
block of an input variable declaration. (#2052) - Sensitive values are now prohibited in early evaluation of backend configuration and module source locations, because otherwise they would be exposed as a side-effect of initializing the backend or installing a module. (#2045)
tofu providers mirror
no longer crashes when the dependency lock file has missing or invalid entries. (#1985)- OpenTofu now respects a provider-contributed functions' request to be called only when its arguments are fully known, for compatibility with functions that cannot handle unknown values themselves. (#2127)
tofu init
no longer duplicates diagnostic messages produced when evaluating early-evaluation expressions. (#1890)tofu plan
change description now includes information about configuration blocks generated using adynamic
block with an unknownfor_each
value. (#1948)- Error message about a provider type mismatch now correctly identifies which module contains the problem. (#1991)
- The
yamldecode
function's interpretation of scalars as numbers now conforms to the YAML 1.2 specification. In particular, the scalar value+
is now interpreted as the string"+"
rather than returning a parse error trying to interpret it as an integer. (#2044) - A
module
block'sversion
argument now accepts prerelease version selections using a "v" prefix before the version number. Previously this was accepted only for non-prerelease selections. ([#2124])(https://github.com/opentofu/opentofu/issues/2124)
INTERNAL CHANGES:
- The Makefile now includes
build
andhelp
targets. (#1925, #1927) - The Makefile is now configured to allow only POSIX standard make syntax, without implementation-specific extensions. (#1811)
Previous Releases
For information on prior major and minor releases, see their changelogs: