Conceito e mecanismo
Uma role organiza tarefas, handlers, variáveis, ficheiros e outros componentes relacionados. Reutilizar essa estrutura é útil quando a interface é compreensível: quais valores o consumidor deve fornecer, quais têm defaults e quais restrições existem. Defaults permitem opções substituíveis pelo consumidor dentro das regras de precedência. Não escondas uma decisão que precisa de ser configurável numa camada que impede a substituição pretendida. A validação de argumentos de roles permite declarar tipos e requisitos, detetando um contrato incorreto antes de executar trabalho dependente. Um parâmetro ausente deve produzir uma mensagem compreensível, em vez de uma falha remota difícil de relacionar com a entrada original.
Aplicação guiada
Collections distribuem conteúdo com namespace e identidade própria. Usar namespace.collection.module esclarece o módulo, mas a collection continua a precisar de instalação no ambiente correto. Para obter uma role de um repositório, regista uma revisão estável aprovada em vez de depender de uma branch móvel. O pinning ajuda a repetir o artefacto, sem provar que ele é seguro ou adequado. Num projeto fictício de middleware, a equipa de plataforma publica uma role e APS fornece os valores de cada ambiente. Antes de a promover, ensaia entradas válidas e inválidas, confirma as dependências da EE e revê mudanças de interface. Documenta também como atualizar a dependência, para que reprodutibilidade não se transforme em obsolescência permanente.
A role aceita service_port como inteiro; uma entrada incompatível deve falhar com indicação do contrato.
Armadilhas comuns
Reutilização sem interface; FQCN sem instalação; branch móvel como versão fixa; pinning como garantia de segurança.
Tópicos relacionados: Estado e repetibilidade · Inventários, variáveis e configuração · Acesso e ambiente de execução
Entrega componentes reutilizáveis com contrato, versão e caminho de atualização.
Referência: Role organization and variables · EX294 current objectives inspected 2026-09-30; RHCE in Ansible framework effective 2026-05-11; booking product version not publicly pinned