minamijoyo / tfschema

A schema inspector for Terraform / OpenTofu providers
MIT License
295 stars 15 forks source link

OpenTofu support #50

Closed skyzyx closed 10 months ago

skyzyx commented 1 year ago

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.

minamijoyo commented 1 year ago

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.

skyzyx commented 1 year ago

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?

minamijoyo commented 1 year ago

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.

minamijoyo commented 1 year ago

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     |
+----------------------+-------------+----------+----------+----------+-----------+
minamijoyo commented 1 year ago

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

minamijoyo commented 10 months ago

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.

kvendingoldo commented 7 months ago

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.

skyzyx commented 7 months ago

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?