Overall Satisfaction with Ansible
We use Ansible every day in our CI/CD pipeline. With everything in AWS, and constantly setting up new instances, other agent-based products were out of the question. And since Ansible has added so much AWS management to it's latest versions, we can manage infrastructure just as easily as we deploy our application. There is no way we could keep up with the developers without Ansible.
- Agentless. For our implementation, this is the single biggest factor. If we have to touch the machine and install an agent before we can start managing it, that's already too much effort and slows us down.
- Re-entrant. This is not unique to Ansible, but certainly a huge improvement over custom scripts and such. Because it's such a huge effort to make scripts re-entrant, most of our scripts did not allow an elegant way to recover on failure. Manually cleaning up the half-attempt and re-trying is still too cumbersome, and being able to just re-run Ansible is a great improvement!
- Infrastructure as code. This is new to Ansible, and there are still a few minor bugs with their AWS modules, but it's been a huge help being able to define our infrastructure in an Ansible playbook, commit it to source control, and use one tool for all our DevOps tasks.
- Syntax.
- Lacks descriptive error messages. The most basic errors are easy enough, but the more edge case errors can send you on a wild goose chase real quick.
- Open Source. In many ways, this is a good thing, but it also means support is limited to community forums and such. So many people use it that it hasn't been an issue for us, but it means researching your own answer instead of just calling support.
- Our deployments went to a CI/CD model a while back, and there's no way we could keep up if it wasn't for Ansible. It was convenient when we started using it, but Ansible is now essential for our small DevOps team to keep up with the rest of the business. We keep automating more and more with Ansible, just so that we can stay sane.
We looked at Puppet and Chef, but Ansible won because it's agentless. You trade some features, for example, someone could manually make a change on the server, and Ansible wouldn't know. But that's not a problem for us, and we needed something that we could run immediately on a new server.