By default, Ansible runs the same task in 5 hosts in parallel. This configuration can be changed by using “forks” parameter definition in the ansible.cfg file and/or by informing it in the command line(E.g ansible-playbook my.yml –forks=10). See more about it here.
The async attribute can define how long should waiting for the task be completed and the poll defines the period that should wait for try to get the result. The default poll value is 10 seconds. Following an example.
- name: Example of async and poll
hosts: all
tasks:
- name: Run scripts
command: "/tmp/{{ item }}.sh"
async: 100
poll: 25
with_items:
- fill_database
- create_users
register: result
See more about it in the here. To know more about how to check the result see this part of the Ansible docs.
The following example shows that usage of wait_for and retries.
- name: Checking that the machine is started
wait_for: # The task will waiting for the host be started
host: servera.example.com
state: started
delay: 10
timeout: 60
port: 22
delegate_to: serverb.example.com
retries: 5 # number of times that this check will be performed
To know how to make the tasks more performative see this doc.