This training class teaches students a best practice approach to building sophisticated modules and extending core Puppet capabilities. Lecture and intensive hands-on labs cover topics including creating custom functions, facts, reports, types, and resource providers. The development of complete modules is explored, as is making use of Puppet's plug-in architecture and testing features. In addition to extending Puppet, the course covers the construction of complete unit spec tests for Ruby and Puppet features.