Providers são plugins que permitem ao Terraform se comunicar com APIs externas: cloud providers (AWS, GCP, Azure), SaaS (GitHub, Datadog), ou até recursos locais. Cada provider expõe um conjunto de resources e data sources que podem ser usados nas configurações.
Configuração
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
local = {
source = "hashicorp/local"
version = "~> 2.0"
}
}
}
provider "aws" {
region = "us-east-1"
}O bloco terraform.required_providers declara a dependência; o bloco provider configura o comportamento (região, credenciais, etc.).
Providers comuns
| Provider | Uso |
|---|---|
hashicorp/aws | Amazon Web Services |
hashicorp/google | Google Cloud Platform |
hashicorp/azurerm | Microsoft Azure |
hashicorp/local | Arquivos e recursos locais |
hashicorp/null | Resources sem ação real (útil para scripts) |
hashicorp/random | Geração de valores aleatórios |
hashicorp/kubernetes | Clusters Kubernetes |
Versionamento
O operador ~> (pessimistic constraint) permite apenas patches: ~> 5.0 aceita 5.x mas não 6.0. Sempre fixe versões de providers em produção.
Múltiplos providers do mesmo tipo
Use alias para configurar o mesmo provider com configurações diferentes (ex: múltiplas regiões AWS):
provider "aws" {
alias = "us_east"
region = "us-east-1"
}
provider "aws" {
alias = "eu_west"
region = "eu-west-1"
}
resource "aws_s3_bucket" "europe" {
provider = aws.eu_west
bucket = "meu-bucket-europa"
}Ver também: terraform-resources | terraform