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 should have a good idea of what distinguishes the manifest writing process in Puppet 4 from those of 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 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...