There are two types of functions in Puppet: Statements and rvalues. Statements stand on their own and do not return arguments; they are used for performing stand-alone work like importing. Rvalues return values and can only be used in a statement requiring a value, such as an assignment or a case statement.
Here are the functions available in Puppet:
- alert (statement): Log a message on the server at level alert.
- crit (statement): Log a message on the server at level crit.
- debug (statement): Log a message on the server at level debug.
- defined (rvalue): Determine whether a given type is defined, either as a native type or a defined type, or whether a class is defined. This is useful for checking whether a class is defined and only including it if it is.
- emerg (statement): Log a message on the server at level emerg.
- err (statement): Log a message on the server at level err.
- fail (statement): Fail with a parse error.
- file (rvalue): Return the contents of a file. Multiple files can be passed, and the first file that exists will be read in.
- generate (rvalue): Calls an external command and returns the results of the command. Any arguments are passed to the external command as arguments. If the generator does not exit with return code of 0, the generator is considered to have failed and a parse error is thrown. Generators can only have file separators, alphanumerics, dashes, and periods in them. This function will attempt to protect you from malicious generator calls (e.g., those with ’..’ in them), but it can never be entirely safe. No subshell is used to execute generators, so all shell metacharacters are passed directly to the generator.
- include (statement): Evaluate one or more classes.
- info (statement): Log a message on the server at level info.
- notice (statement): Log a message on the server at level notice.
- realize (statement): Make a virtual object real. This is useful when you want to know the name of the virtual object and don’t want to bother with a full collection. It is slightly faster than a collection, and, of course, is a bit shorter. You must pass the object using a reference; e.g.: ``realize User[luke]``.
- search (statement): Add another namespace for this class to search. This allows you to create classes with sets of definitions and add those classes to another class’s search path.
- tag (statement): Add the specified tags to the containing class or definition. All contained objects will then acquire that tag, also.
- tagged (rvalue): A boolean function that tells you whether the current container is tagged with the specified tags. The tags are ANDed, so thta all of the specified tags must be included for the function to return true.
- template (rvalue): Evaluate a template and return its value. See the templating docs for more information. Note that if multiple templates are specified, their output is all concatenated and returned as the output of the function.
- warning (statement): Log a message on the server at level warning.