Book Image

Puppet 5 Beginner's Guide - Third Edition

By : John Arundel
Book Image

Puppet 5 Beginner's Guide - Third Edition

By: John Arundel

Overview of this book

Puppet 5 Beginner’s Guide, Third Edition gets you up and running with the very latest features of Puppet 5, including Docker containers, Hiera data, and Amazon AWS cloud orchestration. Go from beginner to confident Puppet user with a series of clear, practical examples to help you manage every aspect of your server setup. Whether you’re a developer, a system administrator, or you are simply curious about Puppet, you’ll learn Puppet skills that you can put into practice right away. With practical steps giving you the key concepts you need, this book teaches you how to install packages and config files, create users, set up scheduled jobs, provision cloud instances, build containers, and so much more. Every example in this book deals with something real and practical that you’re likely to need in your work, and you’ll see the complete Puppet code that makes it happen, along with step-by-step instructions for what to type and what output you’ll see. All the examples are available in a GitHub repo for you to download and adapt for your own server setup.
Table of Contents (21 chapters)
Puppet 5 Beginner's Guide Third Edition
Credits
About the Author
Acknowledgments
About the Reviewer
www.PacktPub.com
Customer Feedback
Preface
Index

Iteration in templates


If we can generate parts of a file from Puppet expressions, and also include or exclude parts of the file depending on conditions, could we generate parts of the file with a Puppet loop? That is to say, could we iterate over an array or hash, generating template content for each element? Indeed we can. This is a very powerful mechanism which enables us to generate files of arbitrary size, based on Puppet variables, or Hiera and Facter data.

Iterating over Facter data

Our first example generates part of the config file for an application which captures network packet data. To tell it which interfaces to listen on, we need to generate a list of all the live network interfaces on the node.

How can we generate this output? We know Facter can give us a list of all the network interfaces available, with $facts['networking']['interfaces']. This is actually a hash, where the key is the name of the interface, and the value is a hash of the interface's attributes, such as the IP...