---
description: >-
  How OpenTofu compares to other infrastructure as code tools like
  CloudFormation and Heat. OpenTofu can simultaneously manage multiple cloud
  providers (AWS, OpenStack, etc.) and services (Cloudflare, DNSimple, etc.).
---

# OpenTofu vs. CloudFormation, Heat, etc.

Tools like CloudFormation, Heat, etc. allow the details of an infrastructure
to be codified into a configuration file. The configuration files allow
the infrastructure to be elastically created, modified and destroyed. OpenTofu
is inspired by the problems they solve.

OpenTofu similarly uses configuration files to detail the infrastructure
setup, but it goes further by being both cloud-agnostic and enabling
multiple providers and services to be combined and composed. For example,
OpenTofu can be used to orchestrate an AWS and OpenStack cluster simultaneously,
while enabling 3rd-party providers like Cloudflare and DNSimple to be integrated
to provide CDN and DNS services. This enables OpenTofu to represent and
manage the entire infrastructure with its supporting services, instead of
only the subset that exists within a single provider. It provides a single
unified syntax, instead of requiring operators to use independent and
non-interoperable tools for each platform and service.

OpenTofu also separates the planning phase from the execution phase,
by using the concept of an execution plan. By running `tofu plan`,
the current state is refreshed and the configuration is consulted to
generate an action plan. The plan includes all actions to be taken:
which resources will be created, destroyed or modified. It can be
inspected by operators to ensure it is exactly what is expected. Using
`tofu graph`, the plan can be visualized to show dependent ordering.
Once the plan is captured, the execution phase can be limited to only
the actions in the plan. Other tools combine the planning and execution
phases, meaning operators are forced to mentally reason about the effects
of a change, which quickly becomes intractable in large infrastructures.
OpenTofu lets operators apply changes with confidence, as they know exactly
what will happen beforehand.
