In order to configure that the task should be executed in another host use the attribute delegate_to and to define that the should be played locally use the attribute local_action. Following some examples.
---
- name: Example with delegate_to
hosts: databases
tasks:
- name: Check process
command: ps
delegate_to: webserver.example.com
register: result
- name: Output ps command
debug:
msg: "{{ result.stdout }}"
NOTE: If the attribute delegate_facts as True combined with the delegate_to will tell for the ansible looking for the facts, the system values, from the hosted mapped in the delagate_to instead of the hosts of the playbook. See more about Ansible facts here.
The same above action could be done locally as follows.
- name: Check process
command: ps
delegate_to: localhost
register: result
It could be configured by local_action.
- name: Check process
local_action: command ps
register: result
Following some references in the Ansible documentation related to this subject.