allow_duplicates e idempotência de roles
Controle a execução repetida de roles.
allow_duplicates e idempotência de roles é uma aula grátis de Ansible Academy 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 Ansible Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Ansible Academy inclui 4 aulas no total.
As roles são executadas uma vez por padrão
Se duas roles dependerem de uma role common, o Ansible será inteligente: executará common somente uma vez, não duas, durante uma única execução.
Por que existe a deduplicação
Essa deduplicação impede que roles de configuração compartilhadas repitam trabalho dispendioso, como executar novamente uma role base de reforço de segurança para cada role de aplicação.
Mesma role, mesmos parâmetros
O salto só se aplica quando a role é solicitada com os mesmos parâmetros. Chamadas idênticas são tratadas como já concluídas.
Parâmetros diferentes, nova execução
Chame a mesma role com variáveis diferentes e o Ansible a executará novamente. Uma role de hosts virtuais com duas configurações será aplicada duas vezes, como você deseja.
roles:
- role: vhost
vars: { name: site_a }
- role: vhost
vars: { name: site_b }Conheça allow_duplicates
A configuração allow_duplicates em meta/main.yml controla esse comportamento. Defina-a como true e a role poderá ser executada repetidamente durante uma execução.
# meta/main.yml
allow_duplicates: trueQuando permitir duplicatas
Ative essa opção para roles criadas para serem aplicadas muitas vezes, como as que criam vários usuários ou hosts virtuais, com cada chamada realizando um trabalho realmente novo.
O padrão é false
Por padrão, allow_duplicates é false, portanto uma role com parâmetros idênticos é executada apenas uma vez. Deixe essa opção desativada para roles de configuração executadas uma única vez.
Deduplicação não é idempotência
Ignorar uma chamada duplicada é apenas uma conveniência durante a execução. A verdadeira idempotência ocorre quando cada tarefa converge para um estado, independentemente de quantas vezes seja executada.
Crie tarefas idempotentes
Dentro de uma role, prefira módulos baseados em estado a comandos brutos. Uma role realmente idempotente pode ser aplicada duas vezes sem causar danos.
include_role sempre é executado novamente
Tenha cuidado: include_role não respeita a lógica de deduplicação da mesma maneira. Uma role incluída dinamicamente é executada toda vez que você chega até ela.
Componível e seguro
Combine deduplicação, allow_duplicates e tarefas idempotentes para criar hierarquias de roles que se combinam de forma organizada e continuam seguras para serem executadas novamente.
Verificação rápida
Relembre a configuração que permite que uma função seja executada mais de uma vez em uma execução.
Recapitulação
O Ansible elimina chamadas idênticas de funções; defina allow_duplicates como true para repetir uma delas e mantenha as tarefas idempotentes para reexecuções seguras. ♻️
Perguntas Frequentes
A aula “allow_duplicates e idempotência de roles” é grátis?
Sim — o texto completo de “allow_duplicates e idempotência de roles” é 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 Ansible Academy, atualize para CoddyKit PRO. O curso de Ansible Academy inclui 4 aulas no total.
O que vou aprender em “allow_duplicates e idempotência de roles”?
Controle a execução repetida de roles. Você pratica Ansible Academy 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 Ansible Academy?
Nenhuma experiência prévia é necessária. Ansible Academy 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 “allow_duplicates e idempotência de roles”?
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 Ansible Academy?
Sim. Cada aula de Ansible Academy 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
- Dependências de roles em meta/main.yml
- defaults versus vars: a ordem de substituição
- include_role e import_role em tempo de execução
- allow_duplicates e idempotência de roles