- name: main block vars: test_file: /tmp/ansible-test.module_defaults.foo module_defaults: debug: msg: test default file: path: '{{ test_file }}' block: - debug: register: foo - name: test that 'debug' task used default 'msg' param assert: that: foo.msg == "test default" - name: remove test file file: state: absent - name: touch test file file: state: touch - name: stat test file stat: path: '{{ test_file }}' register: foo - name: check that test file exists assert: that: foo.stat.exists - name: remove test file file: state: absent - name: test that module defaults from parent are inherited and merged module_defaults: # Meaningless values to make sure that 'module_defaults' gets # evaluated for this block foo: bar: baz block: - debug: register: foo - assert: that: foo.msg == "test default" - name: test that we can override module defaults inherited from parent module_defaults: debug: msg: "different test message" block: - debug: register: foo - assert: that: foo.msg == "different test message" - name: test that module defaults inherited from parent can be removed module_defaults: debug: {} block: - debug: register: foo - assert: that: foo.msg == "Hello world!" - name: test that module defaults can be overridden by module params block: - debug: msg: another test message register: foo - assert: that: foo.msg == "another test message" - debug: msg: '{{ omit }}' register: foo - assert: that: foo.msg == "Hello world!" - name: Module group defaults block module_defaults: group/aws: region: us-east-1 aws_secret_key: foobar block: - aws_s3_bucket_facts: ignore_errors: true register: s3 - assert: that: - "'Partial credentials' in s3.msg or 'boto3 required' in s3.msg" - name: Module group defaults block module_defaults: group/aws: region: us-east-1 aws_secret_key: foobar aws_access_key: foobar block: - aws_s3_bucket_facts: ignore_errors: true register: s3 - assert: that: - "'InvalidAccessKeyId' in s3.msg or 'boto3 required' in s3.msg"