External plugins to be used with the Terraform project.

Essentially dependencies, they are globally defined and applied across the project, across module boundaries.

In order to remove a provider, all resources that depend on it much naturally be removed. In fact, each time a resource is applied on, Terraform remembers what was the last provider used on it.

provider block

Used to instantiate a provider.

For example:

provider "google" {
  ...
}

retrieves the “google” provider from the source defined in the [[#required_providers-sub-block|required_providers sub-block]].

This may contain an alias, if so happen there are multiple providers defined.

required_providers sub-block

This is specified within the [[HashiCorp Language#terraform-block|terraform block]]. It defines the source registry of a provider, and any (optional) minimum version requirements.

terraform {
  required_providers {
    google = {
      source = ...
      version = ...
    }
  }
}