Difference Between Ansible,Puppet and Chef

Reading Time: 3 minutes

What is Configuration Management ?

Configuration management is a process for maintaining computer systems, servers, and software in a desired, consistent state. It is a way to make sure that a system performs as it’s expected to as changes are made over time. Generally,They are the best available tools to automate infrastructure configuration or management. 


Ansible is an open-source automation tool, or platform, used for IT tasks such as configuration management, application deployment, intraservice orchestration, and provisioning. Using SSH, with no agents to install on remote systems. In ansible SSH connection is necessary when running in push mode (which is the default), but pull mode is available .


Puppet is a tool that helps you manage and automate the configuration of servers.When you use Puppet, you define the desired state of the systems in your infrastructure that you want to manage.The Puppet primary server is the server that stores the code that defines your desired state.

It uses the push model by default, and the pull model can be configured.


Chef uses “recipes” written in Ruby to keep your infrastructure running up-to-date and compliant. The recipes describe a series of resources that should be in a particular state. Chef can run in client/server mode or in a standalone configuration named chef-solo. It has good integration with the major cloud providers to automatically provision and configure new machines.

for more details about configuration management tools go through the reference section.

Let see what are difference between these Configuration Management tool.

1. Configuration language

  • Ansible platform is written on python but It supports YAML command Scripts.
  • Puppet platform is built with Ruby and it only supports Domain Specific Language (DSL) and Embedded Ruby (ERB).
  • Chef supports Ruby DSL with crucial prototype programming.

2. Architecture

  • Puppet and Chef Uses Client/Server Architecture.
  • Ansible Uses Client only Architecture.

3. Availability

  • When ansible runs it was single active node, called the Primary instance. If the primary instance goes down there is a Secondary instance to take its place.
  • Puppet It has multi-master architecture, if the active master goes down, the other master takes the active master place.
  • Chef When there is a failure on the primary server i.e. chef server, it has a backup server to take the place of the primary server.

4. Management

  • Ansible is easy to manage the configurations as it uses YAML(Yet Another Markup Language) script which closely resembles English. The server pushes configurations to all the nodes. Good for real-time application and there is immediate remote execution.
  • Puppet is  not very easy to manage the configurations as it uses its own language called Puppet DSL(Domain Specific Language). Client pulls the configurations from the Server.
  • Chef to be a programmer to manage the configurations as it offers configurations in Ruby DSL. Client pulls the configurations from the Server.

5. Price

  • The price of ansible is much lower than Puppet and Chef. You have to spend $10000/year for up to 100 nodes.
  • The price of puppet is the highest among these three tools. You have to spend $ 11200-$19900 / year for up to 100 nodes.
  • The price of chef is cheaper than Puppet but higher than ansible. $13700/year up to 100 nodes is the price.

So these are some difference between ansible ,puppet and chef.

In above image we can see which configuration management tool is widely used.


Written by 

Harshit Gupta is a Software Consultant at knoldus Inc having few year experience in DevOps . He always eager to learn new technology and helping to others .