- Providers are typically published to the Terraform Registry and are organized by publisher/namespace.
- Providers fall into three common tiers: Official (HashiCorp-maintained), Verified/Partner (vendor-validated), and Community (third-party).

- Initialize the configured backend.
- Discover required providers referenced in configuration.
- Query the Registry for provider metadata (namespace, available versions).
- Download and install provider binaries into the project directory.
- Provider plugins are stored inside your project under the
.terraformdirectory (they are not installed globally). Example listing:
- Provider IDs use a namespace/type pattern such as
hashicorp/azurerm. The provider type (for exampleazurerm,aws,local) is what you reference when declaring resources (e.g.,azurerm_virtual_network,aws_s3_bucket).
- Providers are versioned. By default, Terraform will choose the latest compatible version; however, pinning or constraining provider versions is best practice for stability.
- terraform init creates a
terraform.lock.hclthat records the exact provider download selections. When this file exists in the project, subsequentterraform initruns will prefer those locked versions and reuse already-installed binaries.
Include
terraform.lock.hcl in version control. The lock file ensures everyone (local developers and CI) uses the exact same provider versions for reproducible, deterministic runs.- Run
terraform initany time you change provider configuration, add a new provider, or modify provider version constraints. - CI pipelines should run
terraform initat the start of each job so the correct backend and provider plugins are installed.
- The Terraform Registry is the authoritative place to browse providers, view version history, filter by tier (official, verified, community), and inspect usage examples and source links.



terraform block with required_providers and then configure the provider. Example:
- Terraform Registry — https://registry.terraform.io/
- Terraform CLI documentation — https://www.terraform.io/docs/cli/index.html
- Managing providers and modules — https://www.terraform.io/docs/language/providers/index.html