Ansible Execution Strategies


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 StrategiesExplanationExample
linearThis 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
debugTask execution is like the linear strategy, but controlled by an interactive debug sessionAt ansible.cfg
….
[defaults]
strategy = debug
fork=10

Or at Play Level
– name: web servers
hosts: webservers
strategy: debug
freeAnsible 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 StrategiesExplanationExample
serialExecute 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)

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.