github.com/hugorut/terraform@v1.1.3/website/docs/language/providers/index.mdx (about)

     1  ---
     2  page_title: Providers - Configuration Language
     3  description: >-
     4    An overview of how to install and use providers, Terraform plugins that
     5    interact with services, cloud providers, and other APIs.
     6  ---
     7  
     8  # Providers
     9  
    10  > **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.
    11  
    12  Terraform relies on plugins called "providers" to interact with cloud providers,
    13  SaaS providers, and other APIs.
    14  
    15  Terraform configurations must declare which providers they require so that
    16  Terraform can install and use them. Additionally, some providers require
    17  configuration (like endpoint URLs or cloud regions) before they can be used.
    18  
    19  ## What Providers Do
    20  
    21  Each provider adds a set of [resource types](/language/resources)
    22  and/or [data sources](/language/data-sources) that Terraform can
    23  manage.
    24  
    25  Every resource type is implemented by a provider; without providers, Terraform
    26  can't manage any kind of infrastructure.
    27  
    28  Most providers configure a specific infrastructure platform (either cloud or
    29  self-hosted). Providers can also offer local utilities for tasks like
    30  generating random numbers for unique resource names.
    31  
    32  ## Where Providers Come From
    33  
    34  Providers are distributed separately from Terraform itself, and each provider
    35  has its own release cadence and version numbers.
    36  
    37  The [Terraform Registry](https://registry.terraform.io/browse/providers)
    38  is the main directory of publicly available Terraform providers, and hosts
    39  providers for most major infrastructure platforms.
    40  
    41  ## Provider Documentation
    42  
    43  Each provider has its own documentation, describing its resource
    44  types and their arguments.
    45  
    46  The [Terraform Registry](https://registry.terraform.io/browse/providers)
    47  includes documentation for a wide range of providers developed by HashiCorp, third-party vendors, and our Terraform community. Use the
    48  "Documentation" link in a provider's header to browse its documentation.
    49  
    50  Provider documentation in the Registry is versioned; you can use the version
    51  menu in the header to change which version you're viewing.
    52  
    53  For details about writing, generating, and previewing provider documentation,
    54  see the [provider publishing documentation](/registry/providers/docs).
    55  
    56  ## How to Use Providers
    57  
    58  To use resources from a given provider, you need to include some information
    59  about it in your configuration. See the following pages for details:
    60  
    61  - [Provider Requirements](/language/providers/requirements)
    62    documents how to declare providers so Terraform can install them.
    63  
    64  - [Provider Configuration](/language/providers/configuration)
    65    documents how to configure settings for providers.
    66  
    67  - [Dependency Lock File](/language/files/dependency-lock)
    68    documents an additional HCL file that can be included with a configuration,
    69    which tells Terraform to always use a specific set of provider versions.
    70  
    71  ## Provider Installation
    72  
    73  - Terraform Cloud and Terraform Enterprise install providers as part of every run.
    74  
    75  - Terraform CLI finds and installs providers when
    76    [initializing a working directory](/cli/init). It can
    77    automatically download providers from a Terraform registry, or load them from
    78    a local mirror or cache. If you are using a persistent working directory, you
    79    must reinitialize whenever you change a configuration's providers.
    80  
    81    To save time and bandwidth, Terraform CLI supports an optional plugin
    82    cache. You can enable the cache using the `plugin_cache_dir` setting in
    83    [the CLI configuration file](/cli/config/config-file).
    84  
    85  To ensure Terraform always installs the same provider versions for a given
    86  configuration, you can use Terraform CLI to create a
    87  [dependency lock file](/language/files/dependency-lock)
    88  and commit it to version control along with your configuration. If a lock file
    89  is present, Terraform Cloud, CLI, and Enterprise will all obey it when
    90  installing providers.
    91  
    92  > **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.
    93  
    94  ## How to Find Providers
    95  
    96  To find providers for the infrastructure platforms you use, browse
    97  [the providers section of the Terraform Registry](https://registry.terraform.io/browse/providers).
    98  
    99  Some providers on the Registry are developed and published by HashiCorp, some
   100  are published by platform maintainers, and some are published by users and
   101  volunteers. The provider listings use the following badges to indicate who
   102  develops and maintains a given provider.
   103  
   104  <ProviderTable />
   105  <p></p>
   106  
   107  ## How to Develop Providers
   108  
   109  Providers are written in Go, using the Terraform Plugin SDK. For more
   110  information on developing providers, see:
   111  
   112  - The [Plugin Development](/plugin) documentation
   113  - 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)
   114    collection on HashiCorp Learn