A new platform for documentation and tutorials is launching soon.
We are migrating Terraform documentation into HashiCorp Developer, our new developer experience.
»Terraform Plugin SDKv2
Terraform Plugin SDKv2 is an established way to develop Terraform Plugins on protocol version 5.
Important: Which SDK Should I Use? explains the differences between Terraform Plugin SDKv2 and Terraform Plugin Framework to help you decide which option is right for your provider.
»Get Started
- Try the Call APIs with Custom Providers tutorials on HashiCorp Learn.
- Clone the terraform-provider-scaffolding template repository on GitHub.
»Key Concepts
- Schemas define available fields for provider, resource, or provisioner configuration block, and give Terraform metadata about those fields.
- Resources are an abstraction that allow Terraform to manage infrastructure objects, such as a compute instance, an access policy, or disk. Providers act as a translation layer between Terraform and an API, offering one or more resources for practitioners to define in a configuration.
»Debug and Test
- Learn how to debug your provider using either logging calls or a debugging tool.
- Learn how to write successful acceptance and unit tests for your provider.
»Combine or Translate
- Combine your provider with other protocol version 5 providers.
- Translate your provider into a protocol version 6 provider to require Terraform 1.0 and later.
»Migrate to Terraform Plugin Framework
The terraform-plugin-framework is a new way to develop Terraform providers, offering improvements and new features from Terraform Plugin SDKv2. You can refactor individual resources and data sources over time with the following compatibility:
- Terraform 0.12 and later: Combine your provider with the framework provider. You will not be able to use protocol version 6 features.
- Terraform 1.0 and later: First, translate your provider into a protocol version 6 provider. Then combine your provider with the framework provider.