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.
If you've read the Efficiently distributing cron jobs recipe in Chapter 5, Users and Virtual Resources, you might remember that we used the inline_epp
function to set a random time for cron jobs to run, based on the hostname of the node. In this example, we'll take that idea and turn it into a custom function called random_minute
:
- Create the
modules/cookbook/lib...