When I first came across Ansible, I was sceptical. Do I need to retool at this stage? What were the benefits? Is this new-fangled?
All those concerns went into the wastebin, and I'm happy to report that I've been using Ansible for some time now and probably wouldn't switch back.
It's not that there is anything deficient about Chef; in fact, I still think it is excellent, but for ease of use and peace of mind, Ansible is now my go-to server provisioning framework - I even use it to install Minecraft on my son's Raspberry Pi!
Here are some of the reasons why I'd encourage any Devop to try Ansible:
1) Ansible is agentless
This means server nodes don't need any software installed to be managed; they can be bare server nodes. On the other hand, Chef uses a server-based agent that runs on each server node, which must have access to the server provisioning server. This means that, unlike Ansible, Chef server nodes cannot be installed on "fresh" server nodes - they must be pre-configured with the Chef server software.
Ansible can be run remotely on a server provisioning server or locally on the server nodes. This makes it very versatile and easy to use.
2) Ansible configuration uses YAML
This makes them more accessible than Chef to read and edit for server provisioning purposes.
3) Ansible playbooks run in parallel
This is a great time-saver when provisioning multiple server nodes. Chef recipes can only be run sequentially.
4) Ansible is platform agnostic
It can provision server nodes on Linux, Mac or Windows operating systems. Chef is only really suitable for provisioning Linux server nodes.
5) Ansible has a large and active user base
This means that a lot of help and support is available online if needed. Chef has a smaller user base, which can make finding help more difficult.
6) Ansible is open source and free to use
Chef is not open source, making it complicated for server provisioning.