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

The need for DevOps innovation has never been greater. Get the results from over 100 business value assessments in this whitepaper, Digital Darwinism: Driving Digital Transformation, to see the positive impact of DevOps first hand.

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

Interested in Kubernetes but unsure where to start? Check out this whitepaper, A Roundup of Managed Kubernetes Platforms from Codeship by Cloudbees, for an overview and comparison of Kubernetes platforms. 


Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

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

{{ parent.tldr }}

{{ parent.urlSource.name }}