Recorte localizado

Módulos Terraform: contratos, composição e evolução segura

Como desenhar inputs, outputs e dependências de provider para reutilizar infraestrutura sem transformar o módulo em uma caixa-preta.

Estado da tradução: reviewedIdioma fonte: Español

Um módulo é uma fronteira contratual

Inputs expressam decisões permitidas, recursos implementam invariantes e outputs publicam apenas o que outro componente necessita. Extrair uma pasta não cria automaticamente uma abstração útil: o contrato deve reduzir acoplamento sem esconder escolhas operacionais importantes.

Componha módulos pequenos no root module

Terraform favorece composição explícita, não herança. O root module conecta rede, identidade e workloads passando outputs para inputs. Child modules devem declarar providers necessários e receber configurações do nível superior, evitando credenciais, aliases ou regiões implícitas difíceis de testar.

  • Modele objetos coesos em vez de uma opção para cada recurso possível.
  • Mantenha ownership, lifecycle e limites de estado visíveis na composição.

Versione o contrato e teste a migração

Renomear recursos, tipos de variáveis ou outputs pode quebrar endereços de estado e consumidores. Use constraints, changelog, moved blocks e testes para demonstrar compatibilidade. Uma release maior deve explicar o caminho de migração, não apenas anunciar que existem breaking changes.

Referências

  1. [1]

    Terraform module development

    Documentação oficial sobre estrutura, composição e publicação de módulos.

  2. [2]

    OpenTofu module development

    Contrato equivalente no OpenTofu para módulos reutilizáveis e providers.