Book Image

Mastering Puppet 5

By : Ryan Russell-Yates, Jason Southgate
Book Image

Mastering Puppet 5

By: Ryan Russell-Yates, Jason Southgate

Overview of this book

Puppet is a configuration management system and a language written for and by system administrators to manage a large number of systems efficiently and prevent configuration drift. The core topics this book addresses are Puppet's latest features and mastering Puppet Enterprise. You will begin by writing a new Puppet module, gaining an understanding of the guidelines and style of the Puppet community. Following on from this, you will take advantage of the roles and profiles pattern, and you will learn how to structure your code. Next, you will learn how to extend Puppet and write custom facts, functions, types, and providers in Ruby, and also use the new features of Hiera 5. You will also learn how to configure the new Code Manager component, and how to ensure code is automatically deployed to (multiple) Puppet servers. Next, you will learn how to integrate Puppet with Jenkins and Git to build an effective workflow for multiple teams, and use the new Puppet Tasks feature and the latest Puppet Orchestrator language extensions. Finally, you will learn how to scale and troubleshoot Puppet. By the end of the book, you will be able to deal with problems of scale and exceptions in your code, automate workflows, and support multiple developers working simultaneously.
Table of Contents (19 chapters)
Title Page
Dedication
Packt Upsell
Contributors
Preface
Index

Summary


In this chapter, we talked about virtual and exported resources. Virtual resources allow us to describe what a resource should be, and realize it under other conditions. Exported resources allow us to announce our virtual resources to other nodes in the infrastructure by using PuppetDB. We examined writing a virtual resource for administrative users and placed a file in /tmp for all other nodes in our infrastructure using exported resources. We then explored using exported resources to create an /etc/hosts file, a load balancer, a database, and an example of building a custom configuration file with concat and file_line.

When we applied these exported resources across our systems, we noticed that the main limitation of these resources is timing. Our infrastructure will eventually converge, but it does not happen in an orchestrated and timely fashion. Our next chapter will be on application orchestration, which allows us to tie a multitier application together and orchestrate the order...