Estou tentando descobrir como usar o Ansible para definir permissões em uma árvore de diretórios para que o padrão seja 644 como padrão (755 para diretórios, é claro), exceto para um diretório que precisa de permissões 664/775.
A implementação ingênua seria esta:
file:
path: "mypath"
mode: "u+rwX,go+rX,go-w"
recurse: True
file:
path: "mypath/exception"
mode: "g+w"
recurse: True
No entanto, isso obviamente não é idempotente. A cada execução, mypath/exception terá as permissões de gravação de grupo removidas e imediatamente adicionadas novamente.
A alternativa é enumerar cada subdiretório individual em mypath/*, o que espero evitar.
Existe outra maneira de fazer isso de maneira idempotente?
Você pode usar o
find
módulo para gerar uma lista de caminhos e operar nesses caminhos em vez de usarrecurse
. Por exemplo:A execução do playbook acima em uma árvore de diretórios de exemplo produz algo como:
Este playbook será devidamente idempotente.