Ansible execution is versatile enough that we can modify how and when tasks are executed. The settings can be made globally or at the play level. The number of parallel threads is determined by fork. The default is 5
| Execution Strategies | Explanation | Example |
| linear | This is the default. The task is executed simultaneously against all the hosts using the forks, and then the next series of hosts until the batch is done before going to the next task | At ansible.cfg …. [defaults] strategy = linear fork=10 Or at Play Level – name: web servers hosts: webservers strategy: linear |
| debug | Task execution is like the linear strategy, but controlled by an interactive debug session | At ansible.cfg …. [defaults] strategy = debug fork=10 Or at Play Level – name: web servers hosts: webservers strategy: debug |
| free | Ansible will not wait for other hosts to finish before queueing for more tasks on other hosts. It prevents blocking new tasks for hosts that have already completed. | At ansible.cfg …. [defaults] strategy = free fork=10 Or at Play Level – name: web servers hosts: webservers strategy: free |
Rolling Updates Strategies.
Fork is based on the hardware limitation. The more powerful your servers are in terms of processing resources, the higher the fork parameters can be set. But there are occasions where the number of parallel executions is determined by software/application restrictions. For example, if you have a rolling updates for your webserver, you can use the “serial” parameters to instruct how many hosts should be updated at a time. In such a way, you can avoid simultaneously avoid simultaneous to avoid downtime.
| Execution Strategies | Explanation | Example |
| serial | Execute all the hosts in the same batch before moving to the next batch You can use an absolute number or a percentage | – name: Serial Example hosts: webservers serial: “50%” tasks: – name: First tasks |
References:
- Red Hat Certified Engineer (RHCE) Ansible Automation Study Guide (Alexc Soto Bueno)

