No description
Find a file
dependabot[bot] 05b44d0468
build(deps): bump github.com/hashicorp/go-version from 1.8.0 to 1.9.0 (#1571)
Bumps [github.com/hashicorp/go-version](https://github.com/hashicorp/go-version) from 1.8.0 to 1.9.0.
- [Release notes](https://github.com/hashicorp/go-version/releases)
- [Changelog](https://github.com/hashicorp/go-version/blob/main/CHANGELOG.md)
- [Commits](https://github.com/hashicorp/go-version/compare/v1.8.0...v1.9.0)

---
updated-dependencies:
- dependency-name: github.com/hashicorp/go-version
  dependency-version: 1.9.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-31 09:51:20 -04:00
.changes Update changelog 2026-03-10 14:04:54 +00:00
.github build(deps): bump actions/setup-go in the github-actions group (#1569) 2026-03-30 10:35:49 -04:00
diag build(deps): bump github.com/hashicorp/copywrite from 0.24.0 to 0.24.2 in /tools (#1550) 2026-02-06 11:25:54 -05:00
helper Implement GenerateResourceConfig RPC and existing Terraform default logic (#1559) 2026-03-10 10:03:14 -04:00
internal Implement GenerateResourceConfig RPC and existing Terraform default logic (#1559) 2026-03-10 10:03:14 -04:00
meta Update meta package SDKVersion 2026-03-10 14:04:40 +00:00
META.d Add catalog metadata (META.d) (#1480) 2025-05-13 08:14:38 -04:00
plugin build(deps): bump github.com/hashicorp/copywrite from 0.24.0 to 0.24.2 in /tools (#1550) 2026-02-06 11:25:54 -05:00
terraform feat: add deprecation messages for attributes and blocks in configschema (#1553) 2026-02-26 09:36:31 +01:00
tools build(deps): bump github.com/hashicorp/copywrite in /tools (#1568) 2026-03-30 11:04:46 -04:00
.changie.yaml [CI] terraform-devex-repos automation 2024-06-07 16:22:46 -04:00
.copywrite.hcl Add catalog metadata (META.d) (#1480) 2025-05-13 08:14:38 -04:00
.gitignore Introduce NewLoggingHTTPTransport and deprecate NewTransport (#1006) 2022-07-26 12:52:24 +01:00
.golangci.yml SEC-090: Automated trusted workflow pinning (2025-04-07) (#1465) 2025-04-09 10:47:38 -05:00
.goreleaser.yml chore: Add prerelease: auto for future pre-releases (#1446) 2025-03-18 16:12:06 -04:00
CHANGELOG.md Update changelog 2026-03-10 14:04:54 +00:00
go.mod build(deps): bump github.com/hashicorp/go-version from 1.8.0 to 1.9.0 (#1571) 2026-03-31 09:51:20 -04:00
go.sum build(deps): bump github.com/hashicorp/go-version from 1.8.0 to 1.9.0 (#1571) 2026-03-31 09:51:20 -04:00
LICENSE build(deps): bump github.com/hashicorp/copywrite from 0.24.0 to 0.24.2 in /tools (#1550) 2026-02-06 11:25:54 -05:00
Makefile [COMPLIANCE] Add copyright and license headers (#1203) 2023-06-05 09:44:17 -04:00
README.md [Chore] Upgrade Go version to 1.25 (#1564) 2026-03-05 14:39:52 -05:00
ROADMAP.md Update ROADMAP.md 2021-08-16 10:12:08 -07:00
SUPPORT.md Link to v1-maint support policy. 2021-04-22 15:41:49 -07:00

PkgGoDev

Terraform Plugin SDK

This SDK enables building Terraform plugin which allows Terraform's users to manage existing and popular service providers as well as custom in-house solutions. The SDK is stable and broadly used across the provider ecosystem.

For new provider development it is recommended to investigate terraform-plugin-framework, which is a reimagined provider SDK that supports additional capabilities. Refer to the Which SDK Should I Use? documentation for more information about differences between SDKs.

Terraform itself is a tool for building, changing, and versioning infrastructure safely and efficiently. You can find more about Terraform on its website and its GitHub repository.

Terraform CLI Compatibility

Terraform 0.12.0 or later is needed for version 2.0.0 and later of the Plugin SDK.

When running provider tests, Terraform 0.12.26 or later is needed for version 2.0.0 and later of the Plugin SDK. Users can still use any version after 0.12.0.

Go Compatibility

This project follows the support policy of Go as its support policy. The two latest major releases of Go are supported by the project.

Currently, that means Go 1.25 or later must be used when including this project as a dependency.

Getting Started

See the Call APIs with Terraform Providers guide on learn.hashicorp.com for a guided tour of provider development.

Documentation

See Extending Terraform section on the website.

Scope (Providers VS Core)

Terraform Core

  • acts as gRPC client
  • interacts with the user
  • parses (HCL/JSON) configuration
  • manages state as whole, asks Provider(s) to mutate provider-specific parts of state
  • handles backends & provisioners
  • handles inputs, outputs, modules, and functions
  • discovers Provider(s) and their versions per configuration
  • manages Provider(s) lifecycle (i.e. spins up & tears down provider process)
  • passes relevant parts of parsed (valid JSON/HCL) and interpolated configuration to Provider(s)
  • decides ordering of (Create, Read, Update, Delete) operations on resources and data sources
  • ...

Terraform Provider (via this SDK)

  • acts as gRPC server
  • executes any domain-specific logic based on received parsed configuration
    • (Create, Read, Update, Delete, Import, Validate) a Resource
    • Read a Data Source
  • tests domain-specific logic via provided acceptance test framework
  • provides Core updated state of a resource or data source and/or appropriate feedback in the form of validation or other errors

Migrating to SDK v1 from built-in SDK

Migrating to the standalone SDK v1 is covered on the Plugin SDK section of the website.

Migrating to SDK v2 from SDK v1

Migrating to the v2 release of the SDK is covered in the v2 Upgrade Guide of the website.

Versioning

The Terraform Plugin SDK is a Go module versioned using semantic versioning. See SUPPORT.md for information on our support policies.

Contributing

See .github/CONTRIBUTING.md

License

Mozilla Public License v2.0