anchor.diff:  Ansible is a nice tool to deploy distributed systems like Elasticsearch, Kafka, Cassandra and the like.
   These systems are built with high availability in mind and can tolerate partial failures.
   However, upgrading these softwares, or updating their configuration, requires restarting each member of the cluster.
  -To avoid unavailability during deployment, a rolling restart is required.
  +Care must be taken when deploying changes to avoid complete unavailability.
   
   The aim of this article is to describe a pattern I discovered
  -trying to improve deployment speed of Ansible playbooks
  +trying to improve the deployment speed of Ansible playbooks
   and yet being able to guarantee availability during this upgrade process.
  +This is the story of two contradicting goals.
   To improve deployment speed, you need to deploy all hosts in parallel.
   To guarantee availability, you can't stop all hosts at the same time: you must deploy each host one after the other.
   
   == The problem
   
  -Let's take the Elasticsearch example and explain Ansible basics.
  +Let's take the Elasticsearch example to explain Ansible basics.
   
   The tasks required to deploy Elasticsearch on each host of the cluster are gathered in an `elasticsearch` role.
  -In short, the role is a recipe to install and update an Elasticsearch on a given machine.
  +In short, the `elasticsearch` role is the recipe to install and update an Elasticsearch on a given machine.
   Once declared, this role is applied to all hosts belonging to the `elasticsearch` group in the Ansible playbook.
   
   .playbook.yml
  
positive.code:   when: ...
  ----
  
  Then on lucky days, you can skip the expensive `stop_start` step and have a quick and fully parallel deployment.
  
  Other days, when upgrading nodes version, or changing configuration which can not be hot reloaded, running the Ansible playbook will be slower.
  Node specific configuration (`elasticsearch.yml`, Kafka `server.properties`...) is usually part of the problem as it requires node restart.
  
  .playbook.yml
  
negative.code: ----
  
  But deploying every host, one after the other (in serial), takes a very long time and makes deployment endless.
  Bigger clusters mean longer deployment times.
  
  == Refactoring the role
  
  