I'd like to define these arguments once explicitly in the scope of either a role's defaults or a host's variables per module or even a group of modules.
Felizmente você não pode e sua solicitação é incoerente devido à maneira como você usa a palavra "explicitamente".
Na verdade, você quer "definir esses argumentos uma vez para que eles sejam aplicados implicitamente ".
E por outro lado, é Ansible que requer que os valores dos parâmetros sejam especificados explicitamente .
Though it may seem safe to assume that omitting these arguments for ownership would result the same as the tasks are 'sudoedly' executed,
Não, não é seguro assumir que omitir os argumentos definiria a propriedade para valores definidos na sua cabeça.
O caso mais simples é onde o arquivo já existe e o Ansible apenas altera seu conteúdo. Não irá implicitamente fixar as permissões / propriedade nesse caso.
A melhor coisa que você pode fazer é especificar os parâmetros necessários explicitamente em tarefas.
Se você quiser ter alguma flexibilidade, use variáveis definidas em um único lugar:
vars:
my_owner: root
my_group: root
my_mode: ugo=r
tasks:
- copy:
[…]
owner: "{{ my_owner }}"
group: "{{ my_group }}"
mode: "{{ my_mode }}"
Outra coisa importante a ter em mente é que, historicamente, nem todos os módulos estavam se comportando da mesma maneira em relação às permissões de arquivo. Ou seja, alguns módulos ( url
, se bem me lembro) definem as permissões explicitamente especificadas somente quando realmente criaram / alteraram o arquivo, enquanto deixam as permissões inalteradas de outra forma.
Não há desculpa para não testar os sistemas (usando um fluxo separado, seja usando Ansible, ou uma ferramenta diferente).