0Pricing
Terraform Infrastructure as Code · Aula

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 Terraform Infrastructure as Code 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 Terraform Infrastructure as Code, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Terraform Infrastructure as Code 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 ./... -v

Substituiçã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 Terraform Infrastructure as Code, atualize para CoddyKit PRO. O curso de Terraform Infrastructure as Code 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 Terraform Infrastructure as Code 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 Terraform Infrastructure as Code?

Nenhuma experiência prévia é necessária. Terraform Infrastructure as Code 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 Terraform Infrastructure as Code?

Sim. Cada aula de Terraform Infrastructure as Code 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

  1. Padrões de múltiplas nuvens e nuvem híbrida
  2. Políticas do Sentinel para governança
  3. Terraform Cloud e Enterprise
  4. Criando provedores personalizados
← Voltar para Terraform Infrastructure as Code