Example 5
hosts.yml
centos:
hosts:
provisioner:
ansible_connection: local
centos1:
ansible_host: '192.168.77.22'
ubuntu:
hosts:
ubuntu1:
ansible_host: '192.168.77.23'
playbook.yml
- hosts: all
gather_facts: false
serial: 2
tasks:
- name: 1st sleep
command: sleep 1
- name: 2nd sleep
command: sleep 1
- name: 3rd sleep
command: sleep 1
- name: 4th sleep
command: sleep 1
- name: 5th sleep
command: sleep 1
Tip
Ansible's default execution strategy is linear, where each task needs to complete on all remotes before proceeding to the next one. You can batch tasks using the serial directive in order to run them on a subset of your remote hosts.
Execute the following command
ansible-playbook playbook.yml
Bonus round
Substitute the serial: 2 directive from the playbook with strategy: free and measure the time performance. The free strategy allows all hosts to run towards the end of the playbook as fast as they can.