I'm kind of with BitDivine. I've been using Ansible "in anger" (at times literally!) on a real world environment for a few months now. I also try to make my playbooks a statement of desired state. Most of the time that's easy to achieve. It gets frustrating when it's not so easy to achieve, but each of those challenges has pushed me up the learning curve of the language, so it's all good. As Michael says in the OP, it's easy (and good) to write scripts in plain English, and once written they stay written and useful, you can forget about them and still rely on them.
I also try to write idempotent scripts. Again, this is easy often enough that in the cases when it isn't so easy, it gets frustrating. You can see from the varying functioning and usage of the various modules that idempotence is probably one of the "computer-sciencey" "memes" that the OP disdains. It's a general principle for modules, maybe, but it's far from rigidly enforced or universal or uniform. Or in some cases, it's so taken for granted that you can't see from the documentation how idempotence is going to work, but then magically it "just does". I'm learning that with Ansible sometimes you just have to close your eyes and *believe*. :-) "Install then (check or install)" is a good pattern. Running the script until it goes green is a much easier meta-pattern (a behavior pattern rather than a programming pattern). It's a great habit to get into and on our site we are doing it all the time. (Along with, while testing the playbook, actually checking the system *hasn't* changed when the playbook responds green!) Again, the fact that this "just works" most of the time makes it doubly frustrating when, for example, tests that perform no actual system change report Changed by default, or, worse, tests like (the touch module) actually do change the system when executing what should be a read only test. So I can see the merits of all the approaches mentioned here. :-) -- You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/1e79d7b3-8485-40e0-9e0a-8f71d9cac3bc%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
