OpenTofu is a reliable, flexible, community-driven infrastructure as code tool under the Linux Foundation's stewardship. It serves as a drop-in replacement for Terraform, preserving your existing workflows and configurations.
With a thriving ecosystem of 3,900+ providers and 23,600+ modules, you can build and manage infrastructure across every cloud platform with confidence.
Powerful capabilities — built by the community to solve real-world challenges in infrastructure management
# Command line usage$ tofu plan -exclude="aws_instance.database"$ tofu apply -exclude="module.network"
# Exclude multiple resources$ tofu apply \ -exclude="aws_instance.web[0]" \ -exclude="aws_instance.web[1]"Selectively exclude resources from operations with the -exclude flag. This provides more control during testing and rollouts, allowing you to focus on specific parts of your infrastructure.
Learn more# Define regions for deploymentvariable "regions" { type = set(string) default = ["us-west-1", "us-east-1", "eu-west-1"]}
variable "disabled_regions" { type = set(string) default = []}
# Create provider for each regionprovider "aws" { alias = "by_region" region = each.value for_each = var.regions}
# Deploy resources in each active regionmodule "deploy" { source = "./deploy" providers = { aws = aws.by_region[each.key] } for_each = setsubtract(var.regions, var.disabled_regions)}Dynamically generate provider configurations with for_each, eliminating repetitive code and improving maintainability. Perfect for multi-region deployments, multi-environment setups (dev/staging/prod), multi-account scenarios, and cross-cloud implementations. Provider for_each enables cleaner infrastructure patterns, simplified credential rotation, and more controlled progressive rollouts across your infrastructure landscape.
Learn more# Define module version as a variablevariable "aws_module_version" { description = "Version of AWS modules to use" type = string default = "5.6.1"}
# Use the variable for module versioningmodule "vpc" { source = "terraform-aws-modules/vpc/aws" version = var.aws_module_version name = "my-vpc" cidr = "10.0.0.0/16" azs = ["us-west-2a", "us-west-2b"] private_subnets = ["10.0.1.0/24", "10.0.2.0/24"] public_subnets = ["10.0.101.0/24", "10.0.102.0/24"]}Update all your modules programmatically with a single variable change. Never miss updating a module version by accident - keep your infrastructure consistent and secure with centralized version management.
Learn more# Configure state encryptionterraform { encryption { # Define a passphrase-based key provider key_provider "pbkdf2" "mykey" { passphrase = "correct-horse-battery-staple" key_length = 32 iterations = 600000 } # Configure AES-GCM encryption method method "aes_gcm" "default" { key_provider = key_provider.pbkdf2.mykey } # Enable encryption for state files state { method = method.aes_gcm.default enforced = true } }}Protect your infrastructure state at rest with built-in encryption. OpenTofu supports client-side state encryption with multiple key providers (PBKDF2, AWS KMS, GCP KMS, OpenBao, and more) to ensure your sensitive infrastructure data is always encrypted, even when stored in remote backends.
Learn moreOpenTofu thrives on community contributions. Whether you're fixing bugs, adding features, improving docs, or providing feedback, your input makes a difference.
Join GitHub discussions to share ideas
Open issues for bugs or feature suggestions
Participate in RFC discussions and reviews
Contribute code after community discussion
Get answers to common questions about OpenTofu capabilities and usage
OpenTofu is a Terraform fork, created as an initiative of Gruntwork, Spacelift, Harness, Env0, Scalr, and others, in response to HashiCorp's switch from an open-source license to the BUSL. The initiative has many supporters, all of whom are listed here.
The BUSL and the additional use grant outlined by the HashiCorp team are ambiguous, which makes it challenging for companies, vendors, and developers using Terraform to decide whether their actions could be interpreted as being outside the permitted scope of use.
HashiCorp's FAQs give some peace of mind to end users and system integrators for now, but the licensing terms' implications for future usage are unclear. The possibility that the company's definition of "competitive" or "embedding" could change or the license could be further modified to make it closed source prompts uncertainty for Terraform users.
We firmly believe that Terraform should remain open-source because it is a project many companies use, and many contributors have made Terraform what it is today. Terraform's success would not have been possible without the community's work to build many supporting projects around it.
Initial impressions suggest you could use either OpenTofu or Terraform for personal use, as the BUSL license has no restrictions for non-commercial use cases. That may change as the Terraform ecosystem becomes increasingly unstable, and a switch to another license may happen. Those familiar with Terraform will have no issues adopting OpenTofu for personal use, so there will be no knowledge gaps, at least at the start.
A consultant should offer their clients the best possible solution that aligns with their budget. OpenTofu will be on par with Terraform, and one of the project's central objectives is to listen to the community's issues, so it makes sense to recommend a project that will always stay open-source. Anyone who has used Terraform in the last eight years has probably come across issues that took some time to be resolved. The large community involved in developing OpenTofu means this will no longer be the case.
Companies will encounter more difficulties with the situation. Switching to a new project carries risks, but staying with a project that changes its license without warning is far riskier. This risk is minimized by giving OpenTofu to the Linux Foundation, and OpenTofu's aim of maintaining feature parity with Terraform for future releases reduces the technical risks.
The community will decide what features OpenTofu will have. Some long-awaited Terraform features will be publicly available soon.
If you're missing a feature in OpenTofu that's available in Terraform, feel free to create an issue.
The OpenTofu Registry hosts thousands of providers and modules that are compatible with OpenTofu. These include all the popular cloud providers, third-party services, and community-maintained resources you might need for your infrastructure.
You can search for providers, modules, and their documentation at search.opentofu.org. The registry provides seamless access to the same ecosystem of providers and modules that you're familiar with, ensuring you have all the tools needed to build and manage your infrastructure.