Define global default values for the tasks of an Ansible module

ansibledefaults

I find myself repeatedly typing arguments to file-related modules of Ansible like this:

- copy:
    […]
    owner: root
    group: root
    mode: ugo=r

Though it may seem safe to assume that omitting these arguments for ownership would result the same as the tasks are 'sudoedly' executed, 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.

Is there a way to facilitate such definition?

Best Answer

Yes, you can do this as long as you are using version >= 2.6. This can be accomplished using the module_defaults keyword.

Example usage looks like this:

- hosts: localhost
  gather_facts: no
  module_defaults:
    file:
      owner: foobar
  tasks:
    - file:
        path: /tmp/defaults_test
        state: touch