Chef is a configuration management toolthat is being written in Ruby and Erlang. It uses Ruby to write system configuration “recipes”.
- The workstation is the location from which users interact with Chef. On the workstation users author and test cookbooks using tools such as Test Kitchen and interact with the Chef server using the knife and chef command line tools.
A node is any machine—physical, virtual, cloud, network device, etc.—that is under management by Chef. A chef-client is installed on every node that is under management by Chef. The chef-client performs all of the configuration tasks that are specified by the run-list and will pull down any required configuration data from the Chef server as it is needed during the chef-client run.
- The Chef server acts as a hub for configuration data. The Chef server stores cookbooks, the policies that are applied to nodes, and metadata that describes each registered node that is being managed by the chef-client. Nodes use the chef-client to ask the Chef server for configuration details, such as recipes, templates, and file distributions. The chef-client then does as much of the configuration work as possible on the nodes themselves (and not on the Chef server). This scalable approach distributes the configuration effort throughout the organization.
- Same tool infrastructure can be used to automate compute, storage and network
- Effective for simple and repetitive tasks such as changing passwords, changing SNMP settings, shutting down interfaces and backing up configurations
- They have REST API to integrate with customer OSS/BSS or self-service portals
Recipes and cookbooks are the heart of the configuration management. They are written using the Ruby programming language, however, the domain specific language used by Chef is designed to be able to be understood by everyone. As the configuration is just code it can be tested and it can be version controlled. This means that there is less downtime, more reliable services and less stressed people on both the dev and ops sides.
Chef and Cisco
Chef allows users to define their intent through a recipe – a reusable set of configuration or management tasks – and allows the recipe to be deployed on numerous devices. The recipe, when deployed on a Cisco Nexus 9000 Series Switch, translates into network configuration settings and commands for collecting statistics and analytics information. The recipe allows automated configuration and management of a Cisco Nexus 9000 Series Switch.
Chef Supermarket has a cisco-cookbook that allows network administrators to manage Cisco Network Elements using Chef. Chef supported Cisco Platforms are as below:
Chef and Juniper
Chef for Junos OS allows hardware running Junos OS to be managed by the Chef server. The netdev cookbook is an open source cookbook (maintained by Chef) that contains a collection of resources that can be used to build recipes that extend the node management capabilities of the Chef server to include Juniper Networks network devices.
The Chef for Junos OS client is included in Junos 13.2X51-D15 with enhanced automation. You can download Junos 13.2X51-D15 with enhanced automation from: http://www.juniper.net/support/downloads/?p=qfx5100#sw
Chef and Arista
Arista switches can easily be integrated in the Chef deployment and allows for easy central configuration. You can copy the .rpm chef client and the Arista devops plugin as an extension on the switch. The eos cookbook simplifies management of Arista EOS network devices. Arista EOS uses the standard el6 32-bit Chef client.