Ansible & YAML for simple humans
Before we begin: a little rant-warning is in order. I’ll be brief.
Tired of heavy provisioning tools with years of baggage?
Ansible is the simplest way to automate apps and IT infrastructure.
And it’s using YAML as configuration format!
YAML is a human friendly data serialization standard for all programming languages.
It’s basically the simplest, most human friendly thing ever!
Until you actually do some work with it. :sadface:
Just a few examples, that cost hours on the path to stable provisioning:
- Colons in strings: https://github.com/ansible/ansible/issues/2769
- YAML vs. Jinja2: https://github.com/ansible/ansible/issues/15218
- Variables behaving differently depending on scope (1.9 only):
- .. and don’t get me started on template search paths
Ansible 2.0 was just recently released and naturally broke a lot. I believe with earlier versions people used a lot of features “by accident” where documentation was not clear and it-just-worked. Some of that has been cleaned up in 2.0, but intentions of the developers are often not clear from documentation or examples (and lack thereof). Unfortunately once play-books grow bigger and roles more numerous, you’ll keep hitting your mental toes on the table legs of Ansible’s or YAML’s or Jinja2’s quirks.
I still like the concept and will keep hammering at it until it fits.