Lynn
Lynn

Reputation: 601

Ansible - How to sequentially execute playbook for each host

I am using ansible to script a deployment for an API. I would like this to work sequentially through each host in my inventory file so that I can fully deploy to one machine at a time.

With the out box behaviour, each task in my playbook is executed for each host in the inventory file before moving on to the next task.

How can I change this behaviour to execute all tasks for a host before starting on the next host? Ideally I would like to only have one playbook.

Thanks

Upvotes: 59

Views: 81754

Answers (3)

ProfHase85
ProfHase85

Reputation: 12173

Have a closer look at Rolling Updates:

What you are searching for is

- hosts: webservers
  serial: 1
  tasks:
    - name: ...

Upvotes: 123

MUY Belgium
MUY Belgium

Reputation: 2452

Strategy enable to parallel tasks in a per host basis. See https://docs.ansible.com/ansible/latest/user_guide/playbooks_strategies.html

There are 3 strategies: linear (the default), serial and free (quickest)

- hosts: all
  strategy: free
  tasks:
    ...

Upvotes: 0

Jobin James
Jobin James

Reputation: 1030

Using the --forks=1 specify number of parallel processes to use (default=5)

Upvotes: 2

Related Questions