Puppet:Mastering Infrastructure Automation
上QQ阅读APP看书,第一时间看更新

Chapter 8. Separating Data from Code Using Hiera

Working through the first seven chapters, you have used the basic structural elements of Puppet in numerous examples and contexts. There has been a quick demonstration of the more advanced language features, and you have a good idea of what distinguishes the manifest writing process in Puppet 4 from the earlier releases.

For all their expressive power, manifests do have some limitations. A manifest that is designed by the principles taught up to this point mixes logic with data. Logic is not only evident in control structures such as if and else, but it also just emerges from the network of classes and defines that include and instantiate one another.

However, you cannot configure a machine by just including some generic classes. Many properties of a given system are individual and must be passed as parameters. This can have maintenance implications for a manifest that must accommodate a large number of nodes. This chapter will teach you how to bring order back to such complex code bases. We will also explain how many larger sites structure the codebase as a whole. These will be our final steps in this Puppet Essentials collection:

  • Understanding the need for separate data storage
  • Structuring configuration data in a hierarchy
  • Retrieving and using Hiera values in manifests
  • Converting resources to data
  • A practical example
  • Debugging Hiera lookups
  • Implementing the Roles and Profiles Pattern