Introduction
In this chapter, we will cover how to deploy Puppet in a centralized and decentralized manner. With each approach, we'll see a combination of best practices, my personal experience, and community solutions. We'll configure and use both PuppetDB and Hiera. PuppetDB is used with exported resources, which we will cover in Chapter 5, Users and Virtual Resources. Hiera is used to separate variable data from Puppet code. Finally, we will learn about Git and see how to use Git to organize our code and our infrastructure. Because Linux distributions, such as Ubuntu, Red Hat, and CentOS, differ in the specific details of package names, configuration file paths, and many other things, for reasons of space and clarity, the best approach for this book is was pick one distribution (CentOS 7) and stick to that. However, Puppet runs on most popular operating systems, so you should have very little trouble adapting the recipes to your favorite OS and distribution. At the time of writing, Puppet...