A criticism of
Ansible being that it's not declarative, in that, if it's used to spin up
VM's, and then need an additional one, it's not
n+1 but just 1.
Playbooks and Idempotency Idempotent is a fancy word that means that you can do something multiple times and the outcome will be the same. In Ansible terms, a playbook is considered idempotent if you can run it multiple times and after the first run the machine is in a certain state, which doesn’t change if you run the same playbook again at any point in time after that. Take the playbook that you just wrote, for example. The first time that you ran it, it evaluated your playbook and applied the necessary transformations to ensure that PHP, nginx, and MySQL were installed. You can see that in the Ansible output it says that things were changed:
Ansible: From Beginner to Pro Michael Heap Reading, Berkshire United Kingdom ISBN-13 (pbk): 978-1-4842-1660-6 DOI 10.1007/978-1-4842-1659-0 ISBN-13 (electronic): 978-1-4842-1659-0 Library of Congress Control Number: 2016952799 Copyright © 2016 by Michael Heap
my reading of the above would be that
Ansible is declaritve in that, if additional
VM's are needed, to provision then for the total. Is that a correct understanding?
the specific criticism being that:
Over time, as you apply more and more updates, each server builds up a unique history of changes. This often leads to a phenomenon known as configuration drift, where each server becomes slightly different than all the others, leading to subtle configuration bugs that are difficult to diagnose and nearly impossible to reproduce.
which seems at odds with the
Or,perhaps, they're saying, that you might run a playbook. Then additional changes are needed. So, those changes are incorporated, and this constitutes the above "configuration drift"?