Puppet, Chef, and Ansible Explained

SDN networks use a controller software or device to manage network devices. The controller allows administrators to manage all network devices from a central location.

Administrators use various applications to create configurations for network devices on SDN controllers. These applications are called configuration management systems. Configuration management systems automate the configuration changes to the network devices. They use scripts created by administrators to apply configuration changes to multiple devices at once.

After creating a script, administrators use the GUI of the configuration management system to schedule a task that runs the script on the devices. There are many configuration management systems available in the market. Puppet, Chef, and Ansible are the most popular and widely used configuration management systems.

Puppet

It uses a master/agent topology. The controller acts as the master. The agent is a program you install on all network devices you want to manage. It uses a pull model. The agent checks the controller at periodic intervals to figure out the updates. If it finds any update, it pulls the script from the master and runs it on the device. The script file is called the manifest file. It uses Ruby as the scripting language. It uses TCP port 8140 to communicate with the master.

Chef

Chef is similar to Puppet. It also uses a master/agent topology. The controller acts as the master. The agent is a program you install on all network devices you want to manage. It also uses a pull model. The agent checks the controller at periodic intervals to figure out the updates. If it finds any update, it pulls the script from the master and runs it on the device. The script file is called the cookbook file. It uses Ruby as the scripting language. It uses TCP port 10002 to communicate with the master.

Ansible

Ansible is different from Puppet and Chef. It is an agentless program. You do not need to install an agent on the network devices. It uses a push model. In this model, the master (the controller) pushes the configuration change to the device.

It is a Python tool. It uses YAML language to create a playbook. A playbook is the script file. It contains the instructions that need to be executed on the device after it is pushed to the device by the master. It uses SSH to communicate with the device and apply the configuration, so SSH needs to be configured on the devices you want to manage.

Differences between Puppet, Chef, and Ansible

The following table compares Puppet, Chef, and Ansible and lists their differences.

Criteria Ansible Puppet Chef
Script filePlaybook Manifest cookbook
Protocol SSH, NETCONF HTTP (REST) HTTP (REST)
Configuration Agentless Agent Agent
Method Push Pull Pull

ComputerNetworkingNotes CCNA Study Guide Puppet, Chef, and Ansible Explained