<!--- Verify first that your issue is not already reported on GitHub -->
<!--- Also test if the latest release and devel branch are affected too -->
<!--- Complete *all* sections as described, this form is processed automatically -->

##### SUMMARY
hostvars not available to delegate_to tasks

Related to #70320

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
$ ansible --version
ansible 2.9.10
  config file = /Users/jeanfabrice/test/ansible.cfg
  configured module search path = ['/Users/jeanfabrice/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /Users/jeanfabrice/.virtualenvs/test/lib/python3.7/site-packages/ansible
  executable location = /Users/jeanfabrice/.virtualenvs/test/bin/ansible
  python version = 3.7.7 (default, Mar 14 2020, 02:39:38) [Clang 11.0.0 (clang-1100.0.33.17)]
```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
MacOS, Linux

##### STEPS TO REPRODUCE
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->

<!--- Paste example playbooks or commands between quotes below -->
```yaml
---
- hosts: all

  tasks:
    - name: Set login
      set_fact:
        login: user

    - name: Set password
      set_fact:
        password: password

    - name: delegate ls to server2
      delegate_to: server2
      command: ls
      vars:
        ansible_user: "{{ hostvars[inventory_hostname]['login'] }}"
        ansible_password: "{{ hostvars[inventory_hostname]['password'] }}"
```

<!--- HINT: You can paste gist.github.com links for larger files -->

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->
hostvars to be defined in delegate_to tasks

##### ACTUAL RESULTS
<!--- Describe what actually happened. If possible run with extra verbosity (-vvvv) -->

<!--- Paste verbatim command output between quotes -->
```paste below
$ ./bin/ansible-playbook test.yml -i inventory  -l server1

PLAY [all] *****************************************************************************************************************************************************************************

TASK [Set login] ***********************************************************************************************************************************************************************
ok: [server1]

TASK [Set password] ********************************************************************************************************************************************************************
ok: [server1]

TASK [delegate ls to server2] **********************************************************************************************************************************************************
fatal: [server1]: FAILED! => {"msg": "'hostvars' is undefined"}

PLAY RECAP *****************************************************************************************************************************************************************************
server1                    : ok=2    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0 
```

}
                if self._connection.become:
                    clear_plugins['become'] = self._connection.become._load_name
                for plugin_type, plugin_name in iteritems(clear_plugins):
                    for var in C.config.get_plugin_vars(plugin_type, plugin_name):
                        if var in task_vars and var not in self._job_vars:
                            del task_vars[var]
        self._task.no_log = no_log
        return results
    def _execute(self, variables=None):
        '''
        The primary workhorse of the executor system, this runs the task
        on the specified host (which may be the delegated_to host) and handles
        the retry/until and block rescue/always execution
        '''
        if variables is None:
            variables = self._job_vars
        templar = Templar(loader=self._loader, shared_loader_obj=self._shared_loader_obj, variables=variables)
        context_validation_error = None
        try:
            
            
            
            self._play_context = self._play_context.set_task_and_variable_override(task=self._task, variables=variables, templar=templar)
            
            
            self._play_context.post_validate(templar=templar)
            
            
            if not self._play_context.remote_addr: