It Takes A Village To Add 0.1 To A Version String
It's time for a new release! Lots of work goes into IT automation solutions, and before we share specifics of new features -- I want to highlight everyone in the community that made this possible. Several months ago work started on the Ansible 1.3 release -- it now contains contributions from over 169 different people (per "gitstats")! This also doesn't even count thousands of users that have shaped our decisions and been a part of things via mailing lists, IRC, user groups, and twitter.
It's been a really busy and super fun time at AnsibleWorks-- we've hired two new engineers -- James Cammarata of Cobbler fame is helping out tremendously with community developments, while James Laska, a QA automation legend previously hailing from Red Hat and the Fedora project is going to add lots of automation power to keep Ansible and our other products running strong. Ansible has also reached over 2,850 followers on github, and we've had the opportunity to meet at increasing number of you, which has been great. IRC has been very busy too, and I think we've all learned a little something from everyone. Once again, thanks for making this an amazing experience. I'd also like to thank Chris Church and Chris Houseknect for some incredibly great work on our AWX product, as well as our entire team here for input, community help, and lots of support.
I'd also be remiss without remembering Seth Vidal, one of our top contributors and also a friend, who we lost this July. Not only did Seth write the yum module and contribute many early patches, the local facts feature in this release is his work, as are some numerous speedups to the yum module in this release I think you will appreciate. Seth was a frequent sounding board and a lot of the reason I kept working on Ansible early on was because he found promise in it. Func, an early project we built together, was also a major inspiration to Ansible.
At risk of this sounding somewhat like an Oscar speech, also thank you to all the community members that have helped each other by answering questions and sharing tips, or spreading Ansible -- and the hundreds of users and customers that have shared feedback on our previous AWX release. We greatly appreciate it! I'd like to also specifically thank Brian Coca, for being amazing with answering user questions on IRC, and also leading the rankings with an incredible number of great patches this time (24!).
Ansible 1.3 adds Performance, Improved Role Features, and More
Today, we're releasing Ansible 1.3, and it will be hitting distribution mirrors shortly. (Can't wait? Hit http://ansibleworks.com/releases/ for the tarball or install via "sudo pip install ansible"). Ansible 1.3 brings many continued refinements to the Ansible automation engine that I think everyone's going to be really excited about.
Accelerated mode brings connection speeds up to ten times faster than regular paramiko-based SSH and is based on the previous "fireball" mode in Ansible. Accelerated mode now no longer requires 0mq, so it's even easier to set up, and even more reliable. We'll also be releasing a whitepaper soon about managing large-scale infrastructure with Ansible, so stay tuned!
Another major Ansible 1.3 feature are role dependencies and role defaults. These new features allow you to have even more flexibility when organizing and reusing your Ansible content. They have been much requested and will form a lynch-pin of some future things we are going to be doing with roles in the next release. (Spoilers!)
But wait, there's more? Yeah, there's more! Local facts allow user defined sources of truth to be cleanly used as variables within playbooks. For those that want to have 100% green playbook runs, changed_when is available and helps you with some great tools that help you do that. For those who like to use --check dry run modes, the "always_run" flag can now be used to ensure commands can be forceably executed even in check mode.
A large theme of 1.3, and each release, is removing user frustrations. Ansible will now smartly complain when you typo Jinja2 variables. This is something we should have always enabled, I think, and it's now the default. If you don't like this behavior, you can turn off "error_on_undefined_variables" in ansible.cfg.
On top of that, we've once again added over 20 new modules including core support for Arista networking devices, cloud provisioning for Linode and Digital Ocean, modules to assist with MySQL replication, and a very cool "stat" module to check for remote file existence and other properties. An ec2_ami module can help with producing images from cloud images you've created with Ansible.
For the full breakdown of everything that has been added, see our changelog on github.
AWX 1.3 adds Improved Inventory, LDAP support, SCM integration, and a new CLI
AWX is our management solution that sits on top of Ansible to add a lot of compelling enterprise and team-related features. Our goal for AWX is really to make AWX into THE ideal tool for team-based automation work, so if you ever have any ideas or feedback for awx, drop me a line at email@example.com. We want to hear from you and build the tools that you've always wanted.
This release adds some pretty exciting things. This particular AWX release was released only a little over a month since the last AWX release, so in the future we're going to have these sync'ed up with Ansible releases. Note that AWX 1.3 doesn't require you immediately adopt Ansible 1.3 if you don't want to, but also is happy to work with 1.3.
First, we've reworked the inventory UI to make it even easier to access and manage your hosts and groups of hosts in Ansible. It's super easy to add hosts to new groups by just dragging them around, and groups can also be assigned using Gmail-like tags. Further UI refinements include being able to quickly jump to the history of each host from the inventory page.
SCM integration in AWX is also a very neat feature. To start using a new automation project in AWX, previously you had to clone it to the filesystem -- however, as we know, lots of DevOps projects are managed out of source control. AWX makes this easy by not only allowing you to do a web-based checkout to start a project, but it can also update it from the web interface. Even more interesting, it can optionally choose to update that project every time a job runs -- which makes it perfect for integrating with Jenkins. Have Jenkins build your software, trigger a job run with the AWX-cli (also recently created!) and then the latest version of your IT automation code can be fired all within a self contained process.
We've also added what I think is one of the coolest Active Directory and LDAP integrations (yes, I just used cool and Active Directory in the same sentence) possible. Configurable in AWX's configuration file, the AD/LDAP integration allows you to get away from manually having to add users and put them into organizations. Groups in LDAP or AD can be mapped to AWX organizations, and can even be automatically set ad administrators when they log in, depending on group membership. This saves a lot of admin hassle.
A lot of the built-in API help in the "Browseable API" has also been upgraded in this release -- I still believe we have one of the most usable management APIs in the industry and this release makes it even better.
We're at a really fun spot right now with AnsibleWorks, and our goal is to keep everything going just like we've been doing, and continue to make all kinds of IT things simpler and easier to automate. Lots of the community roadmap, as usual -- comes from you. We also have some neat surprises coming up our sleeves on the AWX front. If you have any ideas for features (or even questions), drop us a line at firstname.lastname@example.org. And if you would like to try out AWX, you can find more about it, and how to download/install it at http://www.ansibleworks.com/ansibleworks-awx/.
Thank you and once again, Happy Ansibilizing!