Terraform is logically split into two main parts:
- Terraform Core: This is the Terraform binary that communicates with plugins to manage infrastructure resources. It provides a common interface that allows you to leverage many different cloud providers, databases, services, and in-house solutions.
- Terraform Plugins: These are executable binaries written in Go that communicate with Terraform Core over an RPC interface. Each plugin exposes an implementation for a specific service, such as the AWS provider or the cloud-init provider. Terraform currently supports one type of Plugin called providers.
- Learn more about how Terraform Core interacts with plugins.
- Learn the design principles HashiCorp developers follow when creating providers.
- Decide which SDK is right for your provider.
- Try these hands-on tutorials on HashiCorp Learn: Call APIs with Terraform Providers (SDKv2) and Implement Create and Read (Framework)
- Clone these template repositories on GitHub: terraform-provider-scaffolding (SDKv2) and terraform-provider-scaffolding-framework (Framework)
»Develop and Share Providers
- Learn more about how to use SDKv2 to develop providers. This includes details about how to define attributes and behaviors using schemas, develop resources, debug providers, and test plugins.
- Learn more about how to use the plugin framework to develop providers. This includes details about how to define attributes and behaviors using schemas, develop resources and data sources, and write tests.
- Publish your provider on the Terraform Registry to make it publicly available.
- Get HashiCorp to officially approve and verify your provider. Verified providers get a special badge on the Terraform Registry.