--- layout: "docs" page_title: "Provider Plugins" sidebar_current: "docs-plugins-provider" --- # Provider Plugins A provider in Terraform is responsible for the lifecycle of a resource: create, read, update, delete. An example of a provider is AWS, which can manage resources of type `aws_instance`, `aws_eip`, `aws_elb`, etc. The primary reasons to care about provider plugins are: * You want to add a new resource type to an existing provider. * You want to write a completely new provider for managing resource types in a system not yet supported. * You want to write a completely new provider for custom, internal systems such as a private inventory management system.
Advanced topic! Plugin development is a highly advanced topic in Terraform, and is not required knowledge for day-to-day usage. If you don't plan on writing any plugins, we recommend not reading this section of the documentation.
## Coming Soon! The documentation for writing custom providers is coming soon. In the mean time, you can look at how our [built-in providers are written](https://github.com/hashicorp/terraform/tree/master/builtin). We recommend copying as much as possible from our providers when working on yours. We're also rapidly working on improving the high-level helpers for writing providers. We expect that writing providers will become much easier very shortly, and acknowledge that writing them now is not the easiest thing to do.