In this chapter, we looked at extending Puppet with client-side facts, server-side custom functions, and custom types and providers. You can see that with some Ruby know-how, you can easily extend the Puppet ecosystem to cover some of your own unique requirements.
In the next chapter, we'll be taking a look at Hiera 5, which we'll use to create a separation between code and business data.