Planet Puppet

Your source of Puppet technical information

#WomenInTech: Dr. Danielle P. Smith

Alanna Brown, 19 hours, 46 minutes | Source: Puppet Labs

Diversity is really important to us, which is why we support groups like Blacks in Technology, whose mission is to “increase engagement among people of African descent in technology and engineering.” Recently, I had the pleasure of meeting Dr. Danielle P. Smith, a human factors engineer, user experience professional and advisor to the Blacks in Technology board.

[ Read More ]

2015 DevOps Survey: Early Data and Demographic Gaps

michelle, 4 days, 18 hours | Source: Puppet Labs

Check out some early demographic data from the 2015 DevOps Survey, and help ensure that the responses reflect the tech community.

[ Read More ]

Automate Provisioning and Manage Infrastructure as Code with New Puppet Enterprise 3.8

Nathan Rawlins, 4 days, 23 hours | Source: Puppet Labs

Puppet Enterprise 3.8 includes powerful new provisioning for Docker containers, AWS infrastructure & bare metal. Plus Puppet Code Manager, a new app for accelerating testable, programmatic deployment of infrastructure changes.

[ Read More ]

Puppet Test Driven Development part III: create a custom type and provider

Mickaël Canévet, 4 days, 23 hours | Source: Camptocamp Blog

Now that we can install our OpenLDAP server and ensure that it is running, we want to be able to manage OpenLDAP databases.
For that, we will create an OpenLDAP Puppet type and a provider to manage databases using OpenLDAP’s live configuration API. We will do all this using TDD, of course!

Write the acceptance tests

First, let’s create an acceptance test in spec/acceptance/openldap_database_spec.rb for our new type “openldap_database”

Write the custom type

Let’s write a custom Puppet type that has these properties:

  • is ensurable
  • has suffix as namevar
  • has backend and directory properties ...

[ Read More ]

IT Automation Drives Growth for Fulcrum Technologies

Aliza Earnshaw, 6 days, 22 hours | Source: Puppet Labs

A SaaS company shouldn't hand-configure systems. Puppet Enterprise lets Fulcrum automate customer setup & management, innovate & get ahead of the competition.

[ Read More ]

Puppet Test Driven Development: part II – Create a more complex class and refactor it

Mickaël Canévet, 1 week, 4 days | Source: Camptocamp Blog

Now that we have all our setup done and a functional class to manage the OpenLDAP client part, let’s deal with a more complex part: the server class.

Write the acceptance tests

Let’s write the acceptance tests to code the behavior we want in spec/acceptance/openldap__server_spec.rb:

openldap::server, the server is listening on port 389 and that slapd service is running and enabled at boot time. No need to run it for now because it will obviously fail as the openldap::serverdoes not exist yet.

Write the unit tests

Let’s write the unit tests ...

[ Read More ]

Fancy git aliases and git cherryfetch

jamesjustjames, 2 weeks, 1 day | Source: The Technical Blog of James

Here are two quick git tricks that I’ve added to my toolbox lately…

I wanted to create a git alias that takes in argv from the command, but in the middle of the command. Here’s the hack that I came up with for the [alias] section of my ~/.gitconfig:


    # cherryfetch fetches a repo ($1) / branch ($2) and applies it rebased!
    # the && true at the end eats up the appended args
    cherryfetch = !git fetch "$1" "$2" && git cherry-pick HEAD..FETCH_HEAD && true


The git alias is called “cherryfetch“. It starts with an exclamation point (!) which means it’s ...

[ Read More ]

puppet cloudera module 3.0.0

Michael Arnold, 2 weeks, 1 day | Source: The Razor's Edge

This is a major release of my Puppet module to deploy Cloudera Manager. The major change is that razorsedge/cloudera now supports the latest releases of dependent modules. razorsedge/cloudera was lagging behind due to the need to support Puppet Enterprise 3.0.1 installations and only recently did those installations finally upgrade. Notable changes are: The puppetlabs/postgresql dependency […]

[ Read More ]

Puppet Test Driven Development: Part I – Create a simple class

Mickaël Canévet, 2 weeks, 4 days | Source: Camptocamp Blog

Now that all the setup work is done (see Puppet Test Driven Development: Part 0 – Setup your environment), you can start writing some code. You are going to develop this module in a behavior/test driven manner, meaning you will write tests to describe how the module should behave before writing the actual code.

We will create an openldap::client class that, when declared, will install the OpenLDAP clients tools, including the ldapsearch command, so that we can connect to an LDAP server.

Write your first acceptance test

Getting started

Now for the first tests, we will create a test ...

[ Read More ]

Puppet Test Driven Development: Part 0 – Set up your environment

Mickaël Canévet, 2 weeks, 4 days | Source: Camptocamp Blog

In this series of blog posts, we will write a Puppet module that manages OpenLDAP client and OpenLDAP server. We will make this module compatible with both Debian 7 and RedHat 7. We will explain all the aspects of Puppet Agile development through the detailed examples of class, define, type, provider, function, and fact. Disclaimer: This blog posts are widely inspired by the wonderful tutorial to write puppet-lint plugins, so you may notice some similarities in structures or sentences.


[ Read More ]

Writing a new OpenStack Puppet module

Emilien Macchi, 3 weeks | Source: eNovance Puppet Blog

As OpenStack matures as a solution, there is a growing need to effectively deploy OpenStack in a prescriptive manner.
To achieve this, numerous deployers have adopted Puppet to be their configuration tool of choice and it has grown to be the most widely used tool when deploying OpenStack[1].
The community effort to automate the deployment of OpenStack using Puppet has been open-sourced and is captured in Stackforge[2], where modules to configure various services can be found. Additionally, Puppetlabs officially supports the modules and releases them on their own repository[3].

People contributing to them usually come from varying ...

[ Read More ]

Puppet 4.0 Data in Modules part II - Writing a Data Provider

Henrik Lindberg (, 4 weeks, 1 day | Source: Puppet on the Edge

In Puppet 4.0.0 there is a new technology agnostic mechanism that makes it possible to provide default values for class parameters in modules and in environments. In the first post about this feature I show how it is used. In this second post I will show how to write and deliver an implementation of a data provider.

The information in this post is only relevant if you are planning to extend puppet with additional types of data providers - you do not need to learn all that is presented here to use the services the new data provider feature ...

[ Read More ]

Puppet 4.0 Data in Modules and Environments

Henrik Lindberg (, 4 weeks, 1 day | Source: Puppet on the Edge

In Puppet 4.0.0 there is a new technology-agnostic mechanism for data lookup that makes it possible to provide default values for class parameters in modules and in environments. The mechanism looks first in the "global" data binding mechanism across all environments (i.e. the existing mechanism for data binding, which in practice means hiera, since this is the only available implementation). It then looks for data in the environment, and finally in the module.

The big thing here is that a user of a module does not have to know which implementation the module author has chosen - the ...

[ Read More ]

Setup Puppet Server on CentOS 7.0

Krishna Prajapati, 4 weeks, 1 day | Source: OlinData


Puppet Server is a next-generation alternative to our current puppet master, which builds on the successful Clojure technology stack underlying products like PuppetDB. Puppet Server is an application that runs on the Java Virtual Machine (JVM) and provides the same services as the classic Puppet master application. It mostly does this by running the existing Puppet master code in several JRuby interpreters, but it replaces some parts of the classic application with new services written in Clojure.

Puppet Server is one of two recommended ways to run the Puppet master service; the other is a Rack server. Today they’re ...

[ Read More ]

Moving a service from Puppet to Docker

R.I. Pienaar, 1 month | Source: R.I.Pienaar -

I’ve moved a number of my more complex infrastructure components from being Puppet managed to being Docker managed. There are many reasons for this the main one being my Puppet code is ancient and faced with a rewrite to be Puppet 4 like or just rethinking things, I’m leaning towards rethinking. I don’t think CM is solving the right problem for me for certain aspects of my infrastructure and new approaches can bring more value for my use case.

There’s a lot of posts around talking about Docker and concentrating on the image building side of ...

[ Read More ]

Building RHEL Vagrant Boxes with Vagrant-Builder

jamesjustjames, 1 month | Source: The Technical Blog of James

Vagrant is a great tool for development, but Red Hat Enterprise Linux (RHEL) customers have typically been left out, because it has been impossible to get RHEL boxes! It would be extremely elegant if hackers could quickly test and prototype their code on the same OS as they’re running in production.

Secondly, when hacking on projects that have a long initial setup phase (eg: a long rpm install) it would be excellent if hackers could roll their own modified base boxes, so that certain common operations could be re-factored out into the base image.

This all changes today.

Please ...

[ Read More ]

Foreman community survey results

Daniel Lobato (, 1 month | Source: The Foreman: Blogs

February has been an intense month for the Foreman team. We gave a few talks at FOSDEM, got in touch with the community at cfgmgmtcamp, and overall had a great time.

After all of these events - we will go over them in the February newsletter - we are now ready to discuss what the results of the community survey have been. First and foremost, THANK YOU to everyone that replied. We are incredibly thrilled to hear how all of you are using the tool.

The reason why we launched the survey was essentially to understand what features should we focus on ...

[ Read More ]

Slides from My Puppet Camp Phoenix 2015 Presentation

Michael Arnold, 1 month, 1 week | Source: The Razor's Edge

I got a chance to speak to some local Puppet Users at this years Puppet Camp Phoenix held in Chandler, Arizona. My talk is titled Managing Files via Puppet: Let Me Count The Ways. This is the abstract: Configuration files abound. They are the primary way to get our systems to do the things we […]

[ Read More ]

Eyaml - Hiera Data Encryption

Krishna Prajapati, 1 month, 1 week | Source: OlinData

eyaml encryption

Hiera helps to seperate data from Puppet manifests. It let's us write and use reusable manifests and modules. Puppet classes can request the data they need from the hiera data store. Hiera reads environment specific key / value pairs (including passwords) from its own YAML files and parses them to Puppet. Puppet then populates templated configuration files and delivers them to the specified directories. However, Hiera still needs access to the passwords in order to pass them along to Puppet. If you store your passwords as plain text values, then there is still a problem of security. If someone was ...

[ Read More ]

Manage and purge root ssh authorized_keys in an ibox

admin, 1 month, 2 weeks | Source: Immerda Techblog

So far the ibox modules didn’t manage any authorized_keys for the user root, while the sshd module enforced that the root user can’t login using the password. We had the functionality already implemented in our internal code base, but it originated from the very early puppet days and it lacked several features, like purging non-managed keys or being able to selectively allow certain keys only on certain hosts.

With a recent commit to the ibox modules we introduced this functionality also on the ibox with all the missing features.

We introduced a new variable within the main ibox ...

[ Read More ]