Ansible makes deployments convenient and consistent
February 06, 2019

Ansible makes deployments convenient and consistent

John Grosjean | TrustRadius Reviewer
Score 8 out of 10
Vetted Review
Verified User
Review Source

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.
Out of the box, Ansible can be slow over a bad connection, as it's establishing an SSH connection to the target server for each little task. There are some adjustments you can make to the defaults that greatly improve performance. And if you run Ansible on the same network as the target (i.e. by using a jump box or Jenkins server), then it can be crazy fast. I'd give it a 10 for speed except that it does require these adjustments first.
Can be buggy at times, but the engine is pretty basic, so it's usually fairly straight forward to integrate. We have it integrated with Jenkins and CircleCI without any issues.
I would recommend Ansible to anyone, but I recognize it might not fit everyone's needs. I'm not as familiar with Chef, Puppet, or Salt, but they each have their strengths. For us, we needed to be able to manage a new server the moment it was created, so agent-based solutions were out. For our use, Ansible does everything we've asked it to.