Book Image

Extending Puppet

By : Alessandro Franceschi
Book Image

Extending Puppet

By: Alessandro Franceschi

Overview of this book

Table of Contents (21 chapters)
Extending Puppet
About the Author
About the Reviewers

Roles and profiles

In 2012, Craig Dunn wrote a blog post ( that quickly became a point of reference on how to organize Puppet code. He discussed his concept of roles and profiles. The role describes what the server represents, a live web server, a development web server, a mail server, and so on. Each node can have one and only one role. Note that in his post, he manages environments inside roles (two web servers on two different environments have two different roles):

node www1 { 
  include ::role::www::dev
node www2 { 
  include ::role::www::live
node smtp1 { 
  include ::role::mailserver

Then, he introduces the concept of profiles, which include and manage modules to define a logical technical stack. A role can include one or more profiles:

class role { 
  include profile::base
class role::www inherits role {
  include ::profile::tomcat

In environment-related subroles, we can manage the exceptions we need (here, for example, the www::dev role...