DevOps Zone is brought to you in partnership with:

' ! Moshe Kaplan constantly helps successful firms getting to the next level and he is thrilled to uncover some of his secrets. Mr. Kaplan is a seasoned project management and cloud technologies lecturer. He is also known to be a cloud and SCRUM evangelist Moshe is a Co-Founder. He was a R&D Director at Essence Security, led RockeTier and served as a board member in the IGT and as a department head at a top IDF IT unit. Moshe holds M.Sc and B.Sc from TAU. Moshe is a DZone MVB and is not an employee of DZone and has posted 59 posts at DZone. You can read more from them at their website. View Full User Profile

Puppet, Configuration Management and How to Get into Production Faster

  • submit to reddit

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

Published at DZone with permission of Moshe Kaplan, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)


Marcus Philip replied on Wed, 2013/09/25 - 1:15pm

Puppet vs Chef is a false dichotomy. There are other tools, e.g. Ansible.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.