Introducing the Deprecate function

A fair while ago I wrote a Deprecation Warnings From Puppet Resources blog post and metaparameter for adding expiry information to your manifests -

  file { '/ec/cron.d/remove_foos':
    ensure      => 'file',
    source      => 'puppet:///modules/foo/foo.cron',
    # our custom metaparameter
    deprecation => '20130425:Release 6 removes the need for the foo cronjob',

We were happy users of this for a while but it had a high cost, we had to maintain our own puppet fork due to puppet being unable to load metaparams from modules. In the new world of Puppet 4 and all in one packages, and the lack of any action on that ticket, I’ve rewritten the code to live in a function that can deployed via a module and so no longer needs a custom fork.

  class deprecated_resources {

    # show a warning in puppetservers log
    deprecate('2015-01-20', 'Remove Foo at the end of the contract')

    # fail the run and show a warning clients output and masters logfile
    deprecate('2015-01-25', 'Remove Foo at the end of the contract', true)


The Puppet deprecate function (and on the Puppet Forge) isn’t quite as nice as the metaparameter. It’s more free floating and less directly applied to an individual resource. It’s also run server side so you only see any warnings on the client when you set abort to true. Still, even with these drawbacks it’s a useful little function and it allows us to move back to upstream supplied packages. Well, once we rewrite a few other things too.