Skip to main content

Providers

OpenTF relies on plugins called providers to interact with cloud providers, SaaS providers, and other APIs.

OpenTF configurations must declare which providers they require so that OpenTF can install and use them. Additionally, some providers require configuration (like endpoint URLs or cloud regions) before they can be used.

What Providers Do

Each provider adds a set of resource types and/or data sources that OpenTF can manage.

Every resource type is implemented by a provider; without providers, OpenTF can't manage any kind of infrastructure.

Most providers configure a specific infrastructure platform (either cloud or self-hosted). Providers can also offer local utilities for tasks like generating random numbers for unique resource names.

Where Providers Come From

Providers are distributed separately from OpenTF itself, and each provider has its own release cadence and version numbers.

The Public Terraform Registry is the main directory of publicly available providers, and hosts providers for most major infrastructure platforms.

Provider Documentation

Each provider has its own documentation, describing its resource types and their arguments.

The Public Terraform Registry includes documentation for a wide range of providers developed by HashiCorp, third-party vendors, and our OpenTF community. Use the "Documentation" link in a provider's header to browse its documentation.

Provider documentation in the Registry is versioned; you can use the version menu in the header to change which version you're viewing.

For details about writing, generating, and previewing provider documentation, see the provider publishing documentation.

How to Use Providers

Providers are released separately from OpenTF itself and have their own version numbers. In production we recommend constraining the acceptable provider versions in the configuration's provider requirements block, to make sure that opentf init does not install newer versions of the provider that are incompatible with the configuration.

To use resources from a given provider, you need to include some information about it in your configuration. See the following pages for details:

  • Provider Requirements documents how to declare providers so OpenTF can install them.

  • Provider Configuration documents how to configure settings for providers.

  • Dependency Lock File documents an additional HCL file that can be included with a configuration, which tells OpenTF to always use a specific set of provider versions.

Provider Installation

  • TACOS (TF Automation and Collaboration Software) install providers as part of every run.

  • OpenTF CLI finds and installs providers when initializing a working directory. It can automatically download providers from a provider registry, or load them from a local mirror or cache. If you are using a persistent working directory, you must reinitialize whenever you change a configuration's providers.

    To save time and bandwidth, OpenTF CLI supports an optional plugin cache. You can enable the cache using the plugin_cache_dir setting in the CLI configuration file.

To ensure OpenTF always installs the same provider versions for a given configuration, you can use OpenTF CLI to create a dependency lock file and commit it to version control along with your configuration. If a lock file is present, OpenTF CLI, and TACOS (TF Automation and Collaboration Software) will all obey it when installing providers.

How to Find Providers

To find providers for the infrastructure platforms you use, browse the Public Terraform Registry.

Some providers on the Registry are developed and published by HashiCorp, some are published by platform maintainers, and some are published by users and volunteers. The provider listings use the following badges to indicate who develops and maintains a given provider.

How to Develop Providers

Providers are written in Go, using the Terraform Plugin SDK. For more information on developing providers, see the Plugin Development documentation.