3. Introduction
• Chef
• A powerful automation platform that transforms complex infrastructure into code.
• Open-source systems management and cloud infrastructure automation framework created by Opscode.
• It automates how applications are configured, deployed, and managed across your network, no matter its size.
• It uses ‘recipes’ in the form of instructions for web-server configuration, databases and load balancers. It packages the
configurations into ‘cookbooks’ , and runs the software in client-server mode (Chef-server) and ‘Chef-solo’.
• Puppet
• It is an open source configuration management tool, using which developers and operations teams can securely deliver and
operate software (infrastructure, applications) anywhere.
• Puppet contains a daemon called Puppet agent that runs on the client servers. It has another component which contains
configuration for all hosts, called Puppet master. The Puppet agent and Puppet master are securely encrypted using the SSL.
5. Similarities
• Clients poll a centralized master periodically for updates.
• In a 'pull' system, clients contact the server independently
of each other, so the system as a whole is more scalable
than a 'push' system.
Pull based
Configuration
• Failure on the primary server i.e. chef server, it has a
backup server to take the place of the primary server.
Puppet also has multi-master architecture.
Availability
• Chef Server works only on Linux/Unix but Chef Client and
Workstation can be on windows as well. Whereas, Puppet
Master works only on Linux/Unix but Puppet Agent also
works on windows.
Interoperability
Scalability –
Both are highly
Scalable.
6. Differences
Chef Puppet
Chef has a master-agent architecture. Chef server runs
on the master machine and Chef client runs as an agent
on each client machine. Also, there is an extra
component called workstation, which contains all the
configurations which are tested and then pushed to
central chef server.
Puppet also has a master-agent architecture. Puppet
server runs on the master machine and Puppet
clients runs as an agent on each client machine. After
that, there is also a certificate signing between the agent
and the master.
Chef uses Ruby Domain Specific Language (Ruby DSL). It
has a steep Learning Curve and its developer oriented.
Puppet uses its own puppet Domain Specific Language
(Puppet DSL). It is not very easy to learn and its system
administrator oriented.
7. Advantages/
Disadvantages
• Scalable as it avoids, push based problems like,
when you run an r-command(ssh,rsh) based
script to push a change out to your target
machines, odds are that some machines will be
down at any given time. Maintaining the list of
commissioned machines requires elaborate
wrapper code to deal with: timeouts from dead
hosts; logging and retrying dead hosts; forking
and running parallel jobs etc.
Advantages
• Ease of Setup : Not easy compared to push
based.
• Management : Complex from development
perspective. Uses Ruby or DSL language.
Disadvantages