Puppet is impressively extendable. Almost every key component of the software can be extended and replaced by the code provided by users.
Most of the time, we can use modules to distribute our code to clients. However, Puppet goes a step further; surprising things are possible, for example, with the indirector and its termini (somehow strange words that are going to be clearer in the following pages).
This chapter is about understanding and extending Puppet code. We are going to review the following topics:
Anatomy of a Puppet run; what happens under the hood
What are Puppet extension alternatives
How to develop custom functions
How to develop custom facts
How to develop custom types and providers
How to develop custom report handlers
How to develop custom faces
The subject is large; we are going to have an overview and show examples that let us dive in some details. For more information about how Puppet works and its inner beauties, check these great sources in...