Over a million developers have joined DZone.

Puppet, Configuration Management and How to Get into Production Faster

DZone's Guide to

Puppet, Configuration Management and How to Get into Production Faster

· DevOps Zone ·
Free Resource

Open source vulnerabilities are on the rise. Read here how to tackle them effectively.

Puppet or Chef?

You must take a look at the various comparisons between the tools, but we chose Puppet since it has become an industry choice (we verified it by searching LinkedIn).
What Puppet version to choose?
I always like to explore the community editions, but PuppetLabs has a very nice offer for their Enterprise Edition (10 free nodes). Feel free to decide by yourself.
How to Install?
You can compile the source, but repositories are probably the easiest way around.
The easiest way with CentOS 6.X is:
$ sudo rpm -ivh
How does it actually work?
  1. Central Server/Master Repository: the place where defintions are defined. Please note that some best practices recommend that you actually define the central server as another node in the system.
  2. Nodes: These are your operational servers that get configuration procedures from the central server.
  3. Providers: performs the process on each machine and creates systems abstraction (different OS distros, for example) from the user.
  4. Puppet Modules: These are product configuration definitions that can be installed on your server. For example, the definition of Riverbed Stringray that we'll discuss later.
  5. Server Configuration files: These are the configurations of each server (for example, your web server). These files include the selection of production that will be implemented and what configuration decisions were taken. For example, if you install a loadbalancer on your server, it will tell you what the LB algorithm is and what nodes are behind the LB.
How to Add a New Product to Your Server
Just add to the node (in testServer in this case) the product definition ( class {'stingray':... in this case) and define the various configuration options ( stingray::new_cluster in this case):

node 'testServer' {
    class {'stingray':
        accept_license => 'accept'
    stingray::pool{'Northern Lights':
        nodes       => ['', ''],
        algorithm   => 'Least Connections',
        persistence => 'NL Persistence',
        monitors    => 'NL Monitor'

How to Implement Elastic Hosts (and Server Groups with the Same Function)
If you want to implement elastic hosts that scale to traffic, you should use MCollective to define the server groups
Do you need more information?

I found the following PuppetLabs presentation to be very useful:

Bottom Line
Deployment of large systems is easier today, and will be even easier in the near future. You just need to choose the right tools.

Keep Performing,
Moshe Kaplan

Learn about the ins and outs of open source security and management.


Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}