Book Image

Mastering Puppet - Second Edition

By : Thomas Uphill
Book Image

Mastering Puppet - Second Edition

By: Thomas Uphill

Overview of this book

Puppet is a configuration management system and a language. It was written for and by system administrators to manage large numbers of systems efficiently and prevent configuration drifts. Mastering Puppet deals with the issues faced when scaling out Puppet to handle large numbers of nodes. It will show you how to fit Puppet into your enterprise and allow many developers to work on your Puppet code simultaneously. In addition, you will learn to write custom facts and roll your own modules to solve problems. Next, popular options for performing reporting and orchestration tasks will be introduced in this book. Moving over to troubleshooting techniques, which will be very useful. The concepts presented are useful to any size organization. By the end of the book, you will know how to deal with problems of scale and exceptions in your code, automate workflows, and support multiple developers working simultaneously.
Table of Contents (17 chapters)

Module manifest files


Each module is expected to have an init.pp file defined, which has the top-level class definition; in the case of our base example, init.pp is expected to contain class base { }.

Now, if we include base::subitem in our node manifest, then the file that Puppet will search for will be base/manifests/subitem.pp, and that file should contain class base::subitem { }.

It is also possible to have subdirectories of the manifests directory defined to split up the manifests even more. As a rule, a manifest within a module should only contain a single class. If we wish to define base::subitem::subsetting, then the file will be base/manifests/subitem/subsetting.pp, and it would contain class base::subitem::subsetting { }.

Naming your files correctly means that they will be loaded automatically when needed, and you won't have to use the import function (the import function is deprecated in version 3 and completely removed in version 4). By creating multiple subclasses, it becomes easy...