Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m

Next lesson playing in 5 seconds


Free Preview: Puppet vs. Chef: Comparing Configuration Management Systems


  • Overview
  • Transcript

Configuration management and automation are strategies that every systems administrator should know when managing more than a handful of servers. They are also very handy for developers who have to manage infrastructure but prefer to write code to specify an environment, rather than typing configuration commands by hand.

In this course, Envato Tuts+ instructor Markus Mühlberger is going to compare two of the most popular configuration management systems, Puppet and Chef. You'll learn how to use both Puppet and Chef to create reproducible Rails application servers. By completing this task using both technologies, you'll see the strengths and weaknesses of each one.

1. Introduction

1.1 Introduction

Have you ever configured a server and much later wanted to know what you're actually? Do you have a lot of servers you need to set up in a similar way or working together? Or do you already know about configuration management but need help deciding on a technology? Yes, then this course is for you. Hello and welcome. I'm Markus Muhlberger, and this is Comparing Configuration Management Systems. In this course, I will be first talking about the concepts of configuration management in general and then move on to a practical comparison between two of the biggest players, Puppet and Chef. You will start by looking at the concepts of these two technologies, move on to comparing the server and enterprise components, and then get right into the code by creating configuration to run array or swap application. First on a single machine and then on multiple ones. Are you ready to do some serious configuring? Good. I will see you in the first lesson.

1.2 What Is Configuration Management?

Hi, and welcome to Comparing Configuration Management Systems. Before we can dig into the different tools and technologies, I want to make sure you understand what configuration management really is, and how it can be used. I will keep to a practical definition and leave reading up on theory to you. When you have a server, you want to set it up a specific way. This means you might be setting up user accounts, configure a time server, install a custom DNS as well as various other things. This might be sufficient for a single instance you have to manage, but if your demands grow, you will have to do the exact same thing on another server and another and another. You get the point. This is where configuration management comes in. Normally, you specify a desired system state. And rules or actions how to get there. For instance, if you want to have a deploy user to deploy your application to the server, you specify so, and if it doesn't exist, the configuration management solution will make sure to create one. So, now that you know that configuration management manages state, the second useful feature comes into play. Say you have 50 servers, and a vulnerability is discovered that affects your systems. Effect the vulnerabilities in 2014. You most certainly don't want to upgrade each and every one of them manually. Instead, you can just define that you want a specific version installed, and configuration management takes care of it. Another point is that you can also give some instances, special roles without having to change your configuration too much. Here you have a single server at first. The web server, an application server, and a database server. When your web application grows, the first thing you might do is to split up those servers into dedicated ones. Therefore you assign a role to each of the new server instances, like web server or database serve. And from now on you can grow all those independently. If you still want to keep web and application server on the same machine or machines, no problem. Those just get assigns multiple roles. Normally, each configuration management system requires the server to operate properly. The server ensures that each agent or client, this is how the software on the systems managed by the configuration management server is called, is run periodically and also collects data about those agents. It also has a meta data store which can be used to change the configuration dynamically depending on the infrastructure. For instance, let's say you have a load balancer which is in front of a few application servers. Whenever a new instance joins the application servers, the configuration of the load balancer has to be updated make use of it. When having a global collection of metadata, you can do this easily so that when an agent runs, it keeps the list of instances up to date. This is also very useful to generate and share passwords, and other environment variables between your instances. To make smaller infrastructure, it doesn't change so often, but also benefits from configuration management. The technologies we will look at in this course Puppet and Chef, also have the possibility to run serverless, making you in charge to run the agents from your console. Now you know the key points of configuration management. Of course, all those technologies go much deeper. Most times, very specific to their own architecture design. But this is beyond the scope of this course, and a lot easier to understand once you have a working knowledge of how Configuration Management Systems operate. In the next lesson I will give you an overview of the infrastructure we are going to built in this cost. See you there.