As time passes, OpenTofu and Terraform become more distant from each other. CanI.TF helps us to understand their differences quickly.
The tools/tools.yaml file is the source of truth. Then run go run main.go to validate and regenerate data/tools.json and static/tools.json.
The file has two top-level keys:
Metadata for each tool. Displayed in the header rows of the comparison table.
tools:
opentofu:
version: "1.11"
versionURL: https://github.com/opentofu/opentofu/releases/latest
license: MPL-2.0
licenseURL: https://github.com/opentofu/opentofu/blob/main/LICENSE
registry: https://search.opentofu.org/Each tool entry under a feature supports three optional fields:
| Field | Description |
|---|---|
version |
The version that introduced the feature (e.g. "1.9"). |
url |
URL to the feature's documentation. Renders the version as a link. |
featureRequestURL |
URL to an open issue or RFC tracking the feature. Renders as a ? link when the feature is not yet supported (i.e. no version). |
Feature supported by both tools:
- name: State encryption
tools:
opentofu:
version: "1.7"
url: https://opentofu.org/docs/language/state/encryption/
terraform:
version: "1.9"
url: https://developer.hashicorp.com/terraform/language/state/encryptionFeature supported by one tool only (renders - for the other):
- name: State encryption
tools:
opentofu:
version: "1.7"
url: https://opentofu.org/docs/language/state/encryption/Feature not yet supported, with a tracking link:
- name: Some upcoming feature
tools:
opentofu:
version: "1.9"
url: https://opentofu.org/docs/...
terraform:
featureRequestURL: https://github.com/hashicorp/terraform/issues/123$ # Install hugo
$ asdf plugin add hugo
$ asdf install
$ go run main.go
$ hugo server --buildDrafts --disableFastRender
$ # HTML templates are in layouts/_default