Skip to content

magodo/terraform-client-go

Repository files navigation

terraform-client-go

terraform-client-go provides low-level Go bindings for the Terraform plugin protocol, only as the client.

Why

There is a hashicorp official project https://github.com/hashicorp/terraform-plugin-go that provides low-level Go bindings for the Terraform plugin protocol, while it only support the server part.

There is also a personal project from Mart https://github.com/apparentlymart/terraform-provider that does the similar thing as this project, while it seems not being actively maintained, and some of its dependencies that being exposed in some forms (e.g. user facing types) seems not the hashicorp offically recommended ones (e.g. https://github.com/rpcplugin/go against https://github.com/hashicorp/terraform-plugin-go, https://github.com/apparentlymart/terraform-schema-go against https://github.com/hashicorp/terraform-json).

What

This project provides two layers of client abstractions:

How

There are a lot of code duplication&adoption from different sources, for a reason:

There is a Terraform module (tools/upstream-change-monitor) being used to keep track of the upstream file changes.

Credit

Parts of this project were adopted from https://github.com/hashicorp/terraform-plugin-go and https://github.com/hashicorp/terraform. I'd like to thank Hashicorp for all these great works!