Book Review: Puppet 3 Beginner's Guide
sagecreek writes "If you are in charge of a small network with just a few servers, you may still be doing configuration management primarily by hand. And you may take particular pride in maintaining that 'artisan' role. After all, it's mostly up to you to set up new users and their machines, fix current problems, manage the servers and their software, create databases and their user accounts, and try to keep the network and user configurations as uniform as possible despite running several different brands--and vintages--of hardware and software. However, warns infrastructure consultant John Arundel, '[b]eyond ten or so servers, there simply isn't a choice. You can't manage an infrastructure like this by hand. If you're using a cloud computing architecture, where servers are created and destroyed minute-by-minute in response to changing demand, the artisan approach to server crafting just won't work.' In his new book, Puppet 3 Beginner's Guide, Arundel emphasizes: 'Manual configuration management is tedious and repetitive, it's error-prone, and it doesn't scale well. Puppet is a tool for automating this process.'" Read below for the rest of sagecreek's review.
Puppet 3 Beginner's Guide
author
John Arundel
pages
184
publisher
Packt Publishing
rating
8 out of 10
reviewer
sagecreek
ISBN
978-1-78216-124-0
summary
Learn how to fully utilize Puppet through simple, practical examples
Actually, among "UNIX-like systems," there are at least three major configuration management (CM) packages — Puppet, Chef, and CFEngine — plus some other competitors, Arundel notes. He calls them "all great solutions to the CM problem...it's not very important which one you choose as long as you choose one." But he hopes, of course, you will check out Puppet and his new, well-written how-to book.
Puppet 3 Beginner's Guide is structured to help system administrators "start from scratch...and learn how to fully utilize Puppet through simple, practical examples."
Arundel's book places important emphasis on the rapidly closing "divide between 'devs,' who wrangle code, and 'ops,' who wrangle configurations. Traditionally, the skills sets of the two groups haven't overlapped much," he notes. "It was common until recently for system administrators not to write complex programs, and for developers to have little or no experience of building and managing servers."
Today, he points out, system admins are "facing the challenge of scaling systems to enormous size for the web, [and] have had to get smart about programming and automation." Meanwhile, "[d]evelopers, who now often build applications, services, and businesses by themselves, couldn't do what they do without knowing how to set up and fix servers."
Therefore, "[t]he term 'devops' has begun to be used to describe the growing overlap between these skill sets," Arundel emphasizes. "Devops write code, herd servers, build apps, scale systems, analyze outages, and fix bugs. With the advent of CM systems, devs and ops are now all just people who work with code."
Arundel's 184-page Puppet 3 Beginner's Guide has 10 chapters that are smoothly structured with numerous headings, subheadings, short paragraphs, code examples, and other illustrations. He has generated his code examples using the Ubuntu 12.04 LTS "Precise" distribution of Linux. But he explains how to load the software using "Red Hat Linux, CentOS, or another Linux distribution that uses the Yum package system," as well.
Chapter 1, "Introduction to Puppet," explains the software's basic architecture and shows how Puppet deals with large-scale configuration management problems.
In Chapter 2, "First Steps with Puppet," the author details how to install Puppet, create a simple manifest, and apply it to a machine. He also offers some basic Puppet language examples.
Chapter 3, "Packages, Files, and Services," focuses on "how to use these key resource types...and how they work together" and presents "a complete and useful example based on the Nginx web server."
In Chapter 4, "Managing Puppet with Git," Arundel shows "a simple and powerful way to connect machines together using Puppet, and to distribute your manifests and work on them together collaboratively using the version control system Git."
The emphasis in Chapter 5, "Managing Users," is on "good practices for user administration" and implementing them with Puppet. The chapter also covers "how to control access using SSH and manage user privileges using sudo."
The topics covered in Chapter 6, "Tasks and Templates," include using "Puppet's resource types to run commands, schedule regular tasks, and distribute large trees of files." Also covered: "how to insert values dynamically into files using templates."
In Chapter 7, "Definitions and Classes," Arundel explains "how to organize Puppet code into reusable modules and objects. We'll see how to create definitions and classes, and how to pass parameters to them."
Chapter 8, "Expressions and Logic," dives deeper into Puppet code. It "shows how to control flow using conditional statements and logical expressions, and how to build arithmetic and string expressions. It also covers operators, arrays, and hashes."
Chapter 9, "Reporting and Troubleshooting," deals with what the author terms "the practical side of working with Puppet," including diagnosing and solving common problems, debugging the software's operations, and understanding Puppet's error messages.
The final section, Chapter 10, "Moving on Up," wraps up with a range of topics, including how to make Puppet code "more elegant, more readable, and more maintainable." Arundel also offers "links and suggestions for further reading." And he describes nine projects to help you "improve your skills and your infrastructure at the same time." The projects, he says, "provide a series of stepping-stones from your first use of Puppet to a completely automated environment."
Puppet's maker, Puppet Labs, offers some virtual-machine options for learning the software. The choices are: (1) a VXM version recommended for VMware Fusion and VMware Workstation; and (2) an OVF version recommended for VirtualBox "and all other non-VMware virtualization software." Puppet Labs also offers a Puppet Enterprise version of its software that supports up to 10 nodes free.
Along with Linux, Puppet will run on other several platforms, including Windows and Macs,, but you will find little help for those in Arundel's book. You will need to use Puppet Lab's online Mac or Windows documentation. And Windows may not be the greatest of choices. As the documentation notes: "Windows nodes can't act as puppet masters or certificate authorities, and most of the ancillary Puppet subcommands aren't supported on Windows."
It can take a bit of work to get Puppet installed and configured. But once you have it running in a Linux environment, John Arundel's new book can be a solid guide to helping you become both a proficient Puppet user and a more efficient, knowledgeable, and versatile system administrator.
You can purchase Puppet 3 Beginner's Guide from amazon.com. Slashdot welcomes readers' book reviews (sci-fi included) -- to see your own review here, read the book review guidelines, then visit the submission page.
Puppet 3 Beginner's Guide is structured to help system administrators "start from scratch...and learn how to fully utilize Puppet through simple, practical examples."
Arundel's book places important emphasis on the rapidly closing "divide between 'devs,' who wrangle code, and 'ops,' who wrangle configurations. Traditionally, the skills sets of the two groups haven't overlapped much," he notes. "It was common until recently for system administrators not to write complex programs, and for developers to have little or no experience of building and managing servers."
Today, he points out, system admins are "facing the challenge of scaling systems to enormous size for the web, [and] have had to get smart about programming and automation." Meanwhile, "[d]evelopers, who now often build applications, services, and businesses by themselves, couldn't do what they do without knowing how to set up and fix servers."
Therefore, "[t]he term 'devops' has begun to be used to describe the growing overlap between these skill sets," Arundel emphasizes. "Devops write code, herd servers, build apps, scale systems, analyze outages, and fix bugs. With the advent of CM systems, devs and ops are now all just people who work with code."
Arundel's 184-page Puppet 3 Beginner's Guide has 10 chapters that are smoothly structured with numerous headings, subheadings, short paragraphs, code examples, and other illustrations. He has generated his code examples using the Ubuntu 12.04 LTS "Precise" distribution of Linux. But he explains how to load the software using "Red Hat Linux, CentOS, or another Linux distribution that uses the Yum package system," as well.
Chapter 1, "Introduction to Puppet," explains the software's basic architecture and shows how Puppet deals with large-scale configuration management problems.
In Chapter 2, "First Steps with Puppet," the author details how to install Puppet, create a simple manifest, and apply it to a machine. He also offers some basic Puppet language examples.
Chapter 3, "Packages, Files, and Services," focuses on "how to use these key resource types...and how they work together" and presents "a complete and useful example based on the Nginx web server."
In Chapter 4, "Managing Puppet with Git," Arundel shows "a simple and powerful way to connect machines together using Puppet, and to distribute your manifests and work on them together collaboratively using the version control system Git."
The emphasis in Chapter 5, "Managing Users," is on "good practices for user administration" and implementing them with Puppet. The chapter also covers "how to control access using SSH and manage user privileges using sudo."
The topics covered in Chapter 6, "Tasks and Templates," include using "Puppet's resource types to run commands, schedule regular tasks, and distribute large trees of files." Also covered: "how to insert values dynamically into files using templates."
In Chapter 7, "Definitions and Classes," Arundel explains "how to organize Puppet code into reusable modules and objects. We'll see how to create definitions and classes, and how to pass parameters to them."
Chapter 8, "Expressions and Logic," dives deeper into Puppet code. It "shows how to control flow using conditional statements and logical expressions, and how to build arithmetic and string expressions. It also covers operators, arrays, and hashes."
Chapter 9, "Reporting and Troubleshooting," deals with what the author terms "the practical side of working with Puppet," including diagnosing and solving common problems, debugging the software's operations, and understanding Puppet's error messages.
The final section, Chapter 10, "Moving on Up," wraps up with a range of topics, including how to make Puppet code "more elegant, more readable, and more maintainable." Arundel also offers "links and suggestions for further reading." And he describes nine projects to help you "improve your skills and your infrastructure at the same time." The projects, he says, "provide a series of stepping-stones from your first use of Puppet to a completely automated environment."
Puppet's maker, Puppet Labs, offers some virtual-machine options for learning the software. The choices are: (1) a VXM version recommended for VMware Fusion and VMware Workstation; and (2) an OVF version recommended for VirtualBox "and all other non-VMware virtualization software." Puppet Labs also offers a Puppet Enterprise version of its software that supports up to 10 nodes free.
Along with Linux, Puppet will run on other several platforms, including Windows and Macs,, but you will find little help for those in Arundel's book. You will need to use Puppet Lab's online Mac or Windows documentation. And Windows may not be the greatest of choices. As the documentation notes: "Windows nodes can't act as puppet masters or certificate authorities, and most of the ancillary Puppet subcommands aren't supported on Windows."
It can take a bit of work to get Puppet installed and configured. But once you have it running in a Linux environment, John Arundel's new book can be a solid guide to helping you become both a proficient Puppet user and a more efficient, knowledgeable, and versatile system administrator.
You can purchase Puppet 3 Beginner's Guide from amazon.com. Slashdot welcomes readers' book reviews (sci-fi included) -- to see your own review here, read the book review guidelines, then visit the submission page.
That was a pretty poor review. Giving a summary of the table of contents isn't a review. Additionally it doesn't seem like they recognize that devops and duplicative administration don't fit with a lot of data processing models. There are many organizations that have servers that have a distinct purpose and it doesn't make sense to envision them as just another clone system in "the cloud".
This is a slashvertisement..first tells you why you want to learn Puppet and what it's used for, and then gets you to read a book to time invest in learning Puppet which will become your "goto" for all DevOps stuff going forward. The hope being that -- some point, you end up looking into Puppet Enterprise and get out of open source..or you get to the level where you need enterprise and not the open source version, yadda yadda, more people on puppet, the better for their business model, as eventually some will have to go with enterprise for some type of requirement (additional functionality and/or enterprisey support)
It requires some agent to be installed on a target server which communicates back to the Puppet Master. It's the same problem I have with other such tools that have agents. Infosec doesn't permit such holes in the various firewalls (I have servers in many locations). So I fall back to what I always do. I write scripts that run on the host gathering data, retrieve the data nightly, and can push changes out on the fly or with a nightly scheduled action.
It's a hell of a way to manage around 1,000 unix servers, but it's the easiest way to get the info I need to manage not just production but lab systems as well.
I'll finish downloading the docs and reading up on it out of curiosity but I don't see this going anywhere for us.
[John]
Shit better not happen!
http://www.packtpub.com/puppet-3-beginners-guide/book
(Currently) $23 USD for the eBook, and $45 USD for the Print + eBook access, and no Amazon-Kindle-DRM. (But you can still get it in a .mobi format for your Kindle, in addition to ePub and PDF)
The part I find particularly offensive is "[b]eyond ten or so servers, there simply isn't a choice. You can't manage an infrastructure like this by hand."
My machine count is well in excess of 100 and I still have time to read slashdot.
Peace of mind isn't at all superficial to technical work, it's the whole thing.
Yea, same here. My team of 4 currently manage about 500 production and production lab (customer integration testing and pre-production testing) systems with another team member managing around 500 dev/sqa systems (we're merging in a few months). We're using OpenView to monitor just the production systems but that leaves production lab systems (which we're still responsible for) and soon the dev/sqa systems to be managed. I have a script framework which manages 15 or 20 scripts per system for data gathering and performance monitoring. I have php scripts I've written to parse the retrieved data and automatically update the inventory database.
It can be done. And it is automated.
[John]
Shit better not happen!
It requires some agent to be installed on a target server which communicates back to the Puppet Master.
You can run puppet in masterless mode, against a local copy of the manifests, either managed locally or checked out from a version control repository.
Likewise with salt (my preferred choice over puppet, but both work), you can run either with a master host, or masterlessly. With salt the nice thing is, you can use the same config for both, just invoke the command differently (salt-call --local vs salt).
Infosec is no reason not to automate, just don't automate with a master server if your policies don't permit it.
The Future of Human Evolution: Autonomy
It is overkill for you but, if your boss has any professional acumen (I know, most don't) it wouldn't be overkill for him. A commonly understated value of automated configuration management is that it allows the company to own the knowledge it paid to acquire instead of letting it live only in some employee's memories.
I strongly disagree. I'd happily deploy configuration management tools or an inventory service in environments with 2 hosts. Configuration management isn't just automation; it's also build documentation and a handy gateway between your RCS and your systems.
Those experimenting with puppet, chef ... should also try "ansible" (http://www.ansibleworks.com/) ... Much simpler and yet as powerful as puppet IMHO...
The sysadmins at work manager the existing servers, but not as well as they could: a UAT environment has a different version of Java, a development server somehow gained a non-GNU tar, one of the two production web servers had a manual quick-fix applied and forgotten about. (They're the best sysadmins we can afford -- we're a charity in London, and it's difficult to compete with the salaries the financial industry can pay.)
By using Puppet, I hope we'll have standardised environments. So far nothing's in production, but already there's one good benefit: the Puppet scripts serve as some minimal documentation, and by version controlling them we can define a process (no changes except by Puppet from the VCS).
(There may be better options than Puppet. I've tried using it, and I very much like the principle, but Puppet itself seems pretty awkward to use seriously. The sysadmins say I'm doing it wrong, YMMV.)
Make sure you get the official documention from Ahttp://docs.puppetlabs.com/. I haven't really seen any books or anything else that is as complete and accurate, especially the reference and learning puppet books.
I find the "puppet resource" command is one of the most useful. You can use it to generate a script for a given configuration and use it to duplicate it elsewhere.
"Be grateful for what you have. You may never know when you may lose it."
I like the idea of Puppet (and the alternatives) but it's Windows support is way to basic to make it viable over on "my" side of the data center. Why not use one of the established config management programs designed for Windows? Because I hate them all, and I wish they would die, and I do a better job programming an AutoIt script to check configs, registry keys, security, etc, than the big names do in their management programs. - HEX
Horror & SciFi Erotic Nudes
Why would it be immoral to write code and then charge for it? Aren't you charging for the time of development, except that you are taking the risk that the software you write might not sell well? What's the difference between getting one or more customers to hire you to write code, and then writing the code, vs. writing the code, and then selling to one or more customers?
My comment was pointing out the fact that Slashdot used to have earnest, "Book Reviews", about books on topics like..HTML5, C#, etc...which actually reviewed the book.
Here, we get basically an advertisement for Puppet's functionality. This is going along with all the changes Dice has made to slashdot since its acquisition -- posting a lot of "news" and "book reviews" that's really "marketing." The site already has ads -- they're just trying to further monetize it, by driving down quality of content and mixing content with ads.
That's my gripe. Not any of the things you said. Also, I don't need to use elementary school-esque personal insults to illustrate my opinions.
It isn't. Puppet Labs' product is great, imho, actually. However, putting in advertisements for free-mium software masquerading as a "Book Review" is less than savory.
LMAO you can't even argue the point that was made bu tyou cite latin. Jeez. The point was that the article isn't a review at all... Puppet may be the next best thing since sliced bread, but this review was supposed to be of the book and we all learned nothing about if its any good.
- Michael T. Babcock (Yes, I blog)
Agreed. Plus, I maintain dozens of servers with both consistent and independant user IDs. They belong to multiple companies and what with how I know BASH and git, I don't have any problems keeping it all straight either. Some people are incredibly underskilled at sysadmin life if they think 20 servers is hard to maintain.
- Michael T. Babcock (Yes, I blog)
bad review != advertisement. Especially for a product that isn't commercial. Parent poster is talking about them hoping to eventually make money off of the attention. If that's an advertisement, so is everything on slashdot.
Those who advocate genocide deserve every protection afforded by law, and none afforded by common human decency.
Slashdot has specific guidelines for structuring and posting book reviews. Anyone is free to write a review and offer it for consideration by Slashdot's editorial staff. I tried out the "Puppet 3 Beginner's Guide" as a Puppet beginner. Then I offered my review as a guide for others who might be (1) considering Puppet and (2) curious about what the author has put inside his book--so they can decide if they want to spend money to buy it or not. You are free to think that somehow rises to the level of a dark, sinister "slashvertisement" conspiracy. And, likewise, I am free to LMAO.
advertising has nothing to do with commercialization ...
- Michael T. Babcock (Yes, I blog)
Which brings us back to the other point, which is that commercialization is not inherently evil.
Those who advocate genocide deserve every protection afforded by law, and none afforded by common human decency.
"We're using OpenView [...] I have a script framework"
So, in the end, your point is that the poster is right: you require automation.
"How well does puppet really help in heterogeneous, custom environments? I have Windows and Linux servers."
Quite fine. Of the tens of different systems you can support, there's only one -you see, one among tens, with poor support. That one is Windows.
But that doesn't come for a surprise: we all know Windows is impossible to be properly managed (and I say that from the standpoint of somebody that supports about 2000 windows servers, so I might know something about the issue).
"How much work will it reduce?"
It really depends. And then, tools like puppet are not only about how much work they can reduce, but how much assurance they can offer to your employer -even in a single server scenario. Properly used, puppet means that any server can be rebuilt at any time, and that's something that all your effort can't asure (if only, by the time you are in the company no more).
"Some people are incredibly underskilled at sysadmin life if they think 20 servers is hard to maintain."
Some people are incrediby underskilled at sysadmin life if they think the proper way is reinventing the wheel.
We wouldn't have Linux at all without wheel reinvention, and I think that comment is generally silly. As to system management, installing and maintaining third party software adds trust and management and security issues that didn't exist in the first place, so its not all positive either. For hundreds of machines I can see the value. However, my point was for 20.
- Michael T. Babcock (Yes, I blog)
You have a real problem with following logical thoughts, don't you? I made no claim that this had anything to do with commercialization (quite the opposite) and you failed to reply to my comment being that this *is* advertising.
- Michael T. Babcock (Yes, I blog)