github.com/hashicorp/terraform-plugin-sdk@v1.17.2/README.md (about) 1 # Terraform Plugin SDK 2 3 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. 4 5 Terraform itself is a tool for building, changing, and versioning infrastructure safely and efficiently. You can find more about Terraform on its [website](https://www.terraform.io) and [its GitHub repository](https://github.com/hashicorp/terraform). 6 7 ## Terraform CLI Compatibility 8 9 The v1 major release of the Terraform Plugin SDK supports Terraform 0.11 and later. 10 11 It cannot, however, take advantage of all newer features and capabilities in releases of Terraform after 0.11. 12 13 Testing using the reattach-based binary test driver, which is opt-in, requires the test runner to be using Terraform 0.12.26 or later. Only test runners, not users, have this requirement. 14 15 ## Go Compatibility 16 17 The Terraform Plugin SDK is built in Go, and uses the [support policy](https://golang.org/doc/devel/release.html#policy) of Go as its support policy. The two latest major releases of Go are supported by the SDK. 18 19 ## Documentation 20 21 See [Extending Terraform](https://www.terraform.io/docs/extend/index.html) section on the website. 22 23 ## Scope (Providers VS Core) 24 25 ### Terraform Core 26 27 - acts as gRPC _client_ 28 - interacts with the user 29 - parses (HCL/JSON) configuration 30 - manages state as whole, asks **Provider(s)** to mutate provider-specific parts of state 31 - handles backends & provisioners 32 - handles inputs, outputs, modules, and functions 33 - discovers **Provider(s)** and their versions per configuration 34 - manages **Provider(s)** lifecycle (i.e. spins up & tears down provider process) 35 - passes relevant parts of parsed (valid JSON/HCL) and interpolated configuration to **Provider(s)** 36 - decides ordering of (Create, Read, Update, Delete) operations on resources and data sources 37 - ... 38 39 ### Terraform Provider (via this SDK) 40 41 - acts as gRPC _server_ 42 - executes any domain-specific logic based on received parsed configuration 43 - (Create, Read, Update, Delete, Import, Validate) a Resource 44 - Read a Data Source 45 - tests domain-specific logic via provided acceptance test framework 46 - provides **Core** updated state of a resource or data source and/or appropriate feedback in the form of validation or other errors 47 48 ## Migrating to SDK v1 from built-in SDK 49 50 Migrating to the standalone SDK v1 is covered on the [Plugin SDK section](https://www.terraform.io/docs/extend/plugin-sdk.html) of the website. 51 52 ## Versioning 53 54 The Terraform Plugin SDK is a [Go module](https://github.com/golang/go/wiki/Modules) versioned using [semantic versioning](https://semver.org/). See [SUPPORT.md](https://github.com/hashicorp/terraform-plugin-sdk/blob/v1-maint/SUPPORT.md) for information on our support policies. 55 56 ## Contributing 57 58 See [`.github/CONTRIBUTING.md`](https://github.com/hashicorp/terraform-plugin-sdk/blob/master/.github/CONTRIBUTING.md) 59 60 ## License 61 62 [Mozilla Public License v2.0](https://github.com/hashicorp/terraform-plugin-sdk/blob/master/LICENSE)