Ansible seems to be a configuration management system that’s lighter than puppet or salt. I had a student talking about it in my class tonight. BSD users Hubert Feyrer and Michael W. Lucas have both posted about it recently. Anyone want to repeat their experiences?
3 Replies to “How about Ansible?”
Comments are closed.
Its nice if you have a *very* homogeneous infrastructure. So like all Xen VPS’s or something, if you have varying hardware in the same ‘cluster’ it starts to become hairy. If you want to manage the WHOLE machines configuration, you will spend a lot of time writing bootstrap playbooks.
Its also very handy if you want to run commands on a lot of machines but using cluster-ssh or something is just a little too raw.
Pretty much what Dean said, though when I have spare time I plan to tackle using Ansible’s support for shared tasks and variables to manage both our SuSE and CentOS servers from the same playbooks.
That being said, having almost no client-side footprint is absolutely brilliant.
I haven’t had any problems operating on diverse sets of hardware at all.
Ansible uses ohai and facter to get a list of system facts specific to each host and supplements it with some of it’s own information- I’ve used those facts to do things like tailor my playbooks to install either from deb, from rpm or from source and to add additional configuration stanzas to the service being installed depending on any given host’s ansible_os_family, for instance. This is flexibility that allows a single playbook to operate regardless of what hardware it sees.
As for managing complex hardware, Ansible has a very robust inventory management system: hosts are placed into groups, and groups are allowed to define or override existing variables within the scope of the group. Playbooks can be aggregated by other playbooks, and when this happens each playbook only runs for the groups it has been directed to run on- in this way, you can run a playbook which will do a whole bunch of different configuration tasks in one swoop for all the various node-types you might have in a cluster- some are Zookeeper, some are Nginx, some are application servers, with there being no difficulty with half the Zookeeper nodes being one OS and the other half being a different OS.
Ansible is a DSL for JSON powered SSH. I love it, couldn’t be happier, at least since set_fact has been introduced, permitting some sane JSON modification while that DSL runs. http://ansible.cc/docs/modules.html#set-fact