The challenges of IT infrastructures and the need to automate common activities has become the major requirements in many large organizations. Puppet is one such configuration management tool that allows to efficiently manage and automate all your IT infrastructure. If you’re a developer, a system administrator, or you are simply curious about learning Puppet, then go for this Learning Path. This Learning Path will help you to automate all your IT configurations and take control over what you do to each Puppet agent in a network, including when and how you do it.
Packt’s Video Learning Paths are a series of individual video products put together in a logical and stepwise manner such that each video builds on the skills learned in the video before it.
The highlights of this Learning Path are:
Let's take a quick look at your learning journey. This Learning Path gets you up-and-running with Puppet straightaway using real-world examples. You will learn to install and set up Puppet. You will then learn how to use different resource types available with Puppet, writing better manifests, handling dependencies, and using tags to gain more control with Puppet manifests. You will explore DSL, look at dependencies and how Puppet treats individual code blocks. You will also look at how you can manage Cron jobs and run arbitrary commands with Puppet.
Moving ahead, you'll take your Puppet knowledge to the next level by delving deep into concepts such as scaling the Puppet infrastructure, utilizing storeconfigs with PuppetDB, and using different external node classifiers. Get your hands dirty by running Puppet components in Docker containers, using Puppet to create Docker images, and running applications on Docker along with orchestration using Mcollective. Finally, you will learn how to write custom plugins for Puppet such as facts, resource types, providers, and functions.
By the end of this Learning Path, you'll have a solid understanding of Puppet and be a confident Puppet user.
Meet Your Expert:
We have combined the best works of the following esteemed author to ensure that your learning journey is smooth:
Toni Schmidbauer has been working with various Unix/Linux and BSD systems for the last 17 years. He started working with configuration management in 2005 with CFEngine 2 and switched to Puppet in 2010. Currently, he is responsible for a Puppet infrastructure containing around 2000 nodes running Solaris, AIX and Linux. When he's not writing Puppet code he likes to tinker with different programming languages and computers in general.
Anirban Saha is an infrastructure professional with more than six and half years' experience in infrastructure management at various industries and organizations ranging from early startups to corporate environments. He has worked extensively with configuration management and automation tools including Puppet, Chef, Ansible, Saltstack, and Terraform, to name a few. He has extensive experience in architecting, deploying, and managing large infrastructures. He speaks at various conferences on the latest technologies and is also the author of Salt Cookbook published by Packt Publishing.
In this video, we will talk about what configuration management actually means and how it is useful.
In this video, we will talk about bootstrap in the course environment.
In this video, we will write our first Puppet manifest and apply it with the Puppet command.
This video talks about how to get help from Puppet and how to get information about the current state of system resources.
Get to know how we can manage files, directories, and links with Puppet.
You accidentally removed a file and would like to recover it.
You would like to install or remove software packages.
You would like to manage system services with Puppet.
How can we order the application of Puppet resources?
How can we notify services when a configuration file changes.
Execute system commands with Puppet.
Learn how to manage cron jobs with Puppet.
Understand Puppet modules.
Understanding Puppet classes.
Learn how to write good Puppet modules.
Learn how to install, configure, and start the NTP daemon.
Learn how to manage complex configuration files with Puppet.
Learn how to manage the NTP configuration file with a template.
As infrastructure grows to hundreds and thousands of nodes, the capacity of the Puppet server reaches a limit. Load balancing in multiple Puppet servers is an optimal way to handle load and provide redundancy.
As infrastructure grows, isolating the Puppet server components is a better way to manage them, rather than having a monolithic Puppet server node. Let’s take a look at isolating and centralizing the Puppet certificate authority service, which is an important step in this process.
With the growth in the number of agent nodes, maintaining a database and the history of node configuration and metadata is crucial for any infrastructure. PuppetDB helps to maintain this database and also aids in configuration via exported resources.
Infrastructure management involves services with server and client based models. The server has to push or pull the data from various nodes in the infrastructure for which it needs the node specific information. To automate this process, the methods of exporting and collecting in Puppet modules are extremely useful.
After the data from thousands of nodes are stored in a database, they are not very useful, unless they can be queried and visualized using structured querying mechanisms. Different Puppet query mechanisms and dashboards helps in solving these problems.
As the number of nodes and service roles grow in an infrastructure, it is important to have proper node classification mechanisms so that nodes are able to receive catalogs correctly and without latency. Proper manageable node classification methods are also desirable.
Hostname based node classification often gets very complex and it is easier to switch to other node classification methods. Apart from providing data isolation from code, Hiera can also be an effective framework to provide node classification data based on metadata such as facts.
Running Puppet components in Docker containers is a bit different than doing it on a physical or virtual machine. It is important to understand how the service components work in an isolated manner and also in the form of an application stack.
Running Puppet agent in Docker Containers to automate them is different from the general process; given the fact that container based dynamic environments don’t have hostnames for the containers and system based process control systems are unavailable in containers.
The fact that containers are able to be spawned within few seconds is true. This is due to the fact that Docker images already have all the configurations baked in them and provisioning during the container launch is not required, thus bringing down the deployment time. Creating images is a crucial step in container based environments.
Once Puppet server side components and containers are ready to be spawned using Docker images, it is important that we are able to launch application stacks involving multiple components such as application and database. Docker Compose can be managed efficiently by use of respective Puppet modules and help us in managing container based application stacks.
Once infrastructure reaches a considerable size, a requirement is to be able to perform specific tasks on specific nodes. Managing and maintaining an inventory of role based nodes is a tedious process. MCollective can be a very efficient tool in implementing orchestration which helps us to target nodes based on metadata and run specific tasks
Although facter provides a lot of system facts, often in complex environments, they are not enough. By writing custom facts based on our infrastructure, we can add meaningful custom data to our infrastructure nodes based on which complex tasks can be performed.
Puppet built-in types are very helpful in writing configurations. However, for simplified use of Puppet modules, often writing custom types are very important. For users who don’t wish to get into the complex methods of writing Ruby based Puppet types, resource types are a simpler alternative where custom types can be written using the Puppet language.
With the numerous tools and services available in the infrastructure ecosystem, it is quite exhausting and time consuming to write Puppet modules for them from scratch using built-in Puppet types. For such scenarios, advanced Puppet types can be written using Ruby which can simplify custom tasks.
Puppet types are useful in defining custom tasks and processes, however without Providers, Puppet types are unable to do much. If Puppet types are the interface to create custom configurations, providers are the backend logic which actually performs the tasks on the systems. Multiple providers can be written for systems or services with different behaviors.
Although Puppet types and Providers help us in creating advanced tasks and interfaces, for some smaller tasks and scenarios, it is enough to create functions. Custom functions can be created in the Puppet language and Ruby to handle such scenarios.
Packt has been committed to developer learning since 2004. A lot has changed in software since then - but Packt has remained responsive to these changes, continuing to look forward at the trends and tools defining the way we work and live. And how to put them to work.
With an extensive library of content - more than 4000 books and video courses -Packt's mission is to help developers stay relevant in a rapidly changing world. From new web frameworks and programming languages, to cutting edge data analytics, and DevOps, Packt takes software professionals in every field to what's important to them now.
From skills that will help you to develop and future proof your career to immediate solutions to every day tech challenges, Packt is a go-to resource to make you a better, smarter developer.
Packt Udemy courses continue this tradition, bringing you comprehensive yet concise video courses straight from the experts.