Chapter 2. High-Level Code and Data Design

In this chapter we review the primary structures of a Puppet codebase, and discuss how the structure of code and data will affect the cost of module maintenance, code reuse, debugging, and scaling.

Tip

A codebase is the complete body of source code for a software program or application. For our purposes, it is the total body of code used to build Puppet catalogs.

This chapter covers best-practice use of core features of Puppet, including the following:

  • Node facts

  • Hiera data

  • Puppet modules

We introduce broad categories for code and data used with Puppet, creating a common vocabulary for use in later chapters. This shared basis makes it easier for us to discuss appropriate ways of handling the concerns of each topic.

As with Chapter 1, this chapter focuses primarily on “why” rather than “how.”

Code and Data Organization

The organization of your Puppet codebase is critical for all of the following reasons:

  • Organization-based structures for data allow multiple teams to share responsibility for Puppet data.

  • Separation of code and data promote code reuse as you bring up new applications with similar needs.

  • Puppet modules provide independently testable implementations that are simpler to debug and improve.

  • Independent and dynamic environments improve testing opportunities, and minimize the disruption caused by local environmental changes.

  • Versioning and release management allow highly customized controls for stability and ...

Get Puppet Best Practices now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.