Serial across groups

Hi,

I’m working on a deployment playbook at the moment, for an application made of multiple components running across multiple groups of servers. Most of the servers are load-balanced, so we would like to do rolling upgrades to these servers.

At present, we’ve set serial to 1. This means we remove each server from the load balancer, upgrade it, and put it back in to the load balancer. What we’d like to do is increase the number of servers operated on to one per group, as this would allow us to perform rolling upgrades when there are dependencies between the applications.

For example:

Given groups
[web] => “web01”, “web02”
[db] => “db01”, “db02”

We’d like to run:

  • Remove “web01” and “db01” from load balancer
  • Upgrade “web01” and “db01”
  • Restore “web01” and “db01” to load balancer
  • Remove “web02” and “db02” from load balancer
  • Upgrade “web02” and “db02”
  • Restore “web02” and “db02” to load balancer

Is there something that we can do to permit this in Ansible?

Many thanks,

David Edmonds

Not tried myself but I think you can set serial to a percentage - there are a couple of examples here:
https://blog.serverdensity.com/what-ive-learnt-from-using-ansible-exclusively-for-2-years/

Hope this helps,

Jon

try:

hosts: *01:*02:*03
serial:2

Ah, nice! That certainly does the trick.

Thanks for your help.

David