June 20-22 Announcing HashiConf Europe full schedule: keynotes, sessions, labs & more Register Now
  • Overview
    • Enforce Policy as Code
    • Infrastructure as Code
    • Inject Secrets into Terraform
    • Integrate with Existing Workflows
    • Manage Kubernetes
    • Manage Network Infrastructure
    • Manage Virtual Machine Images
    • Multi-Cloud Deployment
    • Terraform CLI
    • Terraform Cloud
    • Terraform Enterprise
  • Registry
  • Tutorials
    • About the Docs
    • Intro to Terraform
    • Configuration Language
    • Terraform CLI
    • Terraform Cloud
    • Terraform Enterprise
    • Provider Use
    • Plugin Development
    • Registry Publishing
    • Integration Program
    • Terraform Tools
    • CDK for Terraform
    • Glossary
  • Community
GitHubTerraform Cloud
Download

    Plugin Development

  • Overview
  • How Terraform Works With Plugins
  • Provider Design Principles
  • Which SDK should I use?
  • Publishing to the Registry
  • Terraform Integration Program
  • Community Forum
  • Debugging
  • Plugin SDKs and Libraries

  • SDKv2
  • Framework
  • Logging
  • Combining and Translating
  • Other Docs

  • Intro to Terraform
  • Configuration Language
  • Terraform CLI
  • Terraform Cloud
  • Terraform Enterprise
  • Provider Use
  • Plugin Development
  • Registry Publishing
  • Integration Program
  • Terraform Tools
  • CDK for Terraform
  • Glossary
Type '/' to Search

»Plugin Development

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.

diagram: How Terraform uses plugins

»Get Started

  • 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.

»Get Support

  • Ask questions and learn useful patterns in the Terraform Providers section of HashiCorp discuss.

  • Report bugs to the Terraform Plugin SDK Issue Tracker.

github logoEdit this page
  • Overview
  • Docs
  • Extend
  • Privacy
  • Security
  • Press Kit
  • Consent Manager