Chapter 15. Extending Modules with Plugins

This chapter covers adding plugins to Puppet modules. Plugins are used to provide new facts, functions, and module-specific data that can be used in the Puppet catalog.

This chapter will explain how to extend a module to:

  • Provide new customized facts that can be used within your module.
    • Facts can be supplied by a program that outputs one fact per line.
    • Facts can be supplied by Ruby functions.
    • Facts can be read from YAML, JSON, or text file formats.
  • Provide new functions that extend the Puppet configuration language.
    • Facts can be written in either Puppet or Ruby languages.
  • Provide data lookups that are environment- or module-specific.
    • Custom data sources are written in Ruby.

Nothing in this chapter is required to build a working module, and there are thousands of modules that don’t use plugins. You can safely skip this chapter and return to it after you are comfortable building the common features of modules.

Many of the extensions in this chapter are written in Ruby. To build Ruby plugins, you’ll need knowledge of the Ruby programming language. I recommend Michael Fitzgerald’s Learning Ruby as an excellent reference.

Adding Custom Facts

One of the most useful plugins a module can provide is custom facts. Custom facts extend the built-in facts that Facter provides with node-specific values useful for the module. Module facts are synced from the module to the agent, and their values are available for use when the catalog ...

Get Learning Puppet 4 now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.