Skip to content

Migrate to Terraform Plugin Framework #180

Open
@matifali

Description

@matifali

Terraform recommends migrating to Terraform Plugins Framework as it provides some benefits over the SDKv2.

  1. https://developer.hashicorp.com/terraform/plugin/framework-benefits/
  2. https://developer.hashicorp.com/terraform/plugin/framework/migrating/benefits

Docs

Terraform Plugin Framework
Develop Terraform providers using the recommended plugin framework.

The plugin framework is HashiCorp’s recommended way develop Terraform Plugins on protocol version 6 or protocol version 5.

We recommend using the framework to develop new providers because it offers significant advantages as compared to Terraform Plugin SDKv2. We also recommend migrating existing providers to the framework when possible. Refer to Plugin Framework Benefits for higher level details about how the framework makes provider development easier and Plugin Framework Features for a detailed functionality comparison between the SDKv2 and the framework.

Get Started

Try the Terraform Plugin Framework tutorials.
Clone the terraform-provider-scaffolding-framework template repository on GitHub.

Migration steps

Take the following steps when you migrate a provider from SDKv2 to the Framework:

  1. Ensure all tests pass.
  2. Consider finding SDKv2 resource data consistency errors, which might affect migrating to the Framework. Some errors can be resolved and verified with SDKv2 code before migration, if desired, otherwise resolving these errors must be part of the migration.
  3. Serve the provider via the Framework.
    1. Implement muxing, if you plan to migrate the provider iteratively.
  4. Update the provider definition to use the Framework.
  5. Update the provider schema.
  6. Update each of the provider's resources and data sources.
    1. Update related tests to use the Framework, and ensure that the tests fail.
    2. Migrate the resource or data source.
    3. Verify that related tests now pass.
  7. If you used muxing, remove the muxing configuration.

Depends on #222

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions