- name: ensure delegated host has hostvars available for resolving connection hosts: testhost gather_facts: false tasks: - name: ensure delegated host uses current host as inventory_hostname assert: that: - inventory_hostname == ansible_delegated_vars['testhost5']['inventory_hostname'] delegate_to: testhost5 - name: Set info on inventory_hostname set_fact: login: invaliduser mypass: badpassword - name: test fakelocal command: ls ignore_unreachable: True ignore_errors: True remote_user: "{{ login }}" vars: ansible_password: "{{ mypass }}" ansible_connection: fakelocal register: badlogin - name: ensure we skipped do to unreachable and not templating error assert: that: - badlogin is unreachable - name: delegate but try to use inventory_hostname data directly command: ls delegate_to: testhost5 ignore_unreachable: True ignore_errors: True remote_user: "{{ login }}" vars: ansible_password: "{{ mypass }}" register: badlogin - name: ensure we skipped do to unreachable and not templating error assert: that: - badlogin is not unreachable - badlogin is failed - "'undefined' in badlogin['msg']" - name: delegate ls to testhost5 as it uses ssh while testhost is local, but use vars from testhost command: ls remote_user: "{{ hostvars[inventory_hostname]['login'] }}" delegate_to: testhost5 ignore_unreachable: True ignore_errors: True vars: ansible_password: "{{ hostvars[inventory_hostname]['mypass'] }}" register: badlogin - name: ensure we skipped do to unreachable and not templating error assert: that: - badlogin is unreachable - badlogin is not failed - "'undefined' not in badlogin['msg']"