I've got a copy of the Pulling Strings with Puppet book (written in 2007) but given that it has a bunch of equivocal language, I'm wonder how much has changed since then? I've found this Release Notes page and a (short) summery table at the top of the language tutorial but neither have dates, so I don't know where to start (and the more detailed notes make for rather dry reading).

Does anyone know of a page that list thing that have changed since that book was published?

4 Answers 4


The main user-visible differences since 0.23.x are:

  • more language features like better conditionals - the Language Tutorial that you found is definitely the best way to find out what's available in manifests now.
  • all your manifests and plugins (custom facts, custom types and providers) should now be in a module directory structure and you should be using 'include mymodule::classname' instead of 'import /path/to/manifest.pp'
  • as a corollary, puppet:// URLS for file sources now need to have the module path in them, like puppet:///modules/mymodule/classname/file.txt would live on the filesystem at _modulepath_/mymodule/files/classname/file.txt
  • the CLI has been unified to a 'git' or 'svn' style single program with command arguments, like 'puppet agent' instead of a separate 'puppetd'. That's described on the Tools page
  • there are more built-in types and providers available, like the yumrepo, and zfs types, and zypper, freebsd , portage package providers.

There are big structural changes under the hood (on-the-wire communication moved from XMLRPC to a REST interface) but they're mostly invisible for every day use. The ones above are probably what trip up the most people, based on mailing list/irc inquiries.

  • 1
    Some elaboration on that first point wouldn't go unappreciated.
    – BCS
    Commented Jan 31, 2011 at 20:52
  • re: conditionals - you can now do 'if { a } elsif { b } else { c }' and use regexps for the conditions instead of just substring matches. Commented Feb 1, 2011 at 6:10
  • So the "more language features" is actually just "better conditionals"? OK. Just checking.
    – BCS
    Commented Feb 1, 2011 at 15:30
  • @BCS: no, there's other subtle language features, like "require => Package['foo','bar']" as a cleaner way to say "require => [Package['foo'],Package['bar']]"
    – freiheit
    Commented Feb 19, 2011 at 21:30

See the Changelog. There were quite a few updates in the past months.

  • Well that gives me a better idea where to start (2007 -> ver < 0.24.x) but I'd rather not read 3 years/+2K lines of change log. Given that book is a rather prominent stake in the sand, I'd expect a delta from there from the end user's perspective would be valuable.
    – BCS
    Commented Jan 31, 2011 at 18:07
  • Sorry, I don't have the book so I can't tell you more.
    – wazoox
    Commented Jan 31, 2011 at 19:13

Here's an easier to parse list compared to the changelog: http://projects.puppetlabs.com/projects/puppet/wiki/Release_Notes

  • sadly it doesn't have dates so somewhere around 0.24.x I can't be sure of things are covered by the book or not.
    – BCS
    Commented Feb 3, 2011 at 22:09
  • 1
    I wouldn't use the date as a hard cut off. Also the new book is expected in March/April of this year which will cover 2.6. You can easily find the release dates by looking at git tag on github. Here's a few to get you started: 2008-07-24 01:20:17 +0200 Updated to version 0.24.5 2008-03-25 21:27:38 +0100 Updated to version 0.24.4 2008-03-17 06:27:36 +0100 Updated to version 0.24.3 2008-03-03 17:33:08 +0100 Updated to version 0.24.2 2007-12-22 01:37:33 +0100 Updated to version 0.24.1 2007-12-13 17:41:52 +0100 Updated to version 0.24.0
    – Nan Liu
    Commented Feb 3, 2011 at 22:49

The Development Code Names should help:


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .