Puppet is the oldest and most mature Ruby-based Configuration Management tool. Puppet has only some free features, while the prominent features are available in the paid version only. Organizations needing more customization will probably need to upgrade to the paid version, to use Puppet for CM.
Chef is also written in Ruby includes free features, plus it can be upgraded from open source to enterprise-level if necessary. On top of that, it’s a very flexible product.
Ansible is a very secure option since it uses Secure Shell. It’s a simple tool to use and it does offer a number of other services in addition to configuration management. It’s very easy to learn, so it’s perfect for those who don’t have a dedicated IT staff but still need a configuration management tool. Ansible is the only CM tool which is agentless and does not need any additional software installed on remote machines, which makes it the most favoured choice.
SaltStack is python based open source CM tool made for larger businesses, but its learning curve is fairly low.