Switching from Terraform -> OpenTofu (Thoughts and Considerations)

With the changing of the Hashicorp Terraform license to BUSL, many orgs are looking for alternatives one of them is OpenTofu.

Has anyone done this yet? Any pain points in switching?

I am also looking for if anyone else knows of any other viable alternatives to Terraform.

Well, it’s a fork, right. So, switching should be a non-event. The longer you wait, the harder it is going to be…

Where I use Terraform, we have been stuck on some old version, so no hurry.

For new projects we have been using Bicep.

One would hope, but so far my experience tells me mixed results when switching to forks.

Yeah same. It’s mixed versions across different projects, so I need to get everything in line and then we can do a cut over.

Thanks for providing a different DSC! How do you like using Bicep? What sets it apart from TF for you?

Further reading reveals:

Bicep is Azure-specific and not designed to work with other cloud services.

So that particular tool is useless to me unfortunately :frowning:

Bicep is somewhat different, first of all it is Azure only…

Bicep is much newer than Terraform, so in the olde days folks that would go with Terraform as Bicep simply did bot exist.

In the modern days, Bicep is a better fit for what we are doing, but may not be necessarily for everyone.

The big difference, Bicep does not track state separately.

We’re in the process of moving from Terraform to OpenTofu across a few teams. So far, the transition has been smooth, but there are a few things to note.

OpenTofu works fine as a drop-in replacement for now, but long-term divergence is inevitable. Some third-party modules break if they rely on newer Terraform-specific features or providers that haven’t officially declared OpenTofu support yet.

We’re also evaluating alternatives in our tooling stack depending on the environment. A few we’ve explored or used alongside:

Pulumi – really flexible since it lets you write infra as code in real languages (Python, Go, etc.)

CloudFormation/Bicep – good for AWS/Azure-specific infra

Ansible + Attune – we use this combo for configuration and orchestration post-deployment

Crossplane – if you’re into Kubernetes-native provisioning

SaltStack – still solid for certain hybrid/cloud use cases

pyinfra – super lightweight and Pythonic

If you’re working with a mix of clouds and don’t want vendor lock-in, OpenTofu seems like the most comfortable short-term path. But long-term, worth watching how fast OpenTofu builds its own ecosystem.

Curious what others are pairing OpenTofu with for full lifecycle automation.