Hi, I’m new to Ansible and I’m evaluating it to see if it’ll be a good replacement for my current Fabric/Fabtools-based deployment tool.
My application is fairly simple, just a simple LAMP stack, and therefore my current deployment tool is also not too complicated. I can deploy service configurations, install system and python packages, upload my application code and restart servers in under a minute. And all this organized in a single fabfile.py file that I run like fab staging deploy
.
However, reading over the intro docs for Ansible, I’m a little overwhelmed by the immense complexity of the system compared to what I’m currently using.
For example, in my toolkit, to ping a server I would run:
fab role ping
but from one of the first examples in the Ansible intro docs, it would be:
ansible all --inventory-file=inventory.ini --module-name ping -u username --private-key=~/path/to/private_key
Are all the commands that long or is there some way to more compactly represent them like in Fabric?
The other aspect of Ansible that makes me nervous is its slow performance. This often cited blog post (http://ryandlane.com/blog/2014/08/04/moving-away-from-puppet-saltstack-or-ansible/) mentions that for a “no change run”, where Ansible literally has to make no changes, it takes 2 minutes to complete. My current tool can do a full code deployment in 30 seconds, so I’m perplexed why Ansible would take that long. I think Ansible might be scanning every file previously deployed and checking it for changes, something my tool doesn’t need to do. Is it possible to disable this feature and make Ansible only push changes without constantly re-checking the server?
What attracted me to Ansible was the fact it’s written in Python, its agent-less SSH-only design and large community. However, it seems to suffer the same problems as Chef and Puppet in that it feels overly complicated for small projects. Am I off base? Should I invest in Ansible, or would it be better to stick to Fabric/Fabtools for a small project?