In the Platform Engineering era, choosing an IaC tool increasingly comes down to who's on your team and what kind of platform you're building – not just technical specs.
OpenTofu
Best for: teams already on Terraform that don't want a major migration – or those who want the HCL approach without vendor dependency.
OpenTofu started as a Terraform 1.5-compatible fork but has since gone its own way. As of June 2026, the current stable release is v1.12.3 with over 3,900 providers and 23,600+ modules.
In April 2025, CNCF officially accepted OpenTofu into its ecosystem at the Sandbox maturity level – a meaningful governance signal, though distinct from the graduated status that Crossplane holds. Key technical differences from Terraform include:
- Native state file encryption at the backend level (since v1.7)
- Improved variable handling via provider-defined functions (since v1.7)
- A more open RFC process where the community genuinely shapes the roadmap
- Early variable evaluation – allowing variables to be used when configuring backends and modules in ways Terraform still doesn't support
This is no longer just "Terraform without HashiCorp" – it's a tool with its own development trajectory under the Linux Foundation.
If you have a large IaC state and an existing HCL codebase, migration is typically a matter of hours for most teams – swapping the binary and running tofu init. State management is identical, and all existing modules keep working. The open license significantly reduces vendor lock-in risk.
OpenTofu doesn't solve the fundamental problems of the HCL approach – testing is still painful, infrastructure code still lives separately from product code. It gives you stability and licensing peace of mind – and for many teams, that's enough.
If you're staying on Terraform, it's worth noting its direction: HashiCorp (now part of IBM) is developing Terraform Stacks and expanding integration with the HCP AI Ecosystem.
Pulumi
Best for: product-oriented teams where developers actively write or read infrastructure code.
Imagine your IaC living in the same repo as your product code, going through the same code reviews, and being tested through the same CI/CD pipeline. Developers don't learn a new declarative language from scratch – they work with TypeScript or Python they already know. That's what Pulumi delivers: declarative infrastructure through familiar programming languages, real unit tests, refactoring in a familiar IDE. Pulumi's own concepts (Stack, Resource, Output) still need to be learned, but the entry barrier for a developer is significantly lower than with HCL. Note that Pulumi's provider registry, while growing, is significantly smaller than the Terraform/OpenTofu ecosystem – worth checking coverage for your specific stack before committing.
So why isn't everyone using it? Because ops engineers without a programming background often find it harder to learn than HCL. The added abstraction also makes provider-level debugging more difficult. If your team is mostly sysadmins rather than developers, expect some onboarding friction.
Crossplane
Best for: platform teams building an Internal Developer Platform with a mature Kubernetes culture.
Crossplane gives platform teams the ability to build true self-service infrastructure: a developer runs kubectl apply on a custom resource and gets a database or message queue – no direct access to the cloud console, no need to know any specific IaC tool. An IDP built on Crossplane is infrastructure automation that looks to the developer like an ordinary K8s resource. CNCF graduated status confirms it's a safe long-term investment.
Crossplane requires a mature Kubernetes operational culture before you start layering cloud infrastructure on top. Cluster problems and cloud infrastructure problems now live in the same place. For a team still finding its footing with K8s, that's a double hit on complexity.
AWS CDK / Azure Bicep
Best for: teams that are deliberately and permanently committed to a single cloud provider.
Native CDKs offer the deepest integration: new provider services are available immediately without waiting for a community provider, documentation is always current. AWS CDK is especially strong where complex cross-service AWS integrations are involved – things that require workarounds in Terraform resolve natively here. Azure Bicep solves the same problem for the Microsoft stack: declarative infrastructure without an extra abstraction layer.
Worth noting: Google Cloud has no official CDK equivalent to AWS CDK or Azure Bicep. For GCP-heavy teams looking for a similar developer experience, CDK for Terraform (CDKTF) is worth considering – it brings the imperative programming model to any provider, including GCP, without locking you into a single cloud.
Vendor lock-in here isn't a mistake – it's a conscious trade-off. If you're on AWS and planning to stay, that's a fair deal and a real advantage. But if there's any hint of a multicloud strategy, or your cloud provider could change in three years, exiting a native CDK will be expensive and painful. Rewriting infrastructure from AWS CDK to anything else isn't refactoring – it's a full migration.
Terragrunt
Best for: teams on Terraform or OpenTofu that need better orchestration without changing their core tool.
Terragrunt often flies under the radar in IaC discussions, yet for many teams it's the most practical intermediate step. It doesn't replace Terraform or OpenTofu – it extends their capabilities through:
- Automated state management across environments
- DRY configuration (no copy-paste)
- A clean structure for modular monorepos
If your main pain isn't the tool's language but the organization of a large HCL codebase, Terragrunt should be your first consideration.
Need help choosing and implementing IaC for your project? Learn about our Infrastructure as Code services.