anchor.diff:  :published_at: 2017-07-15
   
   Ansible is a nice tool to deploy distributed systems like Elasticsearch, Kafka, Cassandra and the like.
  -These systems are built to avoid downtime and allow partial failures.
  -But upgrading these software, or updating their configuration, requires restarting each member of the cluster.
  +These systems are built with high availability in mind,
  +they can tolerate partial failures.
  +Upgrading these software, or updating their configuration, requires restarting each member of the cluster.
   
   The aim of this article is to describe a pattern I discovered
   trying to improve deployment speed of Ansible playbooks
  
positive.code: 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 required node restart.
  
  .playbook.yml
  [source,yaml]
  
negative.code:     - role: elasticsearch
  ----
  
  At some point, the `elasticsearch` role will probably contain something to stop Elasticsearch in order for changes to be reloaded:
  
  .roles/elasticsearch/tasks/main.yml
  [source,yaml]
  