Terraform Plugin Framework
Develop Terraform providers using the recommended plugin framework.
The plugin framework is HashiCorp’s recommended way develop Terraform Plugins on protocol version 6 or protocol version 5.
We recommend using the framework to develop new providers because it offers significant advantages as compared to Terraform Plugin SDKv2. We also recommend migrating existing providers to the framework when possible. Refer to Plugin Framework Benefits for higher level details about how the framework makes provider development easier and Plugin Framework Features for a detailed functionality comparison between the SDKv2 and the framework.
Get Started
- Try the Terraform Plugin Framework tutorials.
- Clone the terraform-provider-scaffolding-framework template repository on GitHub.
Key Concepts
- Provider Servers encapsulate all Terraform plugin details and handle all calls for provider, resource, and data source operations by implementing the Terraform Plugin Protocol. They are implemented as binaries that the Terraform CLI downloads, starts, and stops.
- Providers are the top level abstraction that define the available resources and data sources for practitioners to use and may accept its own configuration, such as authentication information.
- 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.
- Data Sources are an abstraction that allow Terraform to reference external data. Providers have data sources that tell Terraform how to request external data and how to convert the response into a format that practitioners can interpolate.
Test and Publish
- Learn to write acceptance tests for your provider.
- Learn to publish your provider to the Terraform Registry.