Criando provedores personalizados
Amplie o Terraform além das integrações existentes compreendendo como os provedores funcionam e criando um provedor personalizado com o Terraform Plugin Framework.
Criando provedores personalizados é uma aula grátis de DevOps Bootcamp no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de DevOps Bootcamp, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de DevOps Bootcamp inclui 4 aulas no total.
Quando os Provedores Existentes Não São Suficientes
O registro abrange a maioria das plataformas, mas as empresas frequentemente executam APIs internas sem um provedor. Um provedor personalizado permite que o Terraform gerencie esses recursos com o mesmo ciclo de vida de plan/apply.
Como Funcionam os Provedores
Um provedor é um binário de plugin separado que o Terraform inicia e com o qual se comunica por gRPC. O plugin traduz as operações CRUD do Terraform em chamadas de API para o sistema de destino.
O Framework de Plugins
O Terraform Plugin Framework moderno da HashiCorp (Go) é a forma recomendada de criar provedores, substituindo o SDKv2 antigo. Os provedores são escritos em Go.
import (
"github.com/hashicorp/terraform-plugin-framework/provider"
)Definindo o Provedor
O tipo do provedor declara seu nome, os recursos e as fontes de dados que ele oferece.
type widgetProvider struct{}
func (p *widgetProvider) Metadata(_ context.Context, _ provider.MetadataRequest, resp *provider.MetadataResponse) {
resp.TypeName = "widget"
}O Esquema do Recurso
Cada recurso declara um esquema de atributos com tipos e metadados. É isso que os usuários definem no HCL.
resp.Schema = schema.Schema{
Attributes: map[string]schema.Attribute{
"name": schema.StringAttribute{Required: true},
"id": schema.StringAttribute{Computed: true},
},
}Implementando CRUD
Um recurso implementa Create, Read, Update e Delete. Cada método chama sua API e grava o resultado de volta no estado do Terraform.
func (r *widgetResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) {
// call API, then save state
}Read Mantém o Estado Confiável
O método Read atualiza o estado a partir da API real. Se o recurso remoto desaparecer, remova-o do estado para que o Terraform planeje recriá-lo.
Testes de Aceitação
Os provedores usam testes de aceitação que executam ciclos reais de plan/apply em um ambiente de teste, condicionados a uma variável de ambiente para não serem executados acidentalmente.
TF_ACC=1 go test ./... -vSubstituição para Desenvolvimento Local
Para testar um provedor antes de publicá-lo, use uma substituição de desenvolvimento na configuração da CLI, para que o Terraform carregue seu binário local em vez de baixá-lo de um registro.
provider_installation {
dev_overrides {
"acme/widget" = "/home/dev/go/bin"
}
direct {}
}Publicando o Provedor
Publique no registro marcando uma versão e assinando os binários com uma chave GPG. Os consumidores então o declaram em required_providers.
terraform {
required_providers {
widget = {
source = "acme/widget"
version = "~> 1.0"
}
}
}Considerações de Manutenção
Um provedor é um compromisso de longo prazo: alterações na API, compatibilidade entre versões e documentação exigem manutenção contínua. Para necessidades pontuais, a fonte de dados external ou um script pode ser mais simples que um provedor completo.
Verificação Rápida
Teste seus conhecimentos sobre provedores personalizados.
Recapitulação: Estendendo o Terraform
Você aprendeu a criar provedores personalizados:
- Os provedores são plugins Go que se comunicam por gRPC com o núcleo.
- O Plugin Framework define esquemas e métodos CRUD.
- Substituições de desenvolvimento permitem testes locais; testes de aceitação verificam o comportamento.
- A publicação exige tags e binários assinados.
Perguntas Frequentes
A aula “Criando provedores personalizados” é grátis?
Sim — o texto completo de “Criando provedores personalizados” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de DevOps Bootcamp, atualize para CoddyKit PRO. O curso de DevOps Bootcamp inclui 4 aulas no total.
O que vou aprender em “Criando provedores personalizados”?
Amplie o Terraform além das integrações existentes compreendendo como os provedores funcionam e criando um provedor personalizado com o Terraform Plugin Framework. Você pratica DevOps Bootcamp com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar DevOps Bootcamp?
Nenhuma experiência prévia é necessária. DevOps Bootcamp no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Criando provedores personalizados”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de DevOps Bootcamp?
Sim. Cada aula de DevOps Bootcamp inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Padrões de múltiplas nuvens e nuvem híbrida
- Políticas do Sentinel para governança
- Terraform Cloud e Enterprise
- Criando provedores personalizados