The Puppet 3 functions API has some limitations and is missing features. The new function API in Puppet 4 improves upon that substantially.
Some of the limitations of the old functions are as follows:
- The functions had no automatic type checking
- These functions had to have a unique name due to a flat namespace
- These functions were not private and, hence, could be used anywhere
- The documentation could not be retrieved without running the Ruby code
Running on Puppet 3 requires functions to be in a module in the lib/puppet/parser/functions directory. Therefore, people referred to these functions as parser functions, but this name is misleading. Functions are unrelated to the Puppet parser.
In Puppet 4, functions have to be put into a module in path lib/puppet/functions.
This is how you create a function that will return the hostname of the Puppet master...