Help for Terraform Provider Developers
// Hashicorp Blog
We at HashiCorp are pleased to introduce the new Terraform Provider Enablement project, making it easier than ever for Go developers to give Terraform's users access to their favorite clouds and services.
A HashiCorp Terraform CLI run uses two sub-systems: the Terraform Core, which provides universal services like configuration parsing and dependency mapping, and a Terraform Provider, which handles communication with a given API, whether a cloud (like AWS) or some other service (like GitHub). Providers are written in the Go programming language, a different skillset from the DevOps practitioner who writes Terraform configurations in HCL. Terraform has grown to over eighty integrated providers (which HashiCorp builds and tests), and several dozen more in the larger community. This is a tremendous accomplishment from Terraform's open-source community, and also far more than HashiCorp can maintain by ourselves. Writing providers has historically been an under-documented process, and it became clear that we needed to do more to support the Provider development that plays such a huge role in the success of Terraform and its users.
Provider Enablement Project
The Provider Enablement project's goal is to enable and scale the Terraform Ecosystem. The project will focus on developer empowerment and enablement through documentation, tooling, community management, and core improvements. The Enablement Project is for all Terraform Plugin authors and contributors: whether you're creating a provider for your company's internal use, or adding Terraform support for the next big public cloud, we want to help you succeed.
We are excited to announce the project's first milestone: a new documentation section for Extending Terraform, which collects the expertise of provider developers from inside and outside of HashiCorp:
- How Terraform Works: A tour of Terraform's internals.
- Writing Custom Providers: A walk-through of "Hello, world" for Terraform providers.
- Schemas: The data and interfaces inside Terraform.
- Best Practices: Writing idiomatic Terraform Provider code.
- Testing: Patterns for effectively testing a Terraform Provider.
We're still adding to the Extending Terraform pages, so if you see something missing, let us know. We may already be working on it!
We hope this takes the mystery out of writing Terraform Providers, and we're looking forward to delivering more tools to help the people and organizations of the Terraform Ecosystem continue to succeed.
Read in my feedly