This is NOT an Awesome List. For that, see awesome-opentofu.
This is a collection of information intended to help you determine how much work is in front of you as you consider a migration from Terraform → OpenTofu.
When the OpenTofu fork was announced (September 2023), I began reaching out to several notable Terraform-related projects in the community with the goal of understanding how customers like ourselves might be impacted.
The majority of projects expressed taking a wait-and-see approach. Some were more pro-fork, while others were more anti-fork. It was also unclear at the time how things like providers, modules, the Terraform Plugin Framework, and other bits would be impacted by licensing changes.
As of this writing, the Terraform Plugin Framework is licensed under the MPL-2.0. This means that Providers will continue to be MPL-2.0. Modules are purely userland code, so they are not impacted. As for compatibility, Providers implement a protocol. As long as Terraform and OpenTofu both support that protocol version, the providers themselves are expected to remain compatible with both projects.
In the (many) conversations I've had with members of the OpenTofu core team, OpenTofu:
- Is a drop-in replacement for Terraform 1.5.x and earlier.
- Is willing/interested in implementing the same major features as Terraform moving forward.
- Will NOT be bug-for-bug compatible with Terraform.
- Will invest in community-driven enhancements, which may result in new features not available in Terraform. (See OpenTofu 1.7.)
This represents the research done to understand the plans from the Terraform/OpenTofu ecosystem. As new/changed statements are discovered, this will be updated.
✓ | Project | Notes | Sources |
---|---|---|---|
× | action/setup-terraform | Maintained by HashiCorp. This should be used for installing Terraform in GitHub Actions. | |
✓ | action/setup-tofu | Maintained by OpenTofu. This should be used for installing OpenTofu in GitHub Actions. | |
✓ | Checkov | No anticipated impact. Should continue to work. | 1 |
✓ | Infracost | Infracost doesn't seem to expect much/any work on their end, and they’re not opposed to OpenTofu. | 1 |
✓ | Provider: Artifactory | Maintained by JFrog. Implements the protocol, so entirely dependent on that. | 1 |
✓ | Provider: AWS | Maintained by HashiCorp. Implements the protocol, so entirely dependent on that. | 1 |
✓ | Provider: Datadog | Maintained by Datadog. Implements the protocol, so entirely dependent on that. | 1 |
✓ | Provider: GitHub | Maintained by GitHub. Implements the protocol, so entirely dependent on that. | 1 |
✓ | Provider: New Relic | Maintained by New Relic. Implements the protocol, so entirely dependent on that. | 1 |
✓ | Provider: PagerDuty | Maintained by PagerDuty. Implements the protocol, so entirely dependent on that. (Never responded.) | 1 |
✓ | TerraCognita | Embeds internal Terraform libraries (MPL-2.0). Planning to migrate to forked OpenTofu libraries. There is no “support” involved like with other projects because they don’t call out to a binary. | 1 |
✓ | terraform-docs | Expected to continue to work, since it does not interface with the terraform binary directly; it just parses the HCL. |
1 |
– | Terraformer | No response. | 1 |
✓ | Terragrunt | Gruntwork is a founding member of the OpenTofu Steering Committee. OpenTofu support made available in v0.52.0. It’s possible that Terraform will be dropped in the future (no timeline for this, however). | 1, 2, 3 |
– | Terrascan | No response. | 1 |
✓ | Terratest | Gruntwork is a founding member of the OpenTofu Steering Committee. OpenTofu support made available in v0.46.0. It’s possible that Terraform will be dropped in the future (no timeline for this, however). | 1, 2 |
✓ | tenv | Successor to tfenv and tfswitch. Supports Terraform, Terragrunt, and OpenTofu. | |
× | tfenv | Team has elected NOT to add support for OpenTofu. Use tenv instead. | 1 |
× | tflint | Bundles Terraform source code. License changed to BUSL-1.1 with v0.51.0. There is no technical reason that we cannot continue using this to lint code. There may be legal reasons. | 1, 2 |
✓ | tfschema | Reads the protocol, so depends on compatibility of providers. There is no “support” involved like with other projects because they don’t call out to a binary. Added explicit support in v0.7.8. | 1, 2 |
× | tfsec | Deprecated. Use Trivy instead. | 1 |
× | tfswitch | Appears to be abandoned. Use tenv instead. | 1 |
✓ | Trivy | Integrates with Providers for cloud services. Will likely be supported as long as its Provider is supported. | 1 |