Chef Vs Puppet: Configuration Management tools

As earlier I discuss about Chef and Puppet, both are the configuration Management tools and are used deploying, configuring and managing servers. Both have the same function of Infrastructure as a code. 

Chef
Chef is basically a tool used for the configuration Management. With the help of Chef, you can get the infrastructure as a code or Network as a programmable infrastructure. Chef has a Client-Server architecture. With the help of Chef we can do infrastructure configuration, Application deployment and configuration management.

In Chef, Nodes are dynamically informed with the configurations in the Server and is called Pull Configuration which means that we don’t need to perform any command on the Chef server to drive the configuration on the nodes, nodes will spontaneously apprise themselves with the configurations existing in the Server. The Chef client pulls configuration updates from the chef server in every 30 minutes.

Puppet
Puppet is basically a tool used for the configuration Management. With the help of Puppet, you can get the infrastructure as a code or Network as a programmable infrastructure. Infrastructure as code is the requirement for usual DevOps exercises such as version control, code review, continuous integration and automated testing. These exercises get us to continuous provision of quality software that gratifies enterprise networks.

Infrastructure as Code is a method to construct infrastructure which operations teams can accomplish and provision automatically through code and thereby getting free of the requirement of physical works to achieve the same tasks. Infrastructure as Code can also be termed as programmable infrastructure.

Fig 1.1- CHEF Vs Puppet
Puppet customs a Master Slave architecture in which the Master and Slave communicate through a secure encrypted channel with the help of SSL.

Chef also uses a Master-Slave architecture, but it has an extra component called Workstation. So, all the configurations are first tested in the Workstation and then it is pushed to the Chef Server. Chef is mainly used to provision infrastructure on cloud, as it is compatible with most of the cloud platforms.

Chef uses Ruby as the configuration language, rather than a custom DSL.Chef is considered from the ground up to incorporate with other tools, or to make that integration as simple as possible. Chef is not the canonical representation of your infrastructure

Puppet uses declarative language which describes the state each resource must achieve while Chef uses imperative language which describe what state to achieve and how to achieve this.

They have the same operation of pull-based configuration management tools, Chef has a separate workstation where the code is written and then sent to the server. In case of Puppet, the code is written and stored on the server.