If you've read the Using GnuPG to encrypt secrets recipe in Chapter 4, Working with Files and Packages, then you've already seen an example of a custom function (in that example, we created a secret function that shelled out to GnuPG). Let's look at custom functions in a little more detail now and build an example. There are two Ruby APIs available when writing custom functions, the legacy and the modern API. Legacy functions are instantiated with Puppet::Parser::Functions, modern functions are instantiated with
 Puppet::Functions.create_function. In our example, we will use the modern API.
Creating custom functions
How to do it...
If you've read the Efficiently distributing cron jobs ...