Archive for September, 2009

Metaparameter Reference Added

September 29th, 2009

A small change in the way the Puppet reference documents are structured in the wiki.  We’ve split out the Metaparmeter reference documentation from the Type Reference documentation and created a new page to hold them.

SysAdmin mini-conf CPF extended

September 29th, 2009

I’m helping (a little) organise the SysAdmin mini-conf at linux.conf.au 2010 (Wellington, NZ) and we’re currently in “call for papers” mode.  We’re looking for a range of talks – short, medium, long – on cool SysAdmin related things:

Systems Administration, Backups, Security, Troubleshooting, Buying Decisions, Virtualisation, Enterprise Monitoring and Management, Identity Management, Web and Email management, Wiki, Clustering and High Availability, Log Management, Spam and Virus Filtering, VOIP, Ticketing systems, Bootstrapping and automated installation, Configuration Management and packaging.

If you do something cool in one of these areas I think you definitely should submit!  Submissions close 15/10/2009 so get in quick.

San Francisco – Puppet Camp

September 28th, 2009

I am in sunny for Puppet Camp.  Looking forward to meeting a whole bunch of Puppeteers in person finally. !

Actually got a lot of work done on the plane – upgraded to business class – on Pro Puppet. Chapters 1 & 2 are pretty much done and I’ve made a start on Chapter 3.  Since I’m not actually technically scheduled to start writing yet that’s pretty damn good. I rock. :)

In the meantime here are two pictures that took my fancy – the cleverly named Urbun Burger – I bet the Urban Burger guys in Melbourne are cursing that they didn’t think of that… :) And a whole store dedicated to Halloween costumes…

Ohloh

September 21st, 2009

If you have an interest in and haven’t come across Ohloh then you should take a look.  It’s a register of projects but with some nifty features … using the source of projects it peers into the life and of a project and shows you the structure and nature of the project.  For example, you can find the listing for the Puppet project and see the history and development of the project.

Output GitHub commits as unified diffs

September 20th, 2009

I use a lot of GitHub – in my view it’s the premier hosting solution out there and keeps getting better and better. Every now and again I stumble across a useful little trick or technique that I don’t know about. This one a means to output commits on as unified diff files. I’ve blogged it because I can’t find it anywhere in the documentation.

The trick very easy – simply add . to the end of any commit URL to output the commit as a unified diff file. For example, this commit becomes a diff. Simple. Enjoy.

Waging war on drugs is utterly mad

September 6th, 2009

Waging war on drugs is utterly mad.  What he said.

Puppet 0.25.0 Released!

September 5th, 2009

Puppet – code-named “Elmo” has been released!  Luke, everyone at ReductiveLabs, the and I have all put a lot of work into this release … and blood, sweat, potentially some tears and probably a lot of bourbon.

The tarball available at:

http://reductivelabs.com/downloads/puppet/puppet-0.25.0.tar.gz

And the Ruby Gem at:

http://reductivelabs.com/downloads/puppet/puppet-0.25.0.gem

What’s Changed?

There are substantial changes in Puppet and more changes to come in the future.  Most of the changes in are internal refactoring rather than behavioural.  The release should be fully backwards compatible behaviourally with the 0.24.x branch.

This means a master will be able to manage 0.24.x clients. You will need, however, to upgrade both your master and your clients to take advantage of all the new features and the substantial gains in performance offered by .

The principal change the introduction of Indirected REST to replace XML-RPC as the underlying Puppet communications mechanism. This a staged change with some functions migrated in this release and some in the next release.  In the first stage of the Indirected REST implementation the following functions have been migrated:

  • Certificates
  • Catalogue
  • Reports
  • Files

In 0.26.0 (the next release) the following remaining functions will be migrated:

  • Filebucket
  • Resource handler
  • Runner handler
  • Status handler

The new REST implementation also comes with authorisation configuration in a similar style to the namespaceauth used for XML-RPC.  This new authorisation managed through the auth.conf file (there an example file in the conf directory of the
tarball). This does not yet fully replace the namespaceauth.conf file but will when the remaining handlers are migrated to REST.  It works in a similar way to the namespaceauth.conf file and the example file contains additional documentation.

As a result of the introduction of REST and other changes you should see substantial performance improvements in this release.  These particularly include improvements in:

  • File serving
  • The performance of large graphs with lots of edges
  • Stored configuration (see also Puppet Queuing below)

Other new features include (this not a complete list – please see the Roadmap for all tickets closed in this release):

Deprecations

Custom types and facts in modules have been moved from the module/plugins to module/lib. Please rename your directories.

The module name must now be specified in source attributes of the file type, i.e.

file { "file":
source => "puppet://server/module/file",
}

Binary-specific configuration files, such as puppetd.conf or puppetmasterd.conf are now totally deprecated and ignored.

Passenger

Ensure you have the latest version of the config.ru file from the ext/rack/files/ directory in the tarball.

Rails

Rails versions up to 2.3.x are now supported.

New Language Features

Regular expression matching now possible in node definitions.

node /web|db/ {
include blah
}

node /^(foo|bar)\.example\.com$/ {
include blah
}

Puppet now also allows regular expressions in if statements with the use
of the =~ (match) and !~ (not match) operators.

if $uname =~ /Linux|Debian/ {
...
}

Also available are ephemeral variables ($0 to $9) in the current scope
which contain regex captures:

if $uname =~ /(Linux|Debian)/ {
notice("this a $1 system")
}

Similar functionality available in case and selector statements:

$var = "foobar"
case $var {
"foo": {
notify { "got a foo": }
}
/(.*)bar$/: {
notify{ "hey we got a $1": }
}
}

$val = $test ? {
/^match.*$/ => "matched",
default => "default"
}

New functions

There are four new functions:

require – Similar to the include function but creates a dependency on the required class in the current class.  This means the required class will be loaded before the current class processed.

split – allows you to split strings and arrays

versioncmp – allows you to compare versions

shellquote – Quote and concatenate arguments for use in the shell, for example as part of Exec type commands.

Command Line Compile & Apply

Puppet now has the capability to compile a catalogue and output it in JSON from the Puppet master.  You can do this via the –compile command line option.

# puppetmasterd --compile nodename

Corresponding with this feature the ability to apply a JSON configuration from the puppet binary using the –apply option.

# puppet --apply cataloguefile

Or you can use – to read the JSON in from standard input.  Puppet will then compile and apply the configuration.

Thin Stored Configuration

also introduces the concept of “thin” stored configurations. This a version of stored configuration that only stores the facts and exported resources in the database.  This will perform better than full stored configuration but because not all resources are available this may not suit all purposes.

Thin stored configurations are initiated by setting the thin_storeconfigs option on the Puppet master or on the puppetmasterd command line using –thin_storedconfigs.

Puppet Queuing

There a new binary called puppetqd that supports queuing for stored configurations.  You can read about how it works and how to implement it at:

http://reductivelabs.com/trac/puppet/wiki/UsingStoredConfiguration

Further documentation in the README.queuing file in the tarball.

Application Controller

All the logic has been moved out of the binary commands and added to an Application Controller.  You can see the controller code at lib/puppet/application.rb and the logic for each application at lib/puppet/application/binaryname.rb.

Types and Providers

The return values from the Exec type can now be specified as an array.

The SMF and daemontools service providers can now import a configuration file.

The mailist type now supported on Red Hat, CentOS and Fedora distributions

The NetInfo provider has been deprecated for OSX in favour of the Directory Services provider.

Binary Location Move

To bring Puppet more in line with general packaging standards the puppetd, puppetca, puppetrun, puppetmasterd, and puppetqd binaries now reside in the sbin directory rather than the bin directory when installed from the source package.

Other features

You can find a full list of the tickets closed thus far for version at:

http://projects.reductivelabs.com/versions/show/3