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 updates, 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 updates, 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 to create a playbook. A playbook is the script file. It contains the instructions that need to be executed on the device after being pushed 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 file | Playbook | Manifest | cookbook |
| Protocol | SSH, NETCONF | HTTP (REST) | HTTP (REST) |
| Configuration | Agentless | Agent | Agent |
| Method | Push | Pull | Pull |
This tutorial is part of the tutorial "Network Automation and Programmability.". Other parts of this tutorial are as follows:
Chapter 01 Explain how automation impacts network management
Chapter 02 Compare traditional networks with controller-based networking
Chapter 03 Describe controller-based and software-defined architectures (overlay, underlay, and fabric)
Chapter 04 Separation of control plane and data plane
Chapter 05 North-bound and south-bound APIs
Chapter 06 Compare traditional campus device management with Cisco DNA Center-enabled device management
Chapter 07 Describe characteristics of REST-based APIs (CRUD, HTTP verbs, and data encoding)
Chapter 08 Recognize the capabilities of configuration management mechanisms Puppet, Chef, and Ansible
Chapter 09 Interpret JSON encoded data
Conclusion
Puppet, Chef, and Ansible are three prominent configuration management systems that play a crucial role in automating the management of network devices within Software-Defined Networking (SDN). Puppet and Chef operate on a master/agent topology, utilizing a pull model where agents on the network devices periodically check for updates from the master. Both use Ruby for scripting, but they differ in their communication ports and the terminology of their script files (manifest for Puppet and cookbook for Chef).
In contrast, Ansible adopts an agentless and push model approach, simplifying deployment by eliminating the need to install agents on devices. It uses Python and YAML for its playbooks. It communicates over SSH. All three tools provide essential functionalities to streamline network management and ensure consistency across configurations. The tool you use depends on your specific needs, organizational preferences, and the existing infrastructure.
Author Laxmi Goswami Updated on 2025-10-15