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?


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 Jan 31 '11 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. – eric sorenson Feb 1 '11 at 6:10
  • So the "more language features" is actually just "better conditionals"? OK. Just checking. – BCS Feb 1 '11 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 Feb 19 '11 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 Jan 31 '11 at 18:07
  • Sorry, I don't have the book so I can't tell you more. – wazoox Jan 31 '11 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 Feb 3 '11 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 Feb 3 '11 at 22:49

The Development Code Names should help:


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.