minamijoyo / tfschema

A schema inspector for Terraform / OpenTofu providers

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

OpenTofu support

skyzyx opened this issue · comments

https://opentf.org/announcement

We want to understand how tfschema is affected by the OpenTF announcement, and what the plans for support are moving forward.

As of this writing, there is no publicly available OpenTF implementation, so I cannot say for sure. Still, tfschema doesn't depend on the Terraform CLI at runtime; it depends on the provider's cache and protocol. Thus, it can be expected to work as long as these are compatible.

Thank you for answering.

From a technical perspective, I expect that it will be a no-op for the time being as OpenTF anticipates maintaining compat/interop for the foreseeable future. (However, OpenTF has stated that some functionality may be added to OpenTF that is a superset of what's in base Terraform. [source])

From a process perspective:

  1. If there is a bug in OpenTF that does not exist in Terraform (or vice-versa), will bug reports (as they pertain to this project) be treated equally on both platforms?

  2. Will testing be performed with code targeting both platforms?

  3. For OpenTF's potential future "superset" functionality, will that be treated as a first-class citizen?

First, this project is one of my hobby projects, and I'm not a competitor of HashiCorp or OpenTF. As a maintainer of this project, my stance is neutral, but as you know, maintaining compatibility for forks is not for free.
For now, I feel it's too early to discuss potential something. Please wait until someone finds actual compatible issues, then start talking about them.

FYI: While not fully tested yet, tasting tofu alpha2 looks like tfschema works as is.

[tofu@opentofu|✔]$ cat main.tf
provider "aws" {}

[tofu@opentofu|✔]$ tofu --version
OpenTofu v1.6.0-alpha2
on darwin_arm64

[tofu@opentofu|✔]$ tofu init
(snip.)

[tofu@opentofu|✔]$ go run ../../main.go resource show aws_iam_user
+----------------------+-------------+----------+----------+----------+-----------+
| ATTRIBUTE            | TYPE        | REQUIRED | OPTIONAL | COMPUTED | SENSITIVE |
+----------------------+-------------+----------+----------+----------+-----------+
| arn                  | string      | false    | false    | true     | false     |
| force_destroy        | bool        | false    | true     | false    | false     |
| id                   | string      | false    | true     | true     | false     |
| name                 | string      | true     | false    | false    | false     |
| path                 | string      | false    | true     | false    | false     |
| permissions_boundary | string      | false    | true     | false    | false     |
| tags                 | map(string) | false    | true     | false    | false     |
| tags_all             | map(string) | false    | true     | true     | false     |
| unique_id            | string      | false    | false    | true     | false     |
+----------------------+-------------+----------+----------+----------+-----------+

I've added the OpenTofu alpha release to the test matrix in #52.
This issue will remain open until a stable version is released.

Closed by #55

I've cut a new release, tfschema v0.7.8, which includes the official OpenTofu support.
I also updated the description to clarify it.

btw. you can also integrate tenv that support Terraform as well as OpenTofu (and Terragrunt :) ) in one tool. It allow you to simplify version management.

btw. you can also integrate tenv that support Terraform as well as OpenTofu (and Terragrunt :) ) in one tool. It allow you to simplify version management.

What does this have to do with tfschema?