A schema inspector for Terraform / OpenTofu providers
MIT License
A schema inspector for Terraform / OpenTofu providers.
$ brew install minamijoyo/tfschema/tfschema
$ echo 'provider "aws" {}' > main.tf
$ terraform init
$ tfschema resource list aws | grep aws_iam_user
aws_iam_user
aws_iam_user_group_membership
aws_iam_user_login_profile
aws_iam_user_policy
aws_iam_user_policy_attachment
aws_iam_user_ssh_key
$ tfschema 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 |
| unique_id | string | false | false | true | false |
+----------------------+-------------+----------+----------+----------+-----------+
If you are Mac OSX user:
$ brew install minamijoyo/tfschema/tfschema
or
If you have Go 1.17+ development environment:
$ git clone https://github.com/minamijoyo/tfschema
$ cd tfschema
$ go install
or
Download the latest compiled binaries and put it anywhere in your executable path.
https://github.com/minamijoyo/tfschema/releases
When terraform init
command is executed, provider's binary is installed under the auto installed directory ( .terraform/providers/<SOURCE ADDRESS>
/<VERSION>
/<OS>_<ARCH>
) by default.
The tfschema can use the same provider's binary as terraform uses, so you can run tfschema
command in the same directory where you run the terraform
command
Alternatively, you can set the environment variable $TFSCHEMA_ROOT_DIR
to be this directory. If $TFSCHEMA_ROOT_DIR
is not set, it will default to the current directory
The tfschema finds provider's binary under the following directories.
$TFSCHEMA_ROOT_DIR
tfschema
executable$TFSCHEMA_ROOT_DIR
/terraform.d/plugins/<OS>_<ARCH>
)$TFSCHEMA_ROOT_DIR
/.terraform/providers/<SOURCE ADDRESS>
/<VERSION>
/<OS>_<ARCH>
)$TFSCHEMA_ROOT_DIR
/.terraform/plugins/<SOURCE ADDRESS>
/<VERSION>
/<OS>_<ARCH>
)$TFSCHEMA_ROOT_DIR
/.terraform/plugins/<OS>_<ARCH>
)<OS>_<ARCH>
)If you are Mac OSX user, <OS>_<ARCH>
is darwin_amd64
.
The <SOURCE ADDRESS>
is a fully qualified provider name in Terraform 0.13+. (e.g. registry.terraform.io/hashicorp/aws
)
Note that it doesn't have exactly the same behavior of Terraform because of some reasons:
To enable autocomplete, execute the following command:
$ tfschema -install-autocomplete
The above command adds the following line to your ~/.bashrc and ~/.zshrc:
.bashrc
complete -C </path/to/tfschema> tfschema
.zshrc
autoload -U +X bashcompinit && bashcompinit
complete -o nospace -C </path/to/tfschema> tfschema
Check your .bashrc and/or .zshrc and reload it.
$ tfschema --help
Usage: tfschema [--version] [--help] <command> [<args>]
Available commands are:
data
provider
resource
$ tfschema resource --help
This command is accessed by using one of the subcommands below.
Subcommands:
browse Browse a documentation of resource
list List resource types
show Show a type definition of resource
$ tfschema resource show --help
Usage: tfschema resource show [options] RESOURCE_TYPE
Options:
-format=type Set output format to table or json (default: table)
Any feedback and contributions are welcome. Feel free to open an issue and submit a pull request.
The tfschema is built on Terraform and its providers. I'm sincerely grateful to those authors.
MIT