github.com/iaas-resource-provision/iaas-rpc@v1.0.7-0.20211021023331-ed21f798c408/website/docs/language/providers/index.html.md (about) 1 --- 2 layout: "language" 3 page_title: "Providers - Configuration Language" 4 --- 5 6 # Providers 7 8 > **Hands-on:** Try the [Perform CRUD Operations with Providers](https://learn.hashicorp.com/tutorials/terraform/provider-use?in=terraform/configuration-language&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial on HashiCorp Learn. 9 10 Terraform relies on plugins called "providers" to interact with cloud providers, 11 SaaS providers, and other APIs. 12 13 Terraform configurations must declare which providers they require so that 14 Terraform can install and use them. Additionally, some providers require 15 configuration (like endpoint URLs or cloud regions) before they can be used. 16 17 ## What Providers Do 18 19 Each provider adds a set of [resource types](/docs/language/resources/index.html) 20 and/or [data sources](/docs/language/data-sources/index.html) that Terraform can 21 manage. 22 23 Every resource type is implemented by a provider; without providers, Terraform 24 can't manage any kind of infrastructure. 25 26 Most providers configure a specific infrastructure platform (either cloud or 27 self-hosted). Providers can also offer local utilities for tasks like 28 generating random numbers for unique resource names. 29 30 ## Where Providers Come From 31 32 Providers are distributed separately from Terraform itself, and each provider 33 has its own release cadence and version numbers. 34 35 The [Terraform Registry](https://registry.terraform.io/browse/providers) 36 is the main directory of publicly available Terraform providers, and hosts 37 providers for most major infrastructure platforms. 38 39 ## Provider Documentation 40 41 Each provider has its own documentation, describing its resource 42 types and their arguments. 43 44 The [Terraform Registry](https://registry.terraform.io/browse/providers) 45 includes documentation for a wide range of providers developed by HashiCorp, third-party vendors, and our Terraform community. Use the 46 "Documentation" link in a provider's header to browse its documentation. 47 48 Provider documentation in the Registry is versioned; you can use the version 49 menu in the header to change which version you're viewing. 50 51 For details about writing, generating, and previewing provider documentation, 52 see the [provider publishing documentation](/docs/registry/providers/docs.html). 53 54 ## How to Use Providers 55 56 To use resources from a given provider, you need to include some information 57 about it in your configuration. See the following pages for details: 58 59 - [Provider Requirements](/docs/language/providers/requirements.html) 60 documents how to declare providers so Terraform can install them. 61 62 - [Provider Configuration](/docs/language/providers/configuration.html) 63 documents how to configure settings for providers. 64 65 - [Dependency Lock File](/docs/language/dependency-lock.html) 66 documents an additional HCL file that can be included with a configuration, 67 which tells Terraform to always use a specific set of provider versions. 68 69 ## Provider Installation 70 71 - Terraform Cloud and Terraform Enterprise install providers as part of every run. 72 73 - Terraform CLI finds and installs providers when 74 [initializing a working directory](/docs/cli/init/index.html). It can 75 automatically download providers from a Terraform registry, or load them from 76 a local mirror or cache. If you are using a persistent working directory, you 77 must reinitialize whenever you change a configuration's providers. 78 79 To save time and bandwidth, Terraform CLI supports an optional plugin 80 cache. You can enable the cache using the `plugin_cache_dir` setting in 81 [the CLI configuration file](/docs/cli/config/config-file.html). 82 83 To ensure Terraform always installs the same provider versions for a given 84 configuration, you can use Terraform CLI to create a 85 [dependency lock file](/docs/language/dependency-lock.html) 86 and commit it to version control along with your configuration. If a lock file 87 is present, Terraform Cloud, CLI, and Enterprise will all obey it when 88 installing providers. 89 90 > **Hands-on:** Try the [Lock and Upgrade Provider Versions](https://learn.hashicorp.com/tutorials/terraform/provider-versioning?in=terraform/configuration-language&utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial on HashiCorp Learn. 91 92 ## How to Find Providers 93 94 To find providers for the infrastructure platforms you use, browse 95 [the providers section of the Terraform Registry](https://registry.terraform.io/browse/providers). 96 97 Some providers on the Registry are developed and published by HashiCorp, some 98 are published by platform maintainers, and some are published by users and 99 volunteers. The provider listings use the following badges to indicate who 100 develops and maintains a given provider. 101 102 <table border="0" style="border-collapse: collapse; width: 100%;"> 103 <tbody> 104 <tr style="height: 21px;"> 105 <td style="width: 12.4839%; height: 21px;"><strong>Tier</strong></td> 106 <td style="width: 55.7271%; height: 21px;"><strong>Description</strong></td> 107 <td style="width: 31.7889%; height: 21px;"><strong>Namespace</strong></td> 108 </tr> 109 <tr style="height: 21px;"> 110 <td style="width: 12.4839%; height: 21px;"><img src="/docs/registry/providers/images/official-tier.png" alt="" /></td> 111 <td style="width: 55.7271%; height: 21px;"><i><span style="font-weight: 400;">Official providers are owned and maintained by HashiCorp </span></i></td> 112 <td style="width: 31.7889%; height: 21px;"><code><span style="font-weight: 400;">hashicorp</span></code></td> 113 </tr> 114 <tr style="height: 21px;"> 115 <td style="width: 12.4839%; height: 21px;"><img src="/docs/registry/providers/images/verified-tier.png" alt="" /></td> 116 <td style="width: 55.7271%; height: 21px;"><i><span style="font-weight: 400;">Verified providers are owned and maintained by third-party technology partners. Providers in this tier indicate HashiCorp has verified the authenticity of the Provider’s publisher, and that the partner is a member of the </span></i><a href="https://www.hashicorp.com/ecosystem/become-a-partner/"><i><span style="font-weight: 400;">HashiCorp Technology Partner Program</span></i></a><i><span style="font-weight: 400;">.</span></i></td> 117 <td style="width: 31.7889%; height: 21px;"><span style="font-weight: 400;">Third-party organization, e.g. </span><code><span style="font-weight: 400;">mongodb/mongodbatlas</span></code></td> 118 </tr> 119 <tr style="height: 21px;"> 120 <td style="width: 12.4839%; height: 21px;"><img src="/docs/registry/providers/images/community-tier.png" alt="" /></td> 121 <td style="width: 55.7271%; height: 21px;">Community providers are published to the Terraform Registry by individual maintainers, groups of maintainers, or other members of the Terraform community.</td> 122 <td style="width: 31.7889%; height: 21px;"><br />Maintainer’s individual or organization account, e.g. <code>DeviaVir/gsuite</code></td> 123 </tr> 124 <tr style="height: 21px;"> 125 <td style="width: 12.4839%; height: 21px;"><img src="/docs/registry/providers/images/archived-tier.png" alt="" /></td> 126 <td style="width: 55.7271%; height: 21px;">Archived Providers are Official or Verified Providers that are no longer maintained by HashiCorp or the community. This may occur if an API is deprecated or interest was low.</td> 127 <td style="width: 31.7889%; height: 21px;"><code>hashicorp</code> or third-party</td> 128 </tr> 129 </tbody> 130 </table> 131 132 133 ## How to Develop Providers 134 135 Providers are written in Go, using the Terraform Plugin SDK. For more 136 information on developing providers, see: 137 138 - The [Extending Terraform](/docs/extend/index.html) documentation 139 - The [Call APIs with Terraform Providers](https://learn.hashicorp.com/collections/terraform/providers?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) 140 collection on HashiCorp Learn