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.
See Extending Terraform section on the website.
Scope (Providers VS 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.