-: Welcome to Getting Started with Puppet.
I'm Guy Hummel, and I'll be showing you
how to use this incredibly helpful software.
So what exactly is Puppet?
The simplest answer is that it's an IT automation system.
But what does that mean?
Here is a simplified example of a network of servers.
It contains web servers, application servers,
database servers, and a firewall.
Someone needs to install, configure,
and update these components.
If that someone is you,
then Puppet can help you tremendously.
How? Well, Puppet lets you define configurations
for all of these components,
and then you can tell Puppet to make it so.
The benefits of doing this really kick in over time.
For example, if you need to add another web server,
then you can just drop in a new server
and tell Puppet to turn it into a web server
that's configured in the same way
as all of the other web servers.
Then if something happens to that web server later on,
such as the Apache config file changing,
then Puppet would get it back to its desired configuration
without any human intervention required.
Here are some of the ways
that Puppet can make your life easier.
First and foremost, it brings consistency to your servers.
You no longer have to figure out why something works
on one server, but doesn't work on another one
that is supposed to be identical.
Second, a great side effect of consistency
is reliability.
You have less downtime,
because there is less that can go wrong
when everything is configured the way it's supposed to be.
Third, it is much quicker to deploy applications,
especially internally developed applications,
which usually require custom installation methods.
Once you automate your deployment process,
then you can roll out new versions of your software
with the push of a button.
Fourth, if there is a problem with the new version
of software you just rolled out,
then you can revert back to the previous version
very easily.
Fifth, an automated infrastructure is scalable.
Adding more servers is a breeze when Puppet already knows
how to configure them.
And finally, it frees you
from the drudgery of repetitive tasks,
so you can focus on more productive work.
You can find lots of examples
of how companies are using Puppet
on the Puppet website.
One example is Ambit Energy, which is
a one billion dollar gas and electric service provider.
Their biggest problem was that they couldn't deploy
their internally developed applications fast enough.
Before they automated their deployments using Puppet,
the IT team performed all software deployments by hand
during monthly or quarterly maintenance windows.
Now they deploy 30 to 40 applications to production per day
and changes to their production environments
are made so quickly that no maintenance windows
are necessary.
This is a typical result from using Puppet.
I should mention that Ambit Energy uses Puppet Enterprise,
rather than the open source version of Puppet.
Puppet Enterprise is the commercial version,
which comes with additional features
such as browser-based console and a code manager.
However, you can get the automation benefits
from the open source version of Puppet as well,
and that's the version we'll be exploring in this course.
To get the most from this Puppet course,
you should have experience with performing
some operations tasks, especially installing
and configuring applications on Linux.
You should also have some programming experience,
although just knowing the basics of a typical
programming language should be enough.
This is a hands-on course with exercises
every step of the way to give you experience using Puppet.
We'll start by installing Puppet on a VM--
that is, a virtual machine-- on your desktop.
Then you'll install and use
a pre-built module from Puppet Labs
to perform a simple configuration on your VM.
After that I'll show you how to create your own module,
which you'll use to configure a file.
In the process, you'll learn about classes,
which are named blocks of Puppet code,
and manifests, which are the files that contain Puppet code.
Then you'll learn how to define your VM
as a node in the Puppet server.
Following that, you'll learn how to define resources
to configure an application.
Then we'll get deeper into different aspects
of the Puppet language, such as how to use
conditional statements, operators,
and facts about your infrastructure.
You will use this knowledge to build a more complex module.
Finally, I'll show you how to create a template
that you can use to automatically create
a configuration file for an application.
If you're ready to learn how to make your IT life easier,
then let's get started.