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 filePlaybook Manifest cookbook
Protocol SSH, NETCONF HTTP (REST) HTTP (REST)
Configuration Agentless Agent Agent
Method Push Pull Pull

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.

ComputerNetworkingNotes CCNA Study Guide Puppet, Chef, and Ansible Explained

We do not accept any kind of Guest Post. Except Guest post submission, for any other query (such as adverting opportunity, product advertisement, feedback, suggestion, error reporting and technical issue) or simply just say to hello mail us ComputerNetworkingNotes@gmail.com