Ansible 0.6 Released
You go there once, You’ll be there twice
Ansible 0.6, codenamed “Cabo”, is a big release, as indicated by an incredible changelog of features. I think what is most important here, though, is that ansible remains small and tight, and true to it’s original goals — but is seeing some incredibly uptake and proving it can hold it’s own and then some. 0.6 is very much about refinements, and we’ve collected much more than I expected for what should have been a “summer vacation” in open source land. All of these new features reflected on the documentation site.
New playbook language features
Being able to add tags to individual tasks and import playbooks from other playbooks offers up a lot of control, and much needed flexibility. Now it’s trivially easy to decide what you want to run on what machines by grouping all your webservers into one playbook, your database servers into another, and having a common playbook named “site.yml” that includes both. Just want to run NTP configuration on both of them? Easy, run “site.yml” with —tags ntp. The way you structure things and order them are up to you, but I’m really excited about using these two at the same time. In addition to this, new ways of storing per host and per group variables outside of your playbooks and inventory files allow additional ways to externalize your data.
Easier and faster modules
We’ve also made it tons easier to write modules, allowing Python modules the advantage of using a common module library, which is cleverly inserted into the module at runtime, along with it’s arguments. While this was originally done for ease of development reasons, it has an even bigger advantage — it makes Ansible about twice as fast as it was before. It flies. No waiting 30 minutes for your system to be configured here!
New core modules — databases, get_url, mount
We have a surplus of great new module additions in this release — including modules for PostgreSQL and MySQL, as well as a mount module for actively mounting resources and configuring fstab. In addition, both the yum and apt modules have been enhanced, so if using “with_items” to install lists of packages, they do this in exactly one “command hop”. Most configuration management packages don’t do this, so they can be slow when dealing with a lot of packages. Not Ansible. There’s more modules than that too — we also now have a get_url module that can download files from http://, https://, and ftp:// sources directly — giving you more options in addition to the git module, and copy/template for transferring files.
There’s a new example inventory script for keeping your inventory in EC2, using EC2 tags and all of that. Sharp. I expect to see a lot of use of that from folks using Amazon infrastructure.
Last but not least in terms of features, there are numerous fixes and refinements — and a colorized Ansible playbook. Ubuntu users are also no longer deprived of cowsay upgrades.
We also can’t end this announcement without talking about how awesome our community is. This release was brought to you by almost 50 people. This is an all time high, and we have more contributors per month right now than many of the competing management tools (you know, those two big ones). We also broke 500 followers on github this month.
Thanks to everyone who helped provide ideas, testing, and helped spread the word, but thanks in particular to:
Stephen Fromm (29), Daniel Hokka Zakrisson (20), Seth Vidal (17), Jeroen Hoekx (16), Dave Hatton (15), Mark Theunissen (11), Peter Sankauskas (9), Lorin Hochstein (9), John Kleint (9), Nikhil Singh (8), Derek Carter (8), Brad Olson (8), Jan-Piet Mens (6), Will Thames (5), Petros Moisiadis (5), Matthew Williams (5), Jim Richardson (5), Jeremy Smitherman (5), Ingo Gottwald (5), Fred Alger (5), Timothy Appnel (4), Ludovic Claude (4), Dag WieÃ«rs (4), Cosmin LuÈ›Äƒ (4), Christoph Seitz (4), willthames (3), u348095 (3), bradobro (3), Nathan A. Feger (3), Daniel NÃ©ri (3), Brendan Beveridge (3), felix (2), cocoy (2), alex (2), Wes Johnson (2), Rafal Lewczuk (2), Matt Goodall (2), Dag Wieers (2), Chin Fang (2), Rodney Quillo (1), Michel Blanc (1), K. Preyk (1), Joshua Tacoma (1), Jonte Norman (1), Jonathan Palley (1), Dane Summers (1), Ahmad Khayyat (1), Adam Denenberg (1)
Ansible 0.6 was codenamed Cabo because it was going to be a nice summer vacation release, instead, everyone worked their butt off and it’s one of our most meaningful releases to date. We’ve kept APIs very compatible, we’ve augmented areas that needed improvement, and we’ve very well tuned Ansible into a faster machine. In hoping for more of the same, 0.7 will be codenamed Panama.
Model citizen, zero discipline.