OpenTofu v1.9.0stable Released Jan 09, 2025
Impact Score: 5/10

OpenTofu v1.9.0 โ€” Release Notes & Engineering Impact

Source available โ€” automated, not human-reviewed

Component: opentofu ยท Channel: stable. Automated analysis, not a compatibility certification. How this works.

Analysis updated: 2026-11-01.

Compatibility not verified โ€” check source notes
๐Ÿ“„ .MD
โšก Executive Summary (TL;DR)

OpenTofu v1.9.0. Source highlight: We're proud to announce that OpenTofu 1.9.0 is now officially out! ๐ŸŽ‰

Who Does This Impact? (Role-Based Analysis)

๐Ÿ’ป Software Engineers & Devs

Check the source notes against the package and APIs you use before upgrading.

๐Ÿ“Š Product & Engineering Leads

Use the documented changes to assess relevance to your product; release frequency alone is not a quality measure.

โš™๏ธ DevOps & Security

Verify the target version, runtime requirements and rollback procedure in the official documentation.

๐Ÿ“„ View Raw Release Notes (Original Developer Log)
We're proud to announce that OpenTofu 1.9.0 is now officially out! ๐ŸŽ‰ This release includes a lot of major and minor new features, as well as a ton of community contributions! The highlights are: * **`for_each` in provider configuration blocks:** An alternate (aka "aliased") provider configuration can now have multiple dynamically-chosen instances using the `for_each` argument: ```hcl 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. ```shell 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. Please take the above for a spin and let us know your feedback! For all the features, see the [related blog post](https://opentofu.org/blog/opentofu-1-9-0/) or the [detailed changelog](https://github.com/opentofu/opentofu/blob/v1.9.0/CHANGELOG.md). You can find the full diff [here](https://github.com/opentofu/opentofu/compare/v1.8...v1.9.0?expand=1).